本菜最近学习了什么DLL注入啊,hook啊(r3)的相关技术,觉得很好玩,于是深入发现还有DLL劫持这种东西觉得挺好玩的,加上最近看到各种木马分析报告中都还有发现有利用白加黑的现象。于是自己想找几个来玩玩,但是一个一个手动测试麻烦啊,于是想写个工具来测试目标是否存在DLL劫持漏洞的可能,于是就产生了写个工具的想法,上网一看,原来十年前都有大神写出来了,不过感觉有点麻烦,好多选项不知道干嘛的,加上本人只学了汇编和C,C++不太懂,平常都是做WINDOWS C编程,所以参考那位前辈的生成的代码改进成自己的,无奈不懂MFC ,他的源码我就没看,反正没事做,当作练练手,过程还真学了不少东西。可能有人说python三下五除二就出来。都说了无聊练习了,,,

PS:本工具只生成常规的winowds调用方式的DLL代码,还添加了列出目标进程存在DLL劫持可能性的DLL。

方便大家用来测试(sha)软(ren)件(fang)安(huo)全

大神不喜勿喷啊,有错误的或者需要改进的还望指出。

0x00 工具简介

名称:FakeLib

开发环境:VS 2013 、 win10 x64

开发语言:C  (纯windows sdk)

作者:josegh

0x01 功能和使用

有两种模式:

1.1 和aHeadLib一样,选择目标DLL直接生成这里我只生成常用的调用方式代码。

图 1-1

1.2 通过查看进程列表,选择一个你感兴趣的进程,然后列出其加载的且不在系统

注册表KnownDlls中的DLL,然后选择一个目标来生成代码。

1.2.1 选择侦察模式

图 1-2

1.2.2 选择你感兴趣的进程

图 1-3

1.2.3 选择目标DLL 生成代码

图 1-4

0x02 实际测试

2.1 测试获取主进程函数调用参数和返回值。这里我自己写了一个测试程序

2.1.1  正常 normal.dll,它导出一个函数

EXPORT DWORD add(DWORD a, DWORD b)

{

DWORD dwret = 0;

dwret = a + b;

return dwret;

}

2.1.2 一个正常的loader,去调用normal.dll的add函数

DWORD dwResult = 0;

DWORD a = 5, b = 6;

add = (DWORD)GetProcAddress(hDll, "add");

if (add != NULL)

{

dwResult = add(a, b);

printf_s("loader:%d + %d = %d\n\n", a, b, dwResult);

}

else

printf_s("loader:获取导出函数地址失败\n\n");

printf_s("loader:重新获取控制权\n\n");

2.1.3 用FakeLib工具去生成一个用来劫持的DLL利用代码

图 2-1

2.1.4 重点部分在生成的代码中添加获取参数和返回值的代码

void showArg(DWORD a, DWORD b)

{

printf_s("fake_dll:截取到参数:a:%d b:%d\n\n", a, b);

return;

}

void showRet(DWORD dwret)

{

printf_s("fake_dll:截取到返回值:%d\n\n ", dwret);

return;

}

///

//导出函数 1

DWORD c, d, dwret; //参数 a b,返回值dwret 在这里声明是为了不影响函数内部的堆栈

ALCDECL Fake_add()

{

//以下注释经过OD调试得出 编译环境:win10 x64 vs2013,

//一般情况下在这里为所欲为 注意堆栈平衡

__asm

{

push eax//保存eax 以防目标函数用来做参数

mov eax, [esp +0x08]//获取参数a

mov c,eax

mov eax, [esp + 0x0C] //获取参数b

mov d,eax

pop eax//恢eax

}

showArg(c, d);

//为什么不直接printf?printf是由调用者维护堆栈平衡,而我们现在这里的函数是naked声明的

//不对自动维护堆栈,需要我们,为了方便,我们直接把它放到一个会维护堆栈平衡的函数里边执行

//下边的同理

GetAddress("add");

//此时栈订保持的是返回地址,因为我们前面没有破坏堆栈

__asm pop dwRetaddress[1]

//弹出来,下面菜可以用call,为什么用call?因为如果用直接jmp的话 想获取执行返回值有点困难

__asm call eax

//把返回地址入栈,这时候就相当于原来的返回地址被我们call的下一条指令地址入栈,这样真实函数返回后我们重新夺回控制权

//一般情况下在这里继续为所欲为 注意堆栈平衡

__asm push eax //保存返回值

__asm mov dwret ,eax

showRet(dwret);

__asm pop eax

__asm jmp dword ptr dwRetaddress[1]//跳回原函数

}

///

现在我们把它改名为 normal_dll.dll 放到loader目录下,执行loader的效果:

(此前你需要把之前正常的normal_dll.dll换个名字 如normal_dll_hide.dll)

图 2-1

loader执行结果

图 2-3 执行结果

可以看到先是我们的dll获取到返回结果。

2.2

大家可以参考: http://www.freebuf.com/articles/78807.html

http://drops.wooyun.org/tips/13238#!

乌云上也有许多例子,大家可以自己去写个测试程序,或者直接找实际的应用来测试

0x03 总结

如果只是方便自己,我也许不会把工具的代码写得工整(自认为算是最工整的一次 - -),也不会去写界面程序。开始写导出函数的时候用的是常规的dllexport,运行的时候发现问题有点多,用OD调试发现原因是堆栈问题(菜得抠脚啊

),都打算用生成汇编的算了,后面才发现有naked这种玩意,于是本着能用c就用用c的原则,最后还是选择生成c代码的方式。也算是涨姿势了。还有一点点小功能没添加,比如刷新什么的。

还有,感觉自己菜得抠脚啊,有没有大神指点指点

