, // pointer to name of an existing file LPCTSTR lpNewFileName, // pointer to filename to copy to BOOL bFailIfExists ); 在上图的位置 r eax 0 然后编一段代码 a eip push eax push edx push ebx call copyfilea 最后一句不能直接输入,要用 exescope 找到 import 中 copyfilea 的位置,计算相对地址用 ff 15 xx xx xx xx 填入 单步运行完 copyfilea 后,隐藏的文件就被考出来了。 考出的文件是 exe 文件,用 1 的方法就能得到 app 文件,但这个 app 文件可运行,用 unfoxall 反编 译会出错,后面会讲到 app 文件的标准化处理。 3 改变解释器动态解码 这种加密方式采用了狗的方式, trw2000 加载跟踪时, 用 在文件开始运行的代码部分会看到大量 的花指令,再将主文件加密的同时,它把解释动态连接库也进行了加壳,运行时用壳中的代码将 app 文件解码后执行。因 vfp6r.dll 被改动,无法放到系统目录下,因此文件安装目录下能看到 vfp6r.dll,用 exescope 文件观察此文件,能看到 gtide 段,这就是这种文件的特征。 例如:xx 建筑工程预结算
系统 6.6 版(fjjlsoft.yeah.net) 处理方法:采用 2 的方法下断 createfilea,得到调用文件后,下断 readfile, readfile 定义如下: BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, // handle of file to read // pointer to buffer that receives data r ebx 63e630 r edx 63e660 将 63e660 地址的内容改成目的文件如 d:\ab\s.exe // flag for operation if file exists
DWORD nNumberOfBytesToRead, // number of bytes to read LPDWORD lpNumberOfBytesRead, // pointer to number of bytes read LPOVERLAPPED lpOverlapped ); 第 3 次读 200byte 时中断,在读出的代码处下断,bpm xxxxxxxx,观察程序如何解
码 // pointer to structure for data
解码部分的指令
0167:0C2FA505 0167:0C2FA508 0167:0C2FA50B 0167:0C2FA50E 0167:0C2FA510 0167:0C2FA513 0167:0C2FA516 0167:0C2FA518 0167:0C2FA51B 0167:0C2FA521 0167:0C2FA524 0167:0C2FA526 0167:0C2FA529 0167:0C2FA52F 0167:0C2FA532 0167:0C2FA535
INC MOV CMP JNC MOV MOV XOR MOV MOV MOV XOR MOV MOV MOV MOV MOV
JMP
DWORD [EBP-04] EAX,[EBP+0C] [EBP-04],EAX 0C2FA53A EAX,[EBP-04] ECX,[EBP+08] EDX,EDX DL,[ECX+EAX] AL,[EDX+0C3352E2] [EBP-08],AL EAX,EAX AL,[EBP-08] AL,[EAX+0C3353E2] ECX,[EBP-04] EDX,[EBP+08] [EDX+ECX],AL
0C2FA505 key.bin
已处理字节数 要处理字节数
要处理数据的首地址 要处理的数据送 DL 0C3352E2—0C3354E2 512 个字节为密钥
W 0C3352E2 0C3354E2
记下读出的内容,用 hex workshop 在主文件中查找,将到文件尾的内容写入另一个文件 code.bin 用
VB 的语言,上述的解密算法为 Dim keyfiledata(0 to 511) As Byte
Dim codefiledata() As Byte Dim middata() As Byte Dim keyfilelen As Long Open " Key.bin" For Binary As #1 Get #1, 1, keyfiledata() Close #1 keyfilelen = FileLen("code.bin") Redim keyfiledata(0 to keyfilelen-1) as byte Redim middata(0 to keyfilelen-1) as byte Open "code.bin" For Binary As #2 Get #2, i, codefiledata Close #2 For I=0 to keyfilelen-1 Middata(i) = keyfiledata(keyfiledata(codefiledata (i)) + 256) Next i Open "code.app" For Binary As #2 Put #2, 1, middata() Close #2 MsgBox "finish" 得到 app 文件 4 改变解释器的加密方式 这种文件的加密方式的 app 文件是以加密 app 的方式出现,加密者将 vfp6r.dll 的解密部分代码 和文件头标志加以改变, 变成自己的动态连接库,这个库文件同样放在文件的安装目录下,但有的 程序采用了一定的手段让用户看不到这个文件。 例如:xx 工程造价软件 6.6 版(ztys) 这个软件安装后,改变
注册表 HKEY_LOCAL_MACHINE\software\Microsoft\windows\currentversion\explorer\advanced\fold er\hidden\showall\checkedvalue 将键值由 0 改为 1,这样隐含系统文