x32dbg动态调试--字符串搜索&修补程序

观察程序

  1. 使用Detect It Easy检测目标程序为PE32

  2. 运行程序可以看到:程序有三个按钮:Serial/Name、Exit、Serial。我们先做“Serial”

  3. Nag提示框

  4. 到达下图的界面后我们随便输入“987654321”这个时候有个弹框显示“Try Again!!”。所以这里的Try Again!!”就是我们需要搜索的关键字符串

  5. IDA Pro载入目标程序可以搜索到上述字符串

分析过程

  1. 当我们把一个程序拖入到x64dbg中我们就可以看到下图的界面。这个时候我们需要注意的是它并不是在要调试程序的模块内
  2. 按F9运行直到显示下图的界面才真正进入目标程序内部,鼠标右键,再依次点击“搜索——>当前模块——>字符串”

修补程序:去掉Nag提示框

  1. 搜索nag提示框中的字符串

  2. 双击上述字符串进行跳转,选中0x42F784所在行,鼠标右键选择“汇编”命令(或快捷键Space),填写nop,再勾选“保持大小”和“剩余字节以NOP填充”两个选项,再点击“确定”即可。

  3. 鼠标右键选择“补丁”命令(或快捷键Ctrl+P),点击“修补文件”,填写文件名,最后点击“保存”即可。

第一关Serial

  1. 在下方的搜索框搜索try字符串,x32dbg会自动筛选出所有类似的字符串。但是我们可以看到这里有三个字符串供我们选择
  2. 不知道具体是哪个字符串时,我们只需要给满足条件的字符串下断点就可以了,鼠标右键——>在所有命令上设置断点
  3. 按F9继续运行,接着在程序的文本框中输入“987654321”,点击“check it baby”按钮。程序会在下图的位置暂停下来。这个时候通过分析汇编代码,我们可以知道在“0x0042F4D0”这个函数为关键函数。
  4. 重新运行程序后,我们可以看到一个是我们输入的字符串,另一个是未知字符串而这个未知的字符串很有可能是“Serial”
  5. 再次重新运行并输入“Hello Dude!”,这个时候程序判断成功,执行“God Job dude!!”

第二关Serial/Name

  1. 重新运行程序,点击“Serial/Name”按钮,之后我们在名字部分输入“redbright”,注册码部分输入“9999999999”。之后运行程序,会在下图的位置断下。通过分析我们可以知道“0x0042FAFE”处调用比较函数

  2. 最后我们尝试输入“CW-9348-CRACKED”这个时候程序执行成功

算法破解

  1. Serial中“CW-9348-CRACKED”中9348的计算方法:取Name第一个字母对应的ASCII值,比如说“redbright”中第一个字符r对应数字0x72,然后用它乘以0x29,结果再x2,将16进制数字转为10进制的字符串便是9348,然后再在前加上CW-,后加上-CRACKED,就组成了用户名对应的注册码

参考文献

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值