admin管理员组文章数量:1567915
2024年3月19日发(作者:)
脱壳过程:OD载入程序,老规矩插件隐藏OD,忽略所有异常,再添
加以下几个异常C0000005(ACCESS VIOLATION)、C000
001D(ILLEGAL INSTRUCTION)、C000001E(INVALID LOCK
SEQUENCE)、C0000096(PRIVILEGED INSTRUCTION)
入口代码:
0105A000 N> 60 pushad
0105A001 E8 00000000 call NOTEPAD.0105A006
0105A006 5D pop ebp
0105A007 50 push eax
0105A008 51 push ecx
0105A009 0FCA bswap edx
0105A00B F7D2 not edx
0105A00D 9C pushfd
下bp OpenMutexA断点shift+F9运行,
77E62391 k> 55 push ebp---------中断在这里
77E62392 8BEC mov ebp,esp
77E62394 51 push ecx
77E62395 51 push ecx
77E62396 837D 10 00 cmp dword ptr ss:[ebp+10],0
77E6239A 56 push esi
77E6239B 0F84 C2E30100 je kernel32.77E80763
77E623A1 64:A1 18000000 mov eax,dword ptr fs:[18]
看堆栈
0006F710 0103229B /CALL 到 OpenMutexA 来自
NOTEPAD.01032295
0006F714 001F0001 |Access = 1F0001
0006F718 00000000 |Inheritable = FALSE
0006F71C 0006FDA0 MutexName = "52C:A9EEE0AC4"------注意
0006fda0,等下会用到
0006F720 00000004
0006F724 00000000
0006F728 010476B3 NOTEPAD.010476B3
Ctrl+G 01001000 键入以下代码:
为什么是Ctrl+G 01001000呢?很多教程里都是Ctrl+G 401000,在本
例Ctrl+G 401000是无法写入调式
程序中的,而且401000处有代码(大家可以试一试),那么如何知道是
用Ctrl+G 01001000的呢?个人认
为是根据载入口的代码来确定的,形式是入口代码地址的前3位
+01000,如本例中的入口代码是:
0105A000 N> 60 pushad,取其地址中的前3位010,再加上
01000,合起来就是01001000。这样一来
许多教程中的Ctrl+G 401000是入口代码地址为004xxxxx的形式,
401000属于取其地址中的前3位010,再
加上01000中入口代码前3位为004的一个特例。
01001000 60 pushad
01001001 9C pushfd
01001002 68 A0FD0600 push 6FDA0 堆栈里看到的值
01001007 33C0 xor eax,eax
01001009 50 push eax
0100100A 50 push eax
0100100B E8 B5A6E576 call MutexA
01001010 9D popfd
01001011 61 popad
版权声明:本文标题:《Armadillo1.xx-2.xx-SiliconRealmsToolworks脱壳分析》 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1710801668a284207.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论