- UID
 - 50115
 
 注册时间2008-5-1
阅读权限10
最后登录1970-1-1
周游历练 
  
 
 
 
该用户从未签到  
 | 
 
 
 楼主 |
发表于 2008-5-9 21:59:08
|
显示全部楼层
 
 
 
首先运行:丝路飞人.exe,然后DUMP出来,再用PEID核心扫描为:Microsoft Visual C++ 6.0 
知道是什么语言的就好办了,现在我们就开始脱壳 
OD 载入 ,忽略所有异常,用Hideod 插件隐藏OD!  
 
运行牛人们的脚本:Themida&WinLicenScript_1[1].91+.txt 
当脚本提示:“程序发现被VM oeP,脚本patch了入口,现在可以在这里dump下程序补区段,修复代码!,你也可以选择[否]到普通方式修复!" 
时,点取消,这里程序停在这里: 
 
00986E04    68 D0DF1F5E     push    5E1FDFD0 
00986E09    E9 65C70000     jmp     00993573 
00986E0E    0000            add     byte ptr [eax], al 
00986E10    0000            add     byte ptr [eax], al 
00986E12    0000            add     byte ptr [eax], al 
00986E14    0000            add     byte ptr [eax], al 
 
现在Alt+M,在代码段下F2断点 到这里了 
 
00F1A03B    FF33            push    dword ptr [ebx]          ; kernel32.GetVersion  //停在这里 (3) 
00F1A03D    E9 53280B00     jmp     00FCC895 
00F1A042    55              push    ebp 
00F1A043    812C24 F150692B sub     dword ptr [esp], 2B6950F> 
00F1A04A    8B1424          mov     edx, dword ptr [esp] 
00F1A04D    55              push    ebp 
00F1A04E    89E5            mov     ebp, esp 
00F1A050    81C5 04000000   add     ebp, 4 
00F1A056    83C5 04         add     ebp, 4 
00F1A059    872C24          xchg    dword ptr [esp], ebp 
 
此时 ds:[006BE924]=7C8111DA (kernel32.GetVersion),记住这个值 
好了,继续F8一次,再在代码段下F2断点,来到这里: 
 
0048B59C    A3 709D6B00     mov     dword ptr [6B9D70], eax                 ///停在这里 这里就是OEP了 
0048B5A1    A1 709D6B00     mov     eax, dword ptr [6B9D70] 
0048B5A6    C1E8 08         shr     eax, 8 
0048B5A9    25 FF000000     and     eax, 0FF 
0048B5AE    A3 7C9D6B00     mov     dword ptr [6B9D7C], eax 
0048B5B3    8B0D 709D6B00   mov     ecx, dword ptr [6B9D70] 
0048B5B9    81E1 FF000000   and     ecx, 0FF 
0048B5BF    890D 789D6B00   mov     dword ptr [6B9D78], ecx 
0048B5C5    8B15 789D6B00   mov     edx, dword ptr [6B9D78] 
0048B5CB    C1E2 08         shl     edx, 8 
0048B5CE    0315 7C9D6B00   add     edx, dword ptr [6B9D7C] 
0048B5D4    8915 749D6B00   mov     dword ptr [6B9D74], edx 
0048B5DA    A1 709D6B00     mov     eax, dword ptr [6B9D70] 
0048B5DF    C1E8 10         shr     eax, 10 
0048B5E2    25 FFFF0000     and     eax, 0FFFF 
0048B5E7    A3 709D6B00     mov     dword ptr [6B9D70], eax 
0048B5EC    6A 01           push    1 
0048B5EE    E8 DDCE0000     call    004984D0 
0048B5F3    83C4 04         add     esp, 4 
0048B5F6    85C0            test    eax, eax 
0048B5F8    75 0A           jnz     short 0048B604 
0048B5FA    6A 1C           push    1C 
 
这里就是OEP了 不过要补代码 
这时在堆栈里找这个位置: 
 
0012FF84   0012FFE0  指向下一个 SEH 记录的指针 
0012FF88   0048FAFC  SE处理程序                                      (1)记这两个地址 
0012FF8C   00684870  丝路飞人.00684870                               (2) 
我们已经知道是Microsoft Visual C++ 6.0,好就一个Microsoft Visual C++ 6.0的OEP来补代码 
 
push    ebp 
mov     ebp, esp 
push    -1 
push      ?????                     ;  (1) 
push      ?????                     ;  (2) 
mov     eax, dword ptr fs:[0] 
push    eax 
mov     dword ptr fs:[0], esp 
sub     esp, 58 
push    ebx 
push    esi 
push    edi 
mov     dword ptr [ebp-18], esp 
call      ?????                     ;  (3)  
xor     edx, edx 
mov     dl, ah 
mov     dword ptr [6B9D70], eax 
好了补代码的位置如下: 
0048B56D >/$  55            push    ebp 
0048B56E  |.  8BEC          mov     ebp, esp 
0048B570  |.  6A FF         push    -1 
0048B572  |.  68 FCFA4800   push    0048FAFC                         ;  入口地址 
0048B577  |.  68 70486800   push    00684870                         ;  SE 处理程序安装 
0048B57C  |.  64:A1 0000000>mov     eax, dword ptr fs:[0] 
0048B582  |.  50            push    eax 
0048B583  |.  64:8925 00000>mov     dword ptr fs:[0], esp 
0048B58A  |.  83EC 58       sub     esp, 58 
0048B58D  |.  53            push    ebx 
0048B58E  |.  56            push    esi 
0048B58F  |.  57            push    edi 
0048B590  |.  8965 E8       mov     dword ptr [ebp-18], esp 
0048B593  |.  E8 425C387C   call    kernel32.GetVersion 
0048B598  |.  33D2          xor     edx, edx 
0048B59A  |.  8AD4          mov     dl, ah 
 
在0048B56D新建EIP,DUMP,然后修复,只能手动找了,呵呵 
还记得这个地址吗?ds:[006BE924]=7C8111DA (kernel32.GetVersion),在数据窗口中Ctrl+G 到006BE924 
然后上下翻,找到IAT的起地址:006BE7A4  终地址:006BEA84  大小:2E0 
修复时发现好些无效,直接剪掉就可以了,然后转存,可以运行!!! 
 
 
 
程序  http://gggg6269.googlepages.com/slfr.rar 
 
哪个朋友帮忙看下。。。。。。 |   
 
 
 
 |