AS3 Sorcerer 3.0 破解思路

AS3 Sorcerer是一款flash action Script的商业反编译软件。 www.as3sorcerer.com

软件为Delphi编写,加了未知壳,使用PEID 0.94无法正确查出,使用核心扫描发现是
Delphi编写,这个软件有一个特点修改一个字节就报错。由于时间原因没有具体跟相关代码。

破解方法使用LPK.dll动态修改as3.exe内存达到破解目前,在Windows Xp下比较完美,
在Windows 7下已经无法通过LPK.dll进行DLL hijack,可以通过DLL注入达到同样的目的。

难点有几个,OD加载报错,attack也报错。使用海风月影的StrongOD可以正常attach。
OD 1.1目前最大的问题是插件冲突严重,安装了OllyAdv后,无法成功加载as3.exe.
遇上强壳时可以使用phantom的protect DRx,可以解决一下问题,总之要尽量避免冲突。
接下来的难点就是如何找到破解的关键点,进行内存patch。

使用OD查找字符串参考Unicode,搜索trial

006974C2    E8 65ABFDFF     call    0067202C
006974C7    84C0            test    al, al
006974C9    75 1C           jnz     short 006974E7
006974CB    B9 E4756900     mov     ecx, 006975E4                    ; e
006974D0    BA 50766900     mov     edx, 00697650                    ;Sorry!

这里有个坑,在OD中看到的代码有可能不是最终运行的代码,只有真正在OD里断下,进
入程序领空后,看到的代码才是解密后的真正代码。这里在这里浪费了很多时间。换句
话说就是要先保证能调试起来,能调试能下断点基本就成功了一半。

上面的代码是非常经典的关键代码,主要处理了 0067202C让它返回1就OK了。F7跟进

0067202C  - E9 EE9D1900     jmp     0080BE1F
00672031    CC              int3
00672032    CC              int3
00672033    CC              int3
00672034    CC              int3
00672035    CC              int3
00672036    CC              int3
00672037    90              nop

进入就去一个jmp,后面的大段跳转非常多,跟踪困难。好在有很多int3,可以自己
写一段汇编代码解决。

0067202C    33C0            xor     eax, eax
0067202E    83C0 01         add     eax, 0x1
00672031    90              nop
00672032    90              nop
00672033    90              nop
00672034    90              nop
00672035    90              nop
00672036    C3              retn

核心代码

HANDLE handle = GetModuleHandle(NULL);

int RVA = 0x67202C - 0x400000;
int VA = int(handle) + RVA;

unsigned char p405213[11] = {  
      0x33, 0xC0, 0x83, 0xC0, 0x01, 0x90, 0x90, 0x90, 0x90, 0x90, 0xC3
};
VirtualProtectEx(hProcess, (LPVOID)VA, 11, PAGE_EXECUTE_READWRITE, &Oldpp);
WriteProcessMemory(hProcess, (LPVOID)VA, p405213, 11, NULL);

GetModuleHandle用于动态获取进程加载基址。

LPK.dll

Windows 7 不能默认已经不能使用LPK.dll,必须导入下面注册表键值,重启电脑
才能使用。

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager] 
"ExcludeFromKnownDlls"=hex(7):6c,00,70,00,6b,00,2e,00,64,00,6c,00,6c,00,00,00,\ 
00,00

AS3 Sorcerer 3.0 破解思路
https://usmacd.com/cn/AS3_Sorcerer_crack/
作者
henices
发布于
2023年9月6日
许可协议