UPX DLL 变形壳
加壳方式: UPX 0.80 - 1.24 DLL -> Markus & Laszlo
使用工具: OllyICE, LordPE,ImpREC1.7 , ReloREC,WinHex
操作平台: Win XP
一个N年前的东西 无意间发现,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
EP 段 名称空白
LordPE 随便改一下字都不能运行 自效验!
OD 载入
00B38E60 > $ 807C24 08 01 cmp byte ptr ss:[esp+0x8],0x1
00B38E65 . 0F85 7D010000 jnz _th.00B38FE8
00B38E6B . 60 pushad
00B38E6C . BE 0070B200 mov esi,_th.00B27000
00B38E71 . 8DBE 00A0FDFF lea edi,dword ptr ds:[esi-0x26000]
00B38E77 . 57 push edi
00B38E78 . 83CD FF or ebp,-0x1
00B38E7B . EB 0D jmp short _th.00B38E8A
.......
.......
.......
00B38FB0 > \61 popad
00B38FB1 . 31C0 xor eax,eax
00B38FB3 . C2 0C00 retn 0xC
00B38FB6 > 83C7 04 add edi,0x4
00B38FB9 . 8D5E FC lea ebx,dword ptr ds:[esi-0x4] ; F2断下
00B38FBC > 31C0 xor eax,eax
00B38FBE . 8A07 mov al,byte ptr ds:[edi] ; 重定位
00B38FC0 . 47 inc edi
00B38FC1 . 09C0 or eax,eax
00B38FC3 . 74 22 je short _th.00B38FE7
00B38FC5 . 3C EF cmp al,0xEF
00B38FC7 . 77 11 ja short _th.00B38FDA
00B38FC9 > 01C3 add ebx,eax
00B38FCB . 8B03 mov eax,dword ptr ds:[ebx]
00B38FCD . 86C4 xchg ah,al
00B38FCF . C1C0 10 rol eax,0x10
00B38FD2 . 86C4 xchg ah,al
00B38FD4 . 01F0 add eax,esi ; 标记
00B38FD6 . 8903 mov dword ptr ds:[ebx],eax
00B38FD8 .^ EB E2 jmp short _th.00B38FBC
00B38FDA > 24 0F and al,0xF
00B38FDC . C1E0 10 shl eax,0x10
00B38FDF . 66:8B07 mov ax,word ptr ds:[edi]
00B38FE2 . 83C7 02 add edi,0x2
00B38FE5 .^ EB E2 jmp short _th.00B38FC9
00B38FE7 > 61 popad ; F4 到此
00B38FE8 >- E9 89EEFDFF jmp _th.00B17E76 ; 跳到OEP
LordPE Dump 保存
ImpREC 输入 OEP 自动获取 无无效指针 修复保存
构造重定位表
上面找了一片区域NOP掉
pushad
mov edx,dword ptr ds:[00B40000]
sub ebx,00b00000
mov dword ptr ds:[edx],ebx
add edx,0x4
mov dword ptr ds:[00B40000],edx
popad
jmp 00B38FBC
F4到
00B38FDF . 66:8B07 mov ax,word ptr ds:[edi]
00B38FE2 . 83C7 02 add edi,0x2
复制 出来保存bin
UPX2区块里找一片空白地方的地址
运行ReloREC 重定位表的修复
DLL 错误 不知那里出错了 大神给指点一下
这个程序 N年前的东西 如果你是作者 你也不介意吧!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)