Nisy 发表于 2007-5-31 16:01:00

主治医师考试宝典系列软件暴破分析(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:21

总版主不知道你破出来的宝典,题目是不是单选题,只有一个,

bhcjl 发表于 2007-5-31 17:31:41

不管怎么说,我还是下载回家再破解一次看看就知道了

Nisy 发表于 2007-5-31 17:42:48

原帖由 bhcjl 于 2007-5-31 16:42 发表 https://www.chinapyg.com/images/common/back.gif
总版主不知道你破出来的宝典,题目是不是单选题,只有一个,


和注册版有什么区别吗?未注册的版本无法考试,这个可以使用考试功能. 其他的不清楚是注册版有什么区别.

菜儿 发表于 2007-5-31 19:31:31

原帖由 Nisy 于 2007-5-31 16:01 发表 https://www.chinapyg.com/images/common/back.gif
最后保存文件. SMC破解完工~ 保存后,文件仍加的是原壳.
还是不太明白...如果做个录象就好了.......支持兄弟分享技术...

网游难民 发表于 2007-5-31 23:45:02

主要学习方法~~

Lancia 发表于 2007-6-1 03:17:12

学习总版主的好文章!!!

pw2000 发表于 2007-6-1 11:31:48

向前辈学习。

MayDay 发表于 2007-6-1 14:21:22

郁闷,看不懂/:011

coolmy 发表于 2007-6-1 21:54:36

哇,这个有的学了
页: [1] 2 3 4
查看完整版本: 主治医师考试宝典系列软件暴破分析(SMC详解Loader制作,感谢小Q和菜儿)