海天一色001 发表于 2021-1-26 16:19

160个Crackme之050学习笔记

本帖最后由 海天一色001 于 2021-1-26 16:23 编辑

第50个CM,三星难度,Nag and Patch保护方式,估计是去NAG,并且要进行补丁。不知道能不能补,先打开CM程序看看:

直接弹出未注册的窗口,内容大意是请登录duelist@beer.com获取一个有效的许可证代码。点击“确定”按钮,弹出主窗口,显示未注册。

点击“About”按钮,弹出提示窗口:

大意是发送补丁文件给作者,前两名将得到CM源代码。对破解没什么帮助。
应该先是把第一个窗口去掉了,再将第二个窗口中的“Unegistered”改了吧!
一、查壳:

有壳,不知道什么编程的!PE Diminisher V0.1 -> Teraphy *这句提示不知道是什么东东。
先脱壳吧,用PEiD自带的插件来脱,生成DueList.5.exe.unpacked_.exe。

再查这个文件,已成功脱壳,ASM编程。
二、去NAG:
将CM程序导入OD中,ASM程序,从00401000开头向下查看,代码很简洁清晰,标准的windows程序。
F8单步向下到0040105C处,是一个跳转命令,回车跟随到004010C1处,观察代码,004010C1至004010D2处是弹出未注册提示的信息框。
那么0040105C处就是关键跳了,nop一下,保存为DueList.5.nop.exe,双击运行,没有窗口出现,爆破不成功。
撤消刚才的修改,重新观察代码,004010D7至004010E8处是DialogBoxParamA函数及其参数,显示主窗口的。
那么在0040105C处修改成跳到004010D7处试一下,保存为DueList.5.jmp.exe,双击运行,立即弹出主窗口,说明NAG去除成功。
三、Patch:
继续向下查看代码:

00401130至0040113E处为发送DlgItem消息,
从注释栏中看到lParam=0x40205C,在下方地址栏中找到0x40205C处:

可以看到从起始地址0x40205C到结束地址0x402067,块大小为0xC的内存中存储为字符串“Unregistered”;
在这个字符串前面从0x402050到0x402059处存储的是已注册的字符串“Registered”!
这样就可以有两种方法,一是将未注册的字符串直接修改为已注册的字符串,二是将00401130处的push 0040205C改成push 00402050即可。
本程序只为练习破解,所以这两种方法均可,我用的是第二种修改程序代码而不是修改内存中的数据。

如上图,选中所有修改,将0040105C处修改后的跳转命令和00401130处的修改后push地址都保存到DueList.5.patch.exe中。双击运行,弹出窗口如下,显示已注册的字样。
这个程序相对简单,没有什么算法。
附件,含CM原程序、Patch文件、OD的调试文件,等等。
百度链接:https://pan.baidu.com/s/1NEpyyUefbKcoJvMGG_9OmQ
提取码:p8dk。   

无秽之鸦 发表于 2021-1-26 18:59

没整明白,有点难

yuancenlian 发表于 2021-1-27 20:36

感谢大佬,感谢了,好人

yamarin 发表于 2021-1-27 20:49

很实用,谢谢大佬了
页: [1]
查看完整版本: 160个Crackme之050学习笔记