• 标 题:ACDSee3.0和ASPACK (3千字)
  • 作 者:SillyBird
  • 时 间:2000-6-22 13:28:26
  • 链 接:http://bbs.pediy.com

初学破解,一点心得,希望与大家交流.
破解ACDSee3.0如下:

使用TRW找到ACDSee!.ASPACK的最后地址为:5554CC
相关为:
005554B6 89 85 5C 2E 44 00    mov        dword ptr [ebp+442E5Ch],eax
005554BC 61                  popad
005554BD 75 08                jne        005554C7
005554BF B8 01 00 00 00      mov        eax,1
005554C4 C2 0C 00            ret        0Ch
005554C7 68 DF 32 4A 00      push        4A32DFh
005554CC C3                  ret
mov        dword ptr [ebp+442E5Ch],eax将dword ptr [5554C8]从0改到4A32DF

ACDSee!.TEXT第一条指令为:
004A32DF 55                  push        ebp
004A32E0 8B EC                mov        ebp,esp
004A32E2 6A FF                push        0FFh
004A32E4 68 A8 69 4D 00      push        4D69A8h
004A32E9 68 80 81 4A 00      push        4A8180h

做以下修改:
1.修改5554B6为,RawAddress = 864B6(文件中静态地址)
005554B6 E9 15 A1 01 00      jmp        0056F5D0

2.修改5550FD为,RawAddress = A05D0
0056F5D0 89 85 5C 2E 44 00    mov        dword ptr [ebp+442E5Ch],eax
0056F5D6 BB 30 71 41 00      mov        ebx,417130h
0056F5DB C7 03 B8 01 00 00    mov        dword ptr [ebx],1B8h
0056F5E1 BB 34 71 41 00      mov        ebx,417134h
0056F5E6 C7 03 00 C3 90 90    mov        dword ptr [ebx],9090C300h
0056F5EC BB EA 3F 43 00      mov        ebx,433FEAh
0056F5F1 66 C7 03 EB 17      mov        word ptr [ebx],17EBh
0056F5F6 E9 C1 5E FE FF      jmp        005554BC

3.其中417130使About弹出信息为注册
原来是:
00417130 33 C0                xor        eax,eax    ;返回0认为没有注册
00417132 C3                  ret
00417133 90                  nop
00417134 90                  nop
00417135 90                  nop
00417136 90                  nop
改后为:
00417130 B8 01 00 00 00      mov        eax,1        ;返回1认为已经注册
00417135 C3                  ret
00417136 90                  nop

4.433FEA使软件不过期
原来是:
00433FEA 6A 00                push        0
00433FEC 68 10 40 43 00      push        434010h
00433FF1 50                  push        eax
00433FF2 68 07 04 00 00      push        407h
00433FF7 51                  push        ecx
00433FF8 FF 15 A4 E7 4C 00    call        dword ptr ds:[4CE7A4h]
00433FFE 48                  dec        eax
00433FFF F7 D8                neg        eax
00434001 1B C0                sbb        eax,eax
00434003 40                  inc        eax
00434004 C3                  ret
改后为:
00433FEA EB 17                jmp        00434003    ;跳过过期对话框
00433FEC 68 10 40 43 00      push        434010h
00433FF1 50                  push        eax
00433FF2 68 07 04 00 00      push        407h
00433FF7 51                  push        ecx
00433FF8 FF 15 A4 E7 4C 00    call        dword ptr ds:[4CE7A4h]
00433FFE 48                  dec        eax
00433FFF F7 D8                neg        eax
00434001 1B C0                sbb        eax,eax
00434003 40                  inc        eax
00434004 C3                  ret

按照这种思路,基本上破解任何加壳的软件都不需要使用专门的脱壳软件。仅仅在壳对本体程序代码解密完成后,做JMP或CALL到自己代码,将相关的代码修改成自己想要的,然后再回到原来代码执行,就能完成任务。在ACDSee3.0的.text块的属性是可写的,所以不会产生写错误。

跳过过期画面的处理参考baoleigz的《也谈ACDSee V3.0破解》。