|
CTRL+S 查找命令序列:
============================================
push eax
ANY
test eax,eax
pop ecx
pop ecx
ANY
push ebx
push ebx
============================================
找到后显示为:
0043964E |. 50 |push eax
0043964F |. E8 ACFC0000 |call AutoIt3A.00449300
00439654 |. 85C0 |test eax,eax
00439656 |. 59 |pop ecx
00439657 |. 59 |pop ecx
00439658 |. 74 48 |je short AutoIt3A.004396A2
0043965A |. 53 |push ebx
0043965B |. 53 |push ebx
在push eax上面按F2下断,F9运行,中断.
如果EAX显示:
ASCII ">AUTOIT UNICODE SCRIPT<"
就说明脚本是UNICODE编码的.
如果显示:
ASCII ">AUTOIT SCRIPT<"
就说明脚本是ANSI编码的.
取消断点.
CTRL+S 查找命令序列:
============================================
lea eax,dword ptr ss:[ebp-1018]
或
lea eax,dword ptr ss:[ebp-2018]
push eax
mov ecx,ebx
ANY
test al,al
ANY
lea eax,dword ptr ss:[ebp-1018]
或
lea eax,dword ptr ss:[ebp-2018]
============================================
找到后在第二个lea eax,dword ptr ss:[ebp-1018]上面下断点(按F2)
按F9一次,中断,F8一次,寄存器窗口出现脚本?取消刚才设置的断点(F2)
=====================================================
004069D3 |. E8 D5FDFFFF |call AutoIt3A.004067AD
004069D8 |. 84C0 |test al,al
004069DA |. 0F84 CE000000 |je AutoIt3A.00406AAE
004069E0 |. 8D85 E8EFFFFF |lea eax,dword ptr ss:[ebp-1018] ; 断在这里
004069E6 |. E8 ECF7FFFF |call AutoIt3A.004061D7
004069EB |. 84C0 |test al,al
=====================================================
点击刚才lea eax,dword ptr ss:[ebp-1018]上面那个je AutoIt3A.00406AAE,看它跑哪里去.
跑到了这里:
=====================================================
00406AAE |> \FF75 0C push dword ptr ss:[ebp+C]
=====================================================
在上面的地址下断.F9运行一次,再次中断.
现在脚本解压缩完了.
看看寄存器EDX的值(如果EDX未出现脚本,请使用下面的那个方法):
EAX 0012F700 ASCII "U3TOOL.exe"
ECX 0046E2D8 AutoIt3A.0046E2D8
EDX 00C10048 ASCII 3B," <AUT2EXE VERSION: 3.2.5.1>
在EDX那一行上面点击右键>
;在数据窗口跟随.
再看左下方内存窗口.
在内存窗口右键>备份>保存数据到文件(扩展名修改为AU3).
用scite打开这个保存的au3脚本,删除无用的数据.OK,脚本已经反编译完成了. |
|