主治医师考试宝典系列软件暴破分析(SMC详解Loader制作,感谢小Q和菜儿)
说明:仅做解密交流,无它. 软件不错,但加密做的有点虚.这篇文章算是一个提醒吧.官方地址:http://www.ksbao.com/
本文中SMC感谢小Q,内存Loader的制作上感谢菜儿, 感谢两位朋友的帮忙. 3人的教程送给论坛的初学者~~
00591EC4 55 push ebp
00591EC5 8BEC mov ebp, esp
00591EC7 33C9 xor ecx, ecx
00591EC9 51 push ecx
00591ECA 51 push ecx
00591ECB 51 push ecx
00591ECC 51 push ecx
00591ECD 53 push ebx
00591ECE 8BD8 mov ebx, eax
00591ED0 33C0 xor eax, eax
00591ED2 55 push ebp
00591ED3 68 A11F5900 push 00591FA1
00591ED8 64:FF30 push dword ptr fs:
00591EDB 64:8920 mov dword ptr fs:, esp
00591EDE E8 3128F8FF call 00514714
00591EE3 A1 E4B25900 mov eax, dword ptr
00591EE8 8B00 mov eax, dword ptr
00591EEA 8B48 1C mov ecx, dword ptr
00591EED A1 E4B25900 mov eax, dword ptr
00591EF2 8B00 mov eax, dword ptr
00591EF4 8B50 14 mov edx, dword ptr
00591EF7 8D45 F8 lea eax, dword ptr
00591EFA E8 2535E7FF call 00405424
00591EFF E8 E019F8FF call 005138E4
00591F04 8945 FC mov dword ptr , eax
00591F07 33C0 xor eax, eax
00591F09 55 push ebp
00591F0A 68 7F1F5900 push 00591F7F
00591F0F 64:FF30 push dword ptr fs:
00591F12 64:8920 mov dword ptr fs:, esp
00591F15 8B45 FC mov eax, dword ptr
00591F18 E8 63EBF7FF call 00510A80 ; 关键CALL,F7跟进
00591F1D 84C0 test al, al ; 标志位比较
00591F1F 74 1C je short 00591F3D ; 关键跳转,若不跳转软件即可使用注册功能, 最简单的暴破方法就是直接NOP掉这里
00591F21 8D45 F4 lea eax, dword ptr
00591F24 B9 B81F5900 mov ecx, 00591FB8 ; [已注册]
00591F29 8B55 F8 mov edx, dword ptr
00591F2C E8 F334E7FF call 00405424
00591F31 8B55 F4 mov edx, dword ptr
00591F34 8BC3 mov eax, ebx
00591F36 E8 118DF2FF call 004BAC4C
00591F3B EB 1F jmp short 00591F5C
00591F3D 8D45 F0 lea eax, dword ptr
关键CALL:
00510A80 E8 EB010000 call 00510C70 ; F7继续跟进
00510A85 C3 retn
00510C70 55 push ebp ; F7跟进关键CALL后来到这里
00510C71 8BEC mov ebp, esp
00510C73 6A 00 push 0
00510C75 6A 00 push 0
00510C77 6A 00 push 0
00510C79 53 push ebx
00510C7A 56 push esi
00510C7B 8BF0 mov esi, eax
00510C7D 33C0 xor eax, eax
00510C7F 55 push ebp
00510C80 68 090D5100 push 00510D09
00510C85 64:FF30 push dword ptr fs:
00510C88 64:8920 mov dword ptr fs:, esp
00510C8B 837E 68 00 cmp dword ptr , 0
00510C8F 74 5B je short 00510CEC ; 注意,这个跳转已实现,跳向510CEC地址 我们这个暴破的目的就在于修改AL数值 那么我们从下向上找 AL数值的赋值地址 我们找到510CDD这个地址 这里我们修改为 JE 510CDD
00510C91 8D55 FC lea edx, dword ptr
00510C94 8BC6 mov eax, esi
00510C96 E8 EDFCFFFF call 00510988
00510C9B 837D FC 00 cmp dword ptr , 0
00510C9F 74 4B je short 00510CEC
00510CA1 8D45 F8 lea eax, dword ptr
00510CA4 50 push eax
00510CA5 8D55 F4 lea edx, dword ptr
00510CA8 8BC6 mov eax, esi
00510CAA E8 D9FCFFFF call 00510988
00510CAF 8B55 F4 mov edx, dword ptr
00510CB2 8B4E 68 mov ecx, dword ptr
00510CB5 8BC6 mov eax, esi
00510CB7 E8 34F6FFFF call 005102F0
00510CBC 8B45 F8 mov eax, dword ptr
00510CBF BA 200D5100 mov edx, 00510D20 ; ASCII "645364631365423154824"
00510CC4 E8 1BA9EFFF call 0040B5E4
00510CC9 85C0 test eax, eax
00510CCB 75 14 jnz short 00510CE1
00510CCD B1 01 mov cl, 1
00510CCF 8B56 68 mov edx, dword ptr
00510CD2 8BC6 mov eax, esi
00510CD4 E8 77FEFFFF call 00510B50
00510CD9 84C0 test al, al
00510CDB 75 04 jnz short 00510CE1
00510CDD B3 01 mov bl, 1 ; EBX的赋值在这里
00510CDF EB 0D jmp short 00510CEE
00510CE1 33DB xor ebx, ebx
00510CE3 8BC6 mov eax, esi
00510CE5 E8 620B0000 call 0051184C
00510CEA EB 02 jmp short 00510CEE
00510CEC 33DB xor ebx, ebx ; 若软件未注册,上方的跳转则跳到这里
00510CEE 33C0 xor eax, eax
00510CF0 5A pop edx
00510CF1 59 pop ecx
00510CF2 59 pop ecx
00510CF3 64:8910 mov dword ptr fs:, edx
00510CF6 68 100D5100 push 00510D10
00510CFB 8D45 F4 lea eax, dword ptr
00510CFE BA 03000000 mov edx, 3
00510D03 E8 1844EFFF call 00405120
00510D08 C3 retn
00510D09^ E9 623CEFFF jmp 00404970
00510D0E^ EB EB jmp short 00510CFB
00510D10 8BC3 mov eax, ebx ; 注意,我们的标志位比较的就是AL,这里就是AL的赋值语句 那EBX来自那里呢? 我们向上找
00510D12 5E pop esi
00510D13 5B pop ebx
00510D14 8BE5 mov esp, ebp
00510D16 5D pop ebp
00510D17 C3 retn
下断提示:
http://www.chinadforce.com/attachments/day_070531/01_msj9rjlEeXyu.gif
http://www.chinadforce.com/attachments/day_070531/02_Z06FNSYKswAw.gif
由于是压缩壳,这里就给了我们使用SMC破解的可能. 下文要特别感谢小Q对SMC补丁上的指导.
OD载入原程序,ESP定律来到这里:
006113B0 /75 08 jnz short 006113BA
006113B2 |B8 01000000 mov eax, 1
006113B7 |C2 0C00 retn 0C
006113BA \68 3C2D5900 push 00592D3C
006113BF C3 retn
http://www.chinadforce.com/attachments/day_070531/1_ceVuYlGUZTCn.gif
由于我们已经分析出需要修改的数据:
原程序:
00510C8F 74 5B je short 00510CEC
修改为:
00510C8F 74 4C je short 00510CDD
即:74 5B 要修改为 74 4C
所以我们在外壳区段找一处空白地址开始写入SMC补丁数据. 如何找空白处呢,我和小Q的方法就是直接在OD中向下来,来到该区断的尾部,这一部分空白的几率更大一些.
00615FEE 66:C705 8F0C510>mov word ptr , 4C74 ; 我们在压缩壳的区段写入要填充的数据.
00615FF7^ E9 BEB3FFFF jmp 006113BA ; 然后返回未修改壳区的下一个地址
简单的解释一下这里填写的代码意思:
1.WORD==>表示一个字. 因为我们要修改两个字节,所以这里是WORD.如果是字节就用BYTE,双字就是DWORD。如果字节更多的话,那就多用几次MOV操作即可.
2.PTR ==>汇编语言的一种格式,我们向内存中写入数据的时候,PTR前方要注明我们写入数据的字节大小.
3.==>[]中即我们要写入数据的地址,该地址加"[]"后代表该地址对应的数据,就是我们从该地址开始写数据. SMC破解我们一般用的都是MOV向内存写入数据.
4.写入数据时要根据高高低低原则,由于我们要修改的数据为74 4C. 这里"74"为低位,"4C"为高位,所以我们在MOV中写入"4C74"
5.最后一句是返回语句,就是JMP 到 我们跳来语句的下一行的地址. 本程序中为:即006113BA \68 3C2D5900 push 00592D3C
http://www.chinadforce.com/attachments/day_070531/2_4eClKLzjqVJW.gif
写入数据后我们先保存一次. OD载入我们保存SMC数据的程序,ESP定律后来到这里开始做修改:
006113B0 /E9 394C0000 jmp 00615FEE ; 从壳区找一个地址写需要修改的数据
006113B5 |90 nop
006113B6 |90 nop
006113B7 |C2 0C00 retn 0C
006113BA |68 3C2D5900 push 00592D3C ; 我们修改的数据返回到这里
006113BF |C3 retn
最后保存文件. SMC破解完工~ 保存后,文件仍加的是原壳.
内存Loader的制作,感谢菜儿提供帮助~~ 呵呵 这个帖子是3位朋友共同合作的 :24ab:送给大家~~
DUP制作内存Loader
我们打开DUP,新建方案中选择"偏移量补丁"
http://www.chinadforce.com/attachments/day_070531/0_m9DoTzJat65o.gif
然后我们双击"偏移量补丁",在控制界面中如下填写数据,由于我们就修改一处所以添写一个就OK了.
注意: 74 对应的地址是00510C8F 所以4C对应的地址就应该是00510C90
http://www.chinadforce.com/attachments/day_070531/1_61MUUsRzXidR.gif
最后的步骤当然是生成了~~
http://www.chinadforce.com/attachments/day_070531/2_G50hUVT87rvU.gif 总版主不知道你破出来的宝典,题目是不是单选题,只有一个, 不管怎么说,我还是下载回家再破解一次看看就知道了 原帖由 bhcjl 于 2007-5-31 16:42 发表 https://www.chinapyg.com/images/common/back.gif
总版主不知道你破出来的宝典,题目是不是单选题,只有一个,
和注册版有什么区别吗?未注册的版本无法考试,这个可以使用考试功能. 其他的不清楚是注册版有什么区别. 原帖由 Nisy 于 2007-5-31 16:01 发表 https://www.chinapyg.com/images/common/back.gif
最后保存文件. SMC破解完工~ 保存后,文件仍加的是原壳.
还是不太明白...如果做个录象就好了.......支持兄弟分享技术... 主要学习方法~~ 学习总版主的好文章!!! 向前辈学习。 郁闷,看不懂/:011 哇,这个有的学了