发新话题
打印

[转载]5分钟爆破Easy Gif Animator v2.12

[转载]5分钟爆破Easy Gif Animator v2.12

文章作者:Vxer(也可以叫tankaiha或者hmx)

说来丢脸,下了注册机,却没找到在哪里注册,算了,自已跟一下。

入口处如下

代码
00568000 g>  E8 00000000    call gifan.00568005
00568005    58          pop eax
00568006    83D8 05      sbb eax,5
00568009    89C3        mov ebx,eax
0056800B    83C3 30      add ebx,30
0056800E    8B43 39      mov eax,dword ptr ds>
00568011    05 00004000    add eax,gifan.004000>; ASCII "MZP"
00568016    8B4B 3D      mov ecx,dword ptr ds>
00568019    89C6        mov esi,eax
0056801B    89C7        mov edi,eax
0056801D    8CD8        mov ax,ds
0056801F    8EC0        mov es,ax
00568021    B4 00        mov ah,0
00568023    AC          lods byte ptr ds:[es>
00568024    30E0        xor al,ah
00568026    88C4        mov ah,al
00568028    AA          stos byte ptr es:[ed>
00568029  ^ E2 F8        loopd short gifan.00>
0056802B    8B43 08      mov eax,dword ptr ds>
0056802E    50          push eax
0056802F    C3          retn


向下看几行就可以知道这是一个简单的解码过程,直接将断点设在最下面的retn处,F9运行。F8来到第二处解码(要是我没想错的话)

代码
005633C0     60        db 60           ;  CHAR '`'
005633C1     BE        db BE
005633C2     00604E00    dd gifan.004E6000
005633C6     8D        db 8D
005633C7     BE        db BE
005633C8     00        db 00
005633C9     B0        db B0
005633CA     F1        db F1
...
...


这里出现了反汇编错误,不管他,向下翻,到了代码的尾部

代码
...
...
00563522   .^\EB E1      jmp short gifan.0056>
00563524   >  FF96 E4671600 call dword ptr ds:[e>
0056352A   >  61        popad
0056352B   .^ E9 184AFAFF  jmp gifan.00507F48
00563530     48355600    dd gifan.00563548
00563534     64355600    dd gifan.00563564
00563538     A0905000    dd gifan.005090A0
0056353C     00        db 00
0056353D     00        db 00
0056353E     00        db 00
...
...


这段代码怎么那么像某个壳呢?将断点设在0056352B处,F9运行.F8步进一下,终于来到了原程序的入口:

代码
00507F48   > /55        push ebp
00507F49   . |8BEC       mov ebp,esp
00507F4B   . |83C4 F0     add esp,-10
00507F4E   . |53        push ebx
00507F4F   . |B8 387A5000  mov eax,gifan.00507A>
00507F54   . |E8 97E8EFFF  call gifan.004067F0
00507F59   . |8B1D 34B55000 mov ebx,dword ptr ds>;  gifan.0050CBF0
00507F5F   . |68 14805000  push gifan.00508014
00507F64   . |6A 00      push 0
00507F66   . |6A 00      push 0
00507F68   . |E8 EFEAEFFF  call gifan.00406A5C
00507F6D   . |8B03       mov eax,dword ptr ds>
00507F6F   . |BA 28805000  mov edx,gifan.005080>;  ASCII "Easy GIF Animator"
00507F74   . |E8 0B2CF7FF  call gifan.0047AB84
00507F79   . |8B03       mov eax,dword ptr ds>
00507F7B   . |83C0 50     add eax,50
00507F7E   . |BA 44805000  mov edx,gifan.005080>;  ASCII "gifan.chm"
00507F83   . |E8 30C7EFFF  call gifan.004046B8
00507F88   . |E8 477FFEFF  call gifan.004EFED4
00507F8D   . |84C0       test al,al
00507F8F   . |75 3D      jnz short gifan.0050>
...
...


将最下面那个jnz改为jmp,F9运行,果然不再弹出没有注册的窗口了。这样思路就确定了,先脱壳,再爆破。

重复上述的过程,重新来到原程序入口00507F48,然后OllyDump保存一下,可以用PEiD下,原来是Borland Delphi 6.0 - 7.0。再运行Import Rec修复注册表,入口地址填00107F48,点自动获取,成功且全部有效,修复刚才保存的文件。

最后,用OllyDbg打开修复过的文件,将00507F8F处的jnz改为jmp,保存一下。运行,爆破成功!
qq310926是我唯一用号,除此之外有其他号码号自称邪八冰血封情,则非本人。

TOP

发新话题