简单分析下一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里面的值相等。然后重新打开程序就会显示成功的界面了
先占位才 后观看 回去好好的研究研究。 凌晨发的cm凌晨3点就有破文了。。。
都不睡觉吗? 膜拜大神,感谢教程! 研究研究,谢谢楼主 膜拜。。。
页:
[1]