|
 
- UID
- 766
- 帖子
- 2932
- 主题
- 76
- 精华
- 8
- 坛币
- 159 UB
- 热心
- 20 UF
- 在线时间
- 1521 小时
- 注册时间
- 2005-6-13
- 最后登录
- 2010-9-3
|
8#
发表于 2007-4-6 09:37
| 只看该作者
那个例子说明白下吧
10121CEE 2B71 08 sub esi, dword ptr ds:[ecx+8] // ds:[10121834]=10000000 (unpack_k.10000000)
esi=10000000 (unpack_k.10000000) 基址
10121CF1 74 7A je short unpack_k.10121D6D // ; 这里是比较映像基址是否相等,相等则不处理。改标志位Z=0,使这里不跳转
10121CF3 8971 08 mov dword ptr ds:[ecx+8], esi
10121CF6 8B01 mov eax, dword ptr ds:[ecx]
10121CF8 8DB5 B9FCFFFF lea esi, dword ptr ss:[ebp-347]
10121CFE 8B36 mov esi, dword ptr ds:[esi]
10121D00 8D5E FC lea ebx, dword ptr ds:[esi-4]
10121D03 83F8 01 cmp eax, 1
10121D06 74 0A je short unpack_k.10121D12
10121D08 8BFA mov edi, edx
10121D0A 0379 04 add edi, dword ptr ds:[ecx+4]
10121D0D 8B49 08 mov ecx, dword ptr ds:[ecx+8]
10121D10 EB 08 jmp short unpack_k.10121D1A
10121D12 8BFE mov edi, esi
10121D14 0379 04 add edi, dword ptr ds:[ecx+4]
10121D17 8B49 08 mov ecx, dword ptr ds:[ecx+8]
10121D1A 33C0 xor eax, eax
10121D1C 8A07 mov al, byte ptr ds:[edi] // edi=1010D000 重定位表的RVA=10d000
10121D1E 47 inc edi
10121D1F 0BC0 or eax, eax
10121D21 74 20 je short unpack_k.10121D43 // 重定位数据处理完, 则跳转
10121D23 3C EF cmp al, 0EF
10121D25 77 06 ja short unpack_k.10121D2D
10121D27 03D8 add ebx, eax
10121D29 010B add dword ptr ds:[ebx], ecx
10121D2B ^ EB ED jmp short unpack_k.10121D1A
10121D2D 24 0F and al, 0F
10121D2F C1E0 10 shl eax, 10
10121D32 66:8B07 mov ax, word ptr ds:[edi]
10121D35 83C7 02 add edi, 2
10121D38 0BC0 or eax, eax
10121D3A ^ 75 EB jnz short unpack_k.10121D27
10121D3C 8B07 mov eax, dword ptr ds:[edi]
10121D3E 83C7 04 add edi, 4
10121D41 ^ EB E4 jmp short unpack_k.10121D27
10121D43 33DB xor ebx, ebx // edi =101139B8 重定位表的结束地址
10121D45 87FE xchg esi, edi
10121D47 8B06 mov eax, dword ptr ds:[esi]
10121D49 83F8 00 cmp eax, 0
10121D4C 74 1F je short unpack_k.10121D6D //这里不跳就会出现 Unable to load DLL 重定位的问题没搞好
10121D4E AD lods dword ptr ds:[esi]
10121D4F 0BC0 or eax, eax
10121D51 74 08 je short unpack_k.10121D5B
10121D53 03D8 add ebx, eax
10121D55 66:010C3B add word ptr ds:[ebx+edi], cx
10121D59 ^ EB F3 jmp short unpack_k.10121D4E
10121D5B 33DB xor ebx, ebx
10121D5D C1E9 10 shr ecx, 10
10121D60 AD lods dword ptr ds:[esi]
10121D61 0BC0 or eax, eax
10121D63 74 08 je short unpack_k.10121D6D
10121D65 03D8 add ebx, eax
10121D67 66:010C3B add word ptr ds:[ebx+edi], cx
10121D6B ^ EB F3 jmp short unpack_k.10121D60
10121D6D 8BDD mov ebx, ebp |
|