珈蓝夜雨 发表于 2013-4-9 03:47

简单分析下一CM

本帖最后由 珈蓝夜雨 于 2013-4-9 03:51 编辑

大家好,我是珈蓝夜雨。抽空写篇爆破一CM的文章,这文章是欠大H的……红色字体为修改的代码
CM下载地址http://www.52pojie.cn/forum.php?mod=viewthread&tid=191690&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
此CM有检测OD,检测到OD后直接退出。CM作者说要保存后成功破解的才算破解成功,所以修改一个地我就保存一次……下ExitProcess断点,断下后返回上一层,在段首RETN。00439400      C3            retn00439401|.8BEC          mov ebp,esp00439403|.8B45 08       mov eax,00439406|.50            push eax00439407|.B9 E8564D00   mov ecx,CM.004D56E8                      ;ASCII " 觊"0043940C|.E8 4F85FFFF   call CM.0043196000439411|.8B4D 08       mov ecx,00439414|.51            push ecx                                 ; /ExitCode = 0x000439415\.FF15 8CB24800 call dword ptr ds:[<&KERNEL32.ExitProces>; \ExitProcess0043941B   .5D            pop ebp                                  ;CM.0043941B0043941C   .C3            retn修改后保存,再次打开程序会提示程序的名字被修改的对话框,我保存的时候修改了程序的名字下MessageBoxExA断点,断下后返回程序领空,找到跳过错误的跳转进行修改后保存00405068   > \837D F0 00    cmp dword ptr ss:,0x00040506C      EB 75         jmp short CM1.004050E30040506E      90            nop0040506F      90            nop00405070      90            nop00405071      90            nop再次运行CM,会出现欢迎使用破解版程序等字样的信息框,依旧和上面一样处理00406E1F   >837D E8 00    cmp dword ptr ss:,0x000406E23      E9 7B140000   jmp CM2.004082A300406E28      90            nop00406E29   .68 01010080   push 0x80000101找到跳过错误的跳转进行修改后保存重新打开程序,会提示运行时错误的提示框。下MessageBoxExA断点,断下后从堆栈中往上找,找能跳过的跳转修改004100D8|.85C0          test eax,eax004100DA      EB 0E         jmp short CM3.004100EA004100DC      90            nop004100DD      90            nop004100DE      90            nop004100DF      90            nop修改后保存再次运行CM,成功运行了。我的机器码是ZFF1F09BC2DEF5B5ABF56D405110F01DD0==输入假码123456789此CM的验证时直接在编辑框内写入注册码,然后按下回车键后就注册。下GetWindowTextA断点。断下后返回到程序领空。返回到程序领空后,会发现堆栈窗口中有HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\feifei的字样。打开注册表后,发下这个子项里面有两个值数值名称:CMV2taR01VWXdPVUpETWtSWkY=数值名称:CM195,58,96,EB,48,7F,63,02,E9,B0,D9,34,5B,C5,64,81,B4,3F,12,FF,73,8F,18,2A,继续往下。将输入的假码的后面加上ZF。也就是123456789ZF。然后将123456789ZF用BASE64编码。得到MTIzNDU2Nzg5WkY=然后在和注册表里面数值名称为CM的值比较,比较是否相等00416FB1|> \837D DC 00    cmp ,0x000416FB5      90            nop00416FB6      90            nop00416FB7      90            nop00416FB8      90            nop00416FB9      90            nop00416FBA      90            nop将下面的跳转NOP掉然后通过算法获取到8E,3E,AB,F0,54,0B,07,66,F0,92,DA,51,5A,FB,4D,F9,算法我没细看……然后将MTIzNDU2Nzg5WkY=和8E,3E,AB,F0,54,0B,07,66,F0,92,DA,51,5A,FB,4D,F9,分别写入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\feifei注册表内数值名称:feifeiMTIzNDU2Nzg5WkY=数值名称:feifei18E,3E,AB,F0,54,0B,07,66,F0,92,DA,51,5A,FB,4D,F9,此时运行程序,在输入假码的下面会出现注册成功的字样。但这样并不是注册成功。真正地注册成功会出现一个界面。重载程序,然后继续,会发现一个地址。用IE打开http://b1.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin=944982952&blogid=1365376108&styledm=ctc.获取网址里面的内容,然后取出WkYzQjY0QzMzQURZF我认为这个联网的不重要,重要的是那个注册表……从刚才的笔记可以看到,对注册表里面写入了4个不一样的值,CM,CM1,feifei,feifei1这四个里面的值,只要CM和feifei里面的值相同,CM1和feifei1里面的值相等。然后重新打开程序就会显示成功的界面了

y65980 发表于 2013-4-9 08:34

先占位才 后观看

king6725 发表于 2013-4-9 09:08

回去好好的研究研究。

heidongqilin 发表于 2013-4-9 09:12

凌晨发的cm凌晨3点就有破文了。。。


都不睡觉吗?

小雨细无声 发表于 2013-4-9 10:28

膜拜大神,感谢教程!

这只猪 发表于 2013-4-9 17:36

研究研究,谢谢楼主

riguang2b 发表于 2013-4-14 09:33

膜拜。。。
页: [1]
查看完整版本: 简单分析下一CM