首页
社区
课程
招聘
[原创]强制卸载DLL
发表于: 2020-7-3 06:28 5723

[原创]强制卸载DLL

2020-7-3 06:28
5723

俺某天劫持“dbghelp.dll”后,想要卸载自己,发现无法进行卸载操作,搜寻无果后,便有了此文。

FreeLibrary
LdrUnloadDll

逆向得知,调用函数会减少引用计次
位置在于 PLDR_MODULE -> LoadCount

获得PLDR_MODULE,设置 LoadCount(引用计次) 为 1
发现还是无法卸载,继续跟进函数
初步判断可能在PLDR_MODULE结构中某个成员
查阅PLDR_MODULE相关资料,发现最全的结构

在结构命名上无法找到有用的信息
最终继续逆向,发现
如果 [PLDR_MODULE + 0x50]+0x1C 不等于 0
则模块不可卸载

测试解决了无法卸载的问题


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 3545
活跃值: (4679)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
建议多看MSDN上说的很清楚
https://docs.microsoft.com/en-us/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulehandleexa
GET_MODULE_HANDLE_EX_FLAG_PIN 
2020-7-3 06:51
0
雪    币: 2229
活跃值: (3762)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
3
哈?你真的了解,帖子实现的功能吗?
俺可以,不用此函数实现锁定模块,不可卸载状态
2020-7-3 19:45
0
雪    币: 688
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有用的模块系统不给卸载,
没用的模块,系统也不会不给你卸载,
那么问题来了,强制卸载是什么概念?就是一个找死的概念咯.
你这样强制卸载和直接抹除有什么区别,直接将模块所在内存填0不行么?
既然有用的,你还卸载,就是找死,而事实上,你这样卸载也是必死的.
楼主对自己实现了这个找死的方式感觉非常自豪,实在看不懂现在的人.
2020-7-4 13:21
0
雪    币: 2229
活跃值: (3762)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
5
flarejune 有用的模块系统不给卸载, 没用的模块,系统也不会不给你卸载, 那么问题来了,强制卸载是什么概念?就是一个找死的概念咯. 你这样强制卸载和直接抹除有什么区别,直接将模块所在内存填0不行么? 既然 ...
这就是杠精了,你不用不代表别人没有用
只是你想不到有什么用而已罢了
2020-7-5 08:25
1
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
逍遥m 这就是杠精了,你不用不代表别人没有用 只是你想不到有什么用而已罢了
尊 尼 获 加
2020-7-5 12:22
0
游客
登录 | 注册 方可回帖
返回
//