查看dll编译参数_恶意代码分析之调试.NET平台dll

本文详细描述了如何在.NET和非.NET平台上通过dnSpy和第三方工具如SharpDllLoader调试内存中解密的DLL文件,包括内存加载、反射执行和使用loader辅助调试的过程,重点展示了关键技术和工具的使用方法。

常规方式

场景一

被调试的母体文件为.NET平台程序,内部会进行内存解密释放执行新的dll文件。

可以直接使用dnSpy一步步调试,进而直接进入新dll程序领空。这里举一个笔者之前分析时接触的案例,如下恶意文件会从资源获取16个字节数据作为密钥,便于后续进行解密。

27d3d7163ff65d31651f809b2c3ac90b.png

经过下面的逻辑进而解密会得到新的PE文件(此时都发生在内存中),如下。

2525773debfa36649b5787c33ca050b3.png

da0d306bb7f7693f56c3a0a0a14b22a6.png

这里先自行提取下便于后续判定,提取的PE文件分析后为.NET平台的dll文件,如下。5370058aecce1409d913faa8dfd33e3d.png

5083b4af2343ac719d403acb9bd719c1.png

接着往下分析,发现会内存加载dll并反射调用执行dll中的LOLY()方法,如下。

48c4d5f8fad1f20307d4f74930a3a1f5.png

de3383d9cc66458f2d1c2ca7d9168602.png

1cf61f1995592a14834cbfb1a53a583d.png

将上面提取的dll进行本地反编译,查看下dll文件内容,如下。

9387fd8062b7c2440e703c532998e6fa.png

确实存在入口点方法,如下。

4544f55cb039dc2b1f34bffc79bb6836.png

接下来,就可以直接一步步单步步入调试进入dll区域内,进入到入口点,如下。

38669d1eaeaf960096c239e586de0b5a.png

之后的调试不再叙述,基本上是与之前进行分析时一样的步骤。

场景二

被调试的母体文件非.NET平台程序,而由于缺少标准入口点,dnSpy不允许本地调试dll,此时就需要借助loader进行调试。首先我们可以想到,ollydbg是如何调试dll文件的?其实会发现工具自身会加载一个loader进行辅助调试,调用dll里的导出方法或者断点停在dll入口区域。

f33fc85d7af7341f6b7cd5e5327f15a0.png

如果是需要调试.NET平台dll文件,可能需要自行写一个.NET平台的loader,然后根据具体需要修改要调用的导出方法。本着不重复造轮子(其实是不太会写代码)的思想,于是网上搜了下,发现了如下工具(具体更多内容可以自行访问项目地址查看,这里不再过多介绍)。

hexfati / SharpDllLoader:一个简单的C#可执行文件,它调用任意C#DLL的任意方法。

https://github.com/hexfati/SharpDllLoader

下载到本地后,找到sln解决方案文件打开。

69a0888d09de1ac48f29f12b217f5945.png

9a4dd2d31add724bd4d73ed7e60af79f.png

这里有一个坑是如果调试的dll为32位环境,则需要将项目编译成x86架构。

c0b18147db4ed17babce3d83e66692c2.png

443373be60e54c101aa609c05f24bec7.png

使用dnSpy打开上述编译完成的exe文件,找到入口点,如下。

6b2bbb45490740009d149b0d5938f2a5.png

设置好断点,启动调试。

afd5bdbd42dfc7995949531f3a69f3b0.png

a770326a7efa2caa879d8243961df43f.png

参数部分填写的格式为:

-d "C:\Users\onion\Desktop\phone\pe.dll" -c LOLY -m LOLY

-d 后接需要调试的dll的绝对路径

-c 表示该dll的调试的类

-m 表示该dll调试的实际方法

选择中断到入口点,如下。

1c2ccfa1b9ab8970577be11ace737561.png

bff8d603b8d9c3a73d894e9cc6a89acd.png

68869c11a6e91b6e7bec4fbe62f3cb5b.png

b28ddc303fa87aa6c5dc13702b9077b6.png

2d6efe0c50fe7c57a6c1effd681cf40a.png

f8ccaddbf5cc0e578f522b12d9ef50a6.png

一步步单步就可以进入dll领空,如下。

d63277cf99641013916befb1f1972beb.png

9772ed235dfe30614add57ca38c59469.png

之后的调试与普通的调试.NET平台恶意文件一致,这里不再继续叙述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值