本帖最后由 珈蓝夜雨 于 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 retn 00439401 |. 8BEC mov ebp,esp 00439403 |. 8B45 08 mov eax,[arg.1] 00439406 |. 50 push eax 00439407 |. B9 E8564D00 mov ecx,CM.004D56E8 ; ASCII " 觊" 0043940C |. E8 4F85FFFF call CM.00431960 00439411 |. 8B4D 08 mov ecx,[arg.1] 00439414 |. 51 push ecx ; /ExitCode = 0x0 00439415 \. FF15 8CB24800 call dword ptr ds:[<&KERNEL32.ExitProces>; \ExitProcess 0043941B . 5D pop ebp ; CM.0043941B 0043941C . C3 retn 修改后保存,再次打开程序会提示程序的名字被修改的对话框,我保存的时候修改了程序的名字 下MessageBoxExA断点,断下后返回程序领空,找到跳过错误的跳转进行修改后保存 00405068 > \837D F0 00 cmp dword ptr ss:[ebp-0x10],0x0 0040506C EB 75 jmp short CM1.004050E3 0040506E 90 nop 0040506F 90 nop 00405070 90 nop 00405071 90 nop 再次运行CM,会出现欢迎使用破解版程序等字样的信息框,依旧和上面一样处理 00406E1F > 837D E8 00 cmp dword ptr ss:[ebp-0x18],0x0 00406E23 E9 7B140000 jmp CM2.004082A3 00406E28 90 nop 00406E29 . 68 01010080 push 0x80000101 找到跳过错误的跳转进行修改后保存 重新打开程序,会提示运行时错误的提示框。下MessageBoxExA断点,断下后从堆栈中往上找,找能跳过的跳转修改 004100D8 |. 85C0 test eax,eax 004100DA EB 0E jmp short CM3.004100EA 004100DC 90 nop 004100DD 90 nop 004100DE 90 nop 004100DF 90 nop 修改后保存 再次运行CM,成功运行了。 我的机器码是ZFF1F09BC2DEF5B5ABF56D405110F01DD0== 输入假码123456789 此CM的验证时直接在编辑框内写入注册码,然后按下回车键后就注册。下GetWindowTextA断点。断下后返回到程序领空。 返回到程序领空后,会发现堆栈窗口中有HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\feifei 的字样。打开注册表后,发下这个子项里面有两个值 数值名称:CM V2taR01VWXdPVUpETWtSWkY= 数值名称:CM1 95,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 [local.9],0x0 00416FB5 90 nop 00416FB6 90 nop 00416FB7 90 nop 00416FB8 90 nop 00416FB9 90 nop 00416FBA 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 注册表内 数值名称:feifei MTIzNDU2Nzg5WkY= 数值名称:feifei1 8E,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里面的值相等。然后重新打开程序就会显示成功的界面了
|