目录

吾爱破解---破解入门学习

# 吾爱破解---逆向入门学习

好想学破解(逆向),用C++写木马,破解游戏修改数据那该有多强(流口水)

在室友眼皮子下安装PHPstudy,写木马控制,听起来有点太幽默了。今天逛吾爱破解,发现很有趣,记一下解题记录

# 资源分享

# 工具准备

可能因时效性工具链接失效,请自行搜索下载

# 题目1:CM1(无壳)

准备好的题目(账号密码登录的判断)

题目

扔进PEID

题目1

看出是vc++6.0写的,无壳,直接扔OD,进行中文引擎搜索

od

双击看汇编,定位到了字符串位置,往上可以看到最近的一条je指令

je

双击这条指令即可修改,修改为空指令nop

nop

点击左上方的调试按钮,或者右键 copy to executable,选择生成一个新的exe文件,保存即可

调试

点击运行,随意用户密码,成功进入程序

成功

# 尝试

怎么不填账号密码直接登录成功?找到不填账号密码的提示定位

提示

把这里je指令也改nop试试

改完没有直接弹登录成功。预期的弹出了账号密码不能为空

弹窗

具体看看这里的汇编代码

汇编

je指令判断后弹出没有账号密码的弹窗,否则跳转到正常的账号密码判断。如果用jmp指令代替je指令 ,则跳转到账号密码判断,直接登录成功。

修改,调试

jmp

success

其他:

能不能点开程序直接弹窗登录成功?(好像有点难,应该有个判断是否点击了按钮)

# 题目二

扔进PEID,有壳

壳

扔到DIE(不太清除这一步是为什么,可能是为了找到壳的入口点?)

补充:在PEID中查看是否存在壳,有壳时看不到编程语言/工具,只能看到壳的信息,例如upx,放到DIE时,一般可以看到更多信息,比如PEID不能识别的编程语言/工具,以及壳的详细信息

DIE

加了壳,先运行这个exe,然后打开OD,attach到这个exe上

attach

ctrl+G,输入入口点地址00401000,然后就可以按照第一题来做

提示

答疑:为什么在OD中输入入口点地址00401000
系统默认通常程序领空的起始地址,跳过壳,进入程序入口

断点

display

找到位置

postion

同样可以直接改成nop指令

调试

debug

注意

注意:通过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

jnz

eax

debug

找到call调用的地址,把前两行给eax赋值为0,结束这个call调用

mov eax,0
ret
1
2

改为发现竟然弹没有叔账号密码。可能过程有通过eax判断是否输了密码?那就再换了

mov eax,1
ret
1
2

把下面的cmp判断改了

cmp eax,0x1
1

update

再调试就可以了

debug

# 最后

总结,今天在吾爱破解论坛学了很多,满足了,开心。

又水了一篇(😀),豪丸

最后一次更新于: 2024/09/07, 22:30:21