首页
社区
课程
招聘
[原创]恶意代码分析之调试.NET平台dll
发表于: 2020-7-22 10:28 9336

[原创]恶意代码分析之调试.NET平台dll

2020-7-22 10:28
9336

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


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


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


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


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


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


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


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


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


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


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

https://github.com/hexfati/SharpDllLoader


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 7979
活跃值: (4739)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
分析好文章  收藏了 
2020-7-22 20:11
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
可以,学习了~~
2020-8-4 11:42
0
雪    币: 1195
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2020-8-4 12:00
0
雪    币: 3542
活跃值: (239)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
请问调用的方法参数如果是bytes数组怎么传入?
2020-8-18 16:28
0
雪    币: 1624
活跃值: (222)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
mark
2020-11-5 16:48
0
雪    币: 259
活跃值: (3475)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
7
如果要调试的dll中需要传入几个参数 这种情况也适用吗?
2020-12-20 11:16
0
雪    币: 919
活跃值: (1340)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
感觉有个缺点,就是这个DLL去使用原来EXE的资源,那么就只能自己编辑代码
2021-1-11 15:40
0
雪    币: 399
活跃值: (4117)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
9
感谢分享,帮了大忙了,如果需要参数和资源,自己改下源码就好了
2021-9-2 11:32
0
游客
登录 | 注册 方可回帖
返回
//