0x04 使用注意

有时候不能列出目标DLL,应该是权限问题。

源代码:

demoSrc.rar

工具Src.rar

上传的附件:

1.png

(17.14kb,91次下载)

2.png

(15.21kb,49次下载)

3.png

(50.06kb,49次下载)

4.png

(62.72kb,56次下载)

2-3.png

(12.07kb,45次下载)

2-5.png

(5.42kb,154次下载)

2-6.png

(10.51kb,47次下载)

fi.png

(6.09kb,70次下载)

demoSrc.rar

(2.41kb,2029次下载)

工具Src.rar

(36.64kb,2766次下载)

c语言劫持dll写法,[原创]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析相关推荐

  1. mysql db模块下载_易语言MySql数据库操作类V1.0模块源码

    易语言MySql数据库操作类V1.0模块源码 易语言MySql数据库操作类V1.0模块源码 系统结构:MySql数据库连接类_测试子程序,置连接选项,连接,关闭,是否已连接,取连接句柄,置连接句柄,执 ...

  2. php备份漏洞源码,原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更

    原标题:原创|从 PHP Git 源码的查找导致 PHP 安全漏洞的代码变更 前言 2020年好,各位 PHPer 们,很久没有写原创文章了,心里实在过意不去,决定写点文字,"从心" ...

  3. 价值4500的国际版多语言点赞抖音分享点赞任务平台源码(十二种语言)

    介绍: 平台会员分享给我的,他自己搭建成功了,测试可用!我就不测试了,需要的拿! 九种语言 :西班牙语,泰语.日语,印度尼西亚语言.越南语言.英文.繁体中文,简体中文,印度语 前台支持更换5种颜色风格 ...

  4. C语言课设-----工资管理系统(附全部源码)

    C语言课设-----工资管理系统(附全部源码) 本系统分三个部分: 1.出售金鱼 2.数字菱形 3.工资管理系统 (ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更 ...

  5. c语言打印空心数字图形,(完整word版)C语言编写打印实心和空心菱形【源码】

    <(完整word版)C语言编写打印实心和空心菱形[源码]>由会员分享,可在线阅读,更多相关<(完整word版)C语言编写打印实心和空心菱形[源码](13页珍藏版)>请在人人文库 ...

  6. 易语言免登录获取QQ/昵称/头像/在线状态源码

    易语言免登陆获取q资料卡的源码. 例子: 取得登录q  获取状态:在线 昵称 x7st 获取本人描述等 没有调用第三方接口,纯QQpost稳定,需要的可以下载查看 下载地址:https://6yunp ...

  7. 网站SEO文章伪原创在线生成网站源码 PHP源码

    介绍: SEO文章在线伪原创网站源码 SEO在线伪原创工具 php伪原创程序 在线同义词交换工具源码 伪原创代写网站源码下载 根源码经过一周的二次开发,功用是在线SEO伪原创,源码无破绽没有任何问题, ...

  8. 网站SEO文章伪原创在线生成网站源码 【PHP源码】

    介绍: SEO文章在线伪原创网站源码SEO在线伪原创工具 php伪原创程序 在线同义词交换工具源码伪原创代写网站源码下载 根源码经过一周的二次开发,功用是在线SEO伪原创,源码无破绽没有任何问题,工具 ...

  9. 基于低级键盘钩子的dota改键(全局+免DLL注入)MFC实现(源码+总结)

    上一篇文章已经写了基于 普通键盘钩子(单线程+DLL)来实现dota改键.http://blog.csdn.net/a576323437/article/details/8037138 这一次,基于 ...

最新文章

  1. Asp.net Core1.1创建简单WebAPI对Mongodb进行CRUD操作
  2. JavaScript入门第一天,js教程,js变量, 数据类型,数据转换,隐式转换
  3. .NET Framework源码研究系列之---Delegate
  4. 六款小巧的HTTP Server[C语言] - 贵贵的博客 - 开发|架构|开源|共享
  5. B. Box Fitting
  6. 类加载器 jboss_JBoss AS 7类加载说明
  7. 如何隐藏 video 元素的下载按钮
  8. 实现运动轨迹_【自动驾驶】运动规划丨速度规划丨时间维度
  9. 关于mysql保存数据的时候报问题分析
  10. 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
  11. HDU 1862 EXCEL次序 (排序水问题)
  12. 【预测模型-RBF】基于径向基神经网络实现数据分类附matlab代码
  13. 灵格斯怎么屏幕取词_灵格斯词霸怎么用?灵格斯词霸使用手册
  14. 人声分离攻破“鸡尾酒会”效应,将为语音识别带来哪些新可能?
  15. 配对交易之统计套利配对:介绍
  16. ECTouch多语言插件,ECSHOP手机版多语言翻译,ecshop手机端多国语言翻译切换,ECSHOP网站多语言切换
  17. #2020 UI/UX设计趋势
  18. 传统图像去噪方法(三)之非局部均值去噪(NLM)
  19. LAMP平台QQ农场
  20. sql执行顺序及性能优化

热门文章

  1. 04特性源码分析-ReentrantReadWriteLock原理-AQS-并发编程(Java)
  2. Window 7和 server 2003系统下载
  3. 计算机动画设计与影视制作,计算机动画设计及制作中的特效技术
  4. EditPlus中文版-具有 FTP、FTPS 和 sftp 功能的文本编辑器
  5. 《Java从入门到项目实战(全程视频版)》(李兴华 著)【配套资源及赠送资源】
  6. python可视化图表生成(二)
  7. Windows 7系统盘清理
  8. 软件测试工程师零基础入门指南
  9. 2019 年博客总结
  10. 淘云互动机器人_淘云互动app机器人