吾爱破解---破解入门学习
# 吾爱破解---逆向入门学习
好想学破解(逆向),用C++写木马,破解游戏修改数据那该有多强(流口水)
在室友眼皮子下安装PHPstudy,写木马控制,听起来有点太幽默了。今天逛吾爱破解,发现很有趣,记一下解题记录
# 资源分享
# 工具准备
可能因时效性工具链接失效,请自行搜索下载
# 题目1:CM1(无壳)
准备好的题目(账号密码登录的判断)
扔进PEID
看出是vc++6.0写的,无壳,直接扔OD,进行中文引擎搜索
双击看汇编,定位到了字符串位置,往上可以看到最近的一条je指令
双击这条指令即可修改,修改为空指令nop
点击左上方的调试按钮,或者右键 copy to executable,选择生成一个新的exe文件,保存即可
点击运行,随意用户密码,成功进入程序
# 尝试
怎么不填账号密码直接登录成功?找到不填账号密码的提示定位
把这里je指令也改nop试试
改完没有直接弹登录成功。预期的弹出了账号密码不能为空
具体看看这里的汇编代码
je指令判断后弹出没有账号密码的弹窗,否则跳转到正常的账号密码判断。如果用jmp指令代替je指令 ,则跳转到账号密码判断,直接登录成功。
修改,调试
其他:
能不能点开程序直接弹窗登录成功?(好像有点难,应该有个判断是否点击了按钮)
# 题目二
扔进PEID,有壳
扔到DIE(不太清除这一步是为什么,可能是为了找到壳的入口点?)
补充:在PEID中查看是否存在壳,有壳时看不到编程语言/工具,只能看到壳的信息,例如upx,放到DIE时,一般可以看到更多信息,比如PEID不能识别的编程语言/工具,以及壳的详细信息
加了壳,先运行这个exe,然后打开OD,attach到这个exe上
ctrl+G,输入入口点地址00401000,然后就可以按照第一题来做
提示
答疑:为什么在OD中输入入口点地址00401000
系统默认通常程序领空的起始地址,跳过壳,进入程序入口
找到位置
同样可以直接改成nop指令
调试
注意
注意:通过OD查看00401000方式脱壳时,程序会存在不能保存的情况,需要补丁软件,后续补充
# 题目三
同样扔到PEID,无壳。直接扔OD混合双打
找到目标位置后,信息量很大,把这三条指令类比到编程语言中就好理解一些了
- call 调用子程序,搭配ret结束call调用
- cmp 类似减法,cmp eax,0x0 如果eax=0,跳转,如果eax=1不跳转
- jnz 上一条是0,跳转,1不跳转
提示
cmp指令与ZF标志有关联。cmp进行减法后,如果结果=0,ZF=1,否则ZF=0。jnz指令判断ZF,ZF=0则跳转,ZF=1不跳转
一个jnz命令判断eax是否为1,如果eax=1,cmp将ZF设为0,跳到密码错误,所以我们需要将eax中设为0
找到call调用的地址,把前两行给eax赋值为0,结束这个call调用
mov eax,0
ret
2
改为发现竟然弹没有叔账号密码。可能过程有通过eax判断是否输了密码?那就再换了
mov eax,1
ret
2
把下面的cmp判断改了
cmp eax,0x1
再调试就可以了
# 最后
总结,今天在吾爱破解论坛学了很多,满足了,开心。
又水了一篇(😀),豪丸