TA的每日心情 | 慵懒 2018-6-6 15:51 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
【文章标题】: ARM dll脱壳修复及修复
【文章作者】: glts
【作者邮箱】: [email protected]
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
---------------------------------------------------------------------------
-----
【详细过程】
查知为Armadillo 2.51 - 3.xx DLL Stub -> Silicon Realms Toolworks
一、OD载入入口
10062E97 > 55 push ebp
10062E98 8BEC mov ebp,esp
10062E9A 53 push ebx
10062E9B 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
10062E9E 56 push esi
10062E9F 8B75 0C mov esi,dword ptr ss:[ebp+C]
10062EA2 57 push edi
10062EA3 8B7D 10 mov edi,dword ptr ss:[ebp+10]
10062EA6 85F6 test esi,esi
二、BP GetModuleHadnleA 处理Magic jump
00B75D12 /0F84 2F010000 je 00B75E47 ; Magic jump
三、BP GetTickCount 处理重定位RVA和SIZE
7C80929C > BA 0000FE7F mov edx,7FFE0000 SHIT+F9 断下后返
回 出现一片红海
7C8092A1 8B02 mov eax,dword ptr ds:[edx]
7C8092A3 F762 04 mul dword ptr ds:[edx+4]
7C8092A6 0FACD0 18 shrd eax,edx,18
7C8092AA C3 retn
-------------------------
搜索“全部顺序”
PUSH EAX
XCHG CX,CX
POP EAX
STC
查找所有序列,项目 1 地址=00B8CF54 反汇编=push eax /找到此行双击来到代码
处
00B8CF54 50 push eax /此处下断SHIT+F9 断
下后因为解码也出现小红海
00B8CF55 66:87C9 xchg cx,cx
00B8CF58 58 pop eax
00B8CF59 F9 stc
--------------------
00B8CF54 50 push eax
00B8CF55 66:87C9 xchg cx,cx
00B8CF58 58 pop eax
00B8CF59 C705 E0C0B900 6>mov dword ptr ds:[B9C0E0],0B9CB60
00B8CF63 A1 E49FBA00 mov eax,dword ptr ds:[BA9FE4]
00B8CF68 8B00 mov eax,dword ptr ds:[eax] ; 重定位R
VA /F2下断看RVA地址为
00B8CF6A 8985 3CD9FFFF mov dword ptr ss:[ebp-26C4],eax
00B8CF70 A1 E49FBA00 mov eax,dword ptr ds:[BA9FE4]
00B8CF75 83C0 04 add eax,4
00B8CF78 A3 E49FBA00 mov dword ptr ds:[BA9FE4],eax
00B8CF7D A1 E49FBA00 mov eax,dword ptr ds:[BA9FE4]
00B8CF82 8B00 mov eax,dword ptr ds:[eax] ; 重定位SI
ZE /F2下断看SIZE
00B8CF84 8985 78D9FFFF mov dword ptr ss:[ebp-2688],eax
00B8CF8A A1 E49FBA00 mov eax,dword ptr ds:[BA9FE4]
00B8CF8F 83C0 04 add eax,4
00B8CF92 A3 E49FBA00 mov dword ptr ds:[BA9FE4],eax
00B8CF97 83BD 3CD9FFFF 0>cmp dword ptr ss:[ebp-26C4],0
00B8CF9E 74 6F je short 00B8D00F
00B8CFA0 83BD 78D9FFFF 0>cmp dword ptr ss:[ebp-2688],0
00B8CFA7 74 66 je short 00B8D00F
00B8CFA9 8B85 FCD7FFFF mov eax,dword ptr ss:[ebp-2804]
00B8CFAF 8B8D 0CD8FFFF mov ecx,dword ptr ss:[ebp-27F4]
00B8CFB5 3B48 34 cmp ecx,dword ptr ds:[eax+34]
00B8CFB8 74 55 je short 00B8D00F ; 重定位
Magic jump 改为JMP这样就不用脱下后手工修正基础
-------------------------------------
------
在三处下好断后停下来时看值得出
RVA=00026000
SIZE=00001F24
-------------------------------------
------
取消断点打开内存镜像在
内存映射,项目 58 地址=10001000 大小=00017000 (94208.) 物主=qqmgr
10000000 区段=.text 类型=Imag 01001002
此处下断SHIT+F9 断在OEP处
10004845 55 push ebp
10004846 8BEC mov ebp,esp
10004848 53 push ebx
10004849 8B5D 08 mov ebx,dword ptr ss:[ebp+8]
1000484C 56 push esi
1000484D 8B75 0C mov esi,dword ptr ss:[ebp+C]
10004850 57 push edi
10004851 8B7D 10 mov edi,dword ptr ss:[ebp+10]
10004854 85F6 test esi,esi
-------------------------------------
-------
此时 CTRL+B 搜索 ff 15找iat起始位置,得到起始位置为:10018000减
去基址后为:1800
-------------------------------------
-------
此时脱壳 脱下来后 打开LordPE先修正重定位输入我们上面找到的rva(00026000)
size(00001F24)修正重定位后
打开Imporrec进行修复无效的减切掉 然后把OEP改为4845抓取修复即可
---------------------------------------------------------------------------
--------------------------------------------------------------------------
【版权声明】: 本文原创于PYG技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2007年04月18日 下午 11:53:43 |
|