a__p 发表于 2007-3-24 17:48:43

THEMIDA带壳调试之《天涯QQ对对碰助手3.0》内存LOAD

THEMIDA带壳调试之《天涯QQ对对碰助手3.0》内存LOAD

PEID 查壳是 themida 1.0.0.5 -> Oreans Technologies,初步估计是themida 1.5版

载入后隐藏OD,在代码段下内存写入断点,SHIFT+F9运行

0061F70C      F3:A4             REP MOVS BYTE PTR ES:,BYTE PTR DS:[>       ;F7一次后F8一次
0061F70E      C685 992F1B07 5>MOV BYTE PTR SS:,56
0061F715      68 396D1FD4       PUSH D41F6D39
0061F71A      FFB5 99211B07   PUSH DWORD PTR SS:
0061F720      8D85 25882507   LEA EAX,DWORD PTR SS:
0061F726      FFD0            CALL EAX
0061F728      68 00800000       PUSH 8000
0061F72D      6A 00             PUSH 0
0061F72F      52                PUSH EDX
0061F730      FFD0            CALL EAX

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

SHIFT+F9继续运行,我们又看到熟悉代码了:(注意看中断位置的MFC42,原来是用MFC编译过的C程序)


006255F2      8908            MOV DWORD PTR DS:,ECX               ; MFC42.#540      <<===这里
006255F4      AD                LODS DWORD PTR DS:
006255F5      C746 FC 0000000>MOV DWORD PTR DS:,0
006255FC      89B5 09171B07   MOV DWORD PTR SS:,ESI
00625602      83F8 FF         CMP EAX,-1
00625605      0F85 20000000   JNZ tyddp.0062562B
0062560B      813E DDDDDDDD   CMP DWORD PTR DS:,DDDDDDDD
00625611      0F85 14000000   JNZ tyddp.0062562B

===============================================================================

到模块004010000处搜索ASCII码,找到关键信息,MFC程序我们可以用MFC消息入口查找器找关键点,另外

运行一个主程序,会弹出NAG注册框框,用查找器选择“继续试用,暂不注册按纽”,程序很快会把入口地址找

到004014F0这个地址,复制下来。回到OD中,删除刚才设置的内存断点,CTRL+G来到004014F0处下F2断点。

SHIFT+F9 运行,程序运行起来后点一下继续试用,暂不注册按纽”按纽,程序立即断在了004014F0处,在堆栈

中向下查找来自程序领空的调用,MFC的调用比较烦琐,会出现很多调用,耐心一点。我们返回到 00405361

00405327    /74 46            JE SHORT tyddp.0040536F            <<=====注册提示NAG跳转========   
00405329    |68 C0050000      PUSH 5C0
0040532E    |E8 D73F0000      CALL tyddp.0040930A
00405333    |83C4 04          ADD ESP,4
00405336    |894424 18      MOV DWORD PTR SS:,EAX
0040533A    |85C0             TEST EAX,EAX
0040533C    |C64424 40 08   MOV BYTE PTR SS:,8
00405341    |74 0C            JE SHORT tyddp.0040534F
00405343    |56               PUSH ESI
00405344    |8BC8             MOV ECX,EAX
00405346    |E8 B5BCFFFF      CALL tyddp.00401000
0040534B    |8BE8             MOV EBP,EAX
0040534D    |EB 02            JMP SHORT tyddp.00405351
0040534F    |33ED             XOR EBP,EBP
00405351    |8B55 00          MOV EDX,DWORD PTR SS:
00405354    |8BCD             MOV ECX,EBP
00405356    |C64424 40 06   MOV BYTE PTR SS:,6
0040535B    |FF92 C0000000    CALL DWORD PTR DS:   ;这个call就是MFC的对话框调用
00405361    |85ED             TEST EBP,EBP                <<=========================我们返回到这里
00405363    |74 0A            JE SHORT tyddp.0040536F
00405365    |8B45 00          MOV EAX,DWORD PTR SS:
00405368    |6A 01            PUSH 1
0040536A    |8BCD             MOV ECX,EBP
0040536C    |FF50 04          CALL DWORD PTR DS:
0040536F    \68 3CE94000      PUSH tyddp.0040E93C   

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


向上翻几段代码还发现了60次使用限制的跳转,看来这几段就是程序的关键处了。

00405156      E8 43410000       CALL tyddp.0040929E
0040515B      84DB            TEST BL,BL
0040515D      74 14             JE SHORT tyddp.00405173                        <<====60次限制跳转=====
0040515F      A1 D4F24000       MOV EAX,DWORD PTR DS:
00405164      6A 40             PUSH 40
00405166      50                PUSH EAX
00405167      68 B8E94000       PUSH tyddp.0040E9B8                        ; 未注册版只能试用60次!
0040516C      8BCE            MOV ECX,ESI
0040516E      E8 29430000       CALL tyddp.0040949C
00405173      3BFD            CMP EDI,EBP
00405175      74 08             JE SHORT tyddp.0040517F
00405177      8B17            MOV EDX,DWORD PTR DS:
00405179      6A 01             PUSH 1
0040517B      8BCF            MOV ECX,EDI
0040517D      FF12            CALL DWORD PTR DS:
0040517F      8B46 20         MOV EAX,DWORD PTR DS:
00405182      55                PUSH EBP

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

好,那我们就在0040515D下硬件执行断点,CTRL+F2重新载入,SHIFT+F9 运行,程序被断下来了

0040515D   /74 14             JE SHORT tyddp.00405173               <<=======断在这里,我们让他跳过去0040515F   |A1 D4F24000       MOV EAX,DWORD PTR DS:
00405164   |6A 40             PUSH 40
00405166   |50                PUSH EAX
00405167   |68 B8E94000       PUSH tyddp.0040E9B8                        ; 未注册版只能试用60次!
0040516C   |8BCE            MOV ECX,ESI
0040516E   |E8 29430000       CALL tyddp.0040949C
00405173   \3BFD            CMP EDI,EBP
00405175      74 08             JE SHORT tyddp.0040517F
00405177      8B17            MOV EDX,DWORD PTR DS:
00405179      6A 01             PUSH 1
0040517B      8BCF            MOV ECX,EDI
0040517D      FF12            CALL DWORD PTR DS:

F8单步走几下来到 00405324处:

00405324      F6C4 41         TEST AH,41
00405327      74 46             JE SHORT tyddp.0040536F             <<========注册NAG跳转,我们跳过去
00405329      68 C0050000       PUSH 5C0
0040532E      E8 D73F0000       CALL tyddp.0040930A
00405333      83C4 04         ADD ESP,4
00405336      894424 18         MOV DWORD PTR SS:,EAX
0040533A      85C0            TEST EAX,EAX
0040533C      C64424 40 08      MOV BYTE PTR SS:,8
00405341      74 0C             JE SHORT tyddp.0040534F
00405343      56                PUSH ESI
00405344      8BC8            MOV ECX,EAX
00405346      E8 B5BCFFFF       CALL tyddp.00401000
0040534B      8BE8            MOV EBP,EAX
0040534D      EB 02             JMP SHORT tyddp.00405351
0040534F      33ED            XOR EBP,EBP
00405351      8B55 00         MOV EDX,DWORD PTR SS:
00405354      8BCD            MOV ECX,EBP
00405356      C64424 40 06      MOV BYTE PTR SS:,6
0040535B      FF92 C0000000   CALL DWORD PTR DS:
00405361      85ED            TEST EBP,EBP
00405363      74 0A             JE SHORT tyddp.0040536F
00405365      8B45 00         MOV EAX,DWORD PTR SS:
00405368      6A 01             PUSH 1
0040536A      8BCD            MOV ECX,EBP
0040536C      FF50 04         CALL DWORD PTR DS:


F8单步继续走来到 0040540F处:

0040540C      83F8 05         CMP EAX,5
0040540F      75 51             JNZ SHORT tyddp.00405462       <<=====这里就是关键跳转,我们NOP掉
00405411      6A 01             PUSH 1                                    
00405413      68 E9030000       PUSH 3E9
00405418      8BCE            MOV ECX,ESI
0040541A      E8 793E0000       CALL tyddp.00409298
0040541F      8BC8            MOV ECX,EAX
00405421      E8 CC3E0000       CALL tyddp.004092F2
00405426      6A 00             PUSH 0
00405428      6A 00             PUSH 0
0040542A      68 00000010       PUSH 10000000
0040542F      68 FC030000       PUSH 3FC
00405434      8BCE            MOV ECX,ESI
00405436      E8 5D3E0000       CALL tyddp.00409298
0040543B      8BC8            MOV ECX,EAX
0040543D      E8 883F0000       CALL tyddp.004093CA
00405442      6A 00             PUSH 0
00405444      68 FC030000       PUSH 3FC
00405449      8BCE            MOV ECX,ESI
0040544B      E8 483E0000       CALL tyddp.00409298
00405450      8BC8            MOV ECX,EAX
00405452      E8 9B3E0000       CALL tyddp.004092F2
00405457      6A 00             PUSH 0
00405459      68 00000010       PUSH 10000000
0040545E      6A 00             PUSH 0
00405460      EB 09             JMP SHORT tyddp.0040546B
00405462      6A 00             PUSH 0
00405464      6A 00             PUSH 0

===============================================================================

F9运行后程序已经显示已注册了,看来我们已解除了程序未注册前的NAG注册框和60次使用限制,让

我们来做个内存LOAD吧,打开FLY大侠修改的Keymake 2.0 免杀版, 选择制作内存补丁,选择好目标

程序,添加3处修改代码:

1:修改地址:0040515D      修改长度:2      原始指令:7414      修改指令:EB14

2:修改地址:00405327      修改长度:2         原始指令:7446      修改指令:EB46

3:修改地址:0040540F      修改长度:2         原始指令:7551      修改指令:9090

保存一下,试运行,好的程序已运行起来了,显示“已注册”,收工。
http://hiphotos.baidu.com/5icy/abpic/item/0ca1a45203ea060d0df3e346.jpg

PS:后话:此文的目的是让更多的人了解Themida和利用手中的工具进行简单破解分析它。

[ 本帖最后由 a__p 于 2007-3-24 17:59 编辑 ]

rayicy 发表于 2007-3-24 18:04:07

牛啊 学习了

rayicy 发表于 2007-3-24 18:27:58

http://www.skycn.com/soft/26982.html 挂下的地址

rayicy 发表于 2007-3-24 18:47:33

建议加精......很不错...

ljy3282393 发表于 2007-4-30 22:30:45

支持并学习!

小子贼野 发表于 2007-5-1 21:52:51

原帖由 rayicy 于 2007-3-24 18:27 发表 https://www.chinapyg.com/images/common/back.gif
http://www.skycn.com/soft/26982.html 挂下的地址

下来是个UPX的壳~!

yujia402 发表于 2007-5-8 18:30:11

厉害了,带壳调试

crackforchina 发表于 2007-12-30 14:18:27

汗,按3楼给的地址下载的真是UPX壳/:badly

破解爱好者 发表于 2008-3-31 20:22:06

大哥超强啊!!佩服.

tangtangl 发表于 2008-4-2 09:23:21

好强大.看不懂/:011
页: [1] 2 3
查看完整版本: THEMIDA带壳调试之《天涯QQ对对碰助手3.0》内存LOAD