前言:

逆一些东西,有点收获,就写篇随笔记录一下。因为写的随便,就不发看雪了。
今天一个朋友给我发了一个说是可以过TP的注入驱动,希望我逆一下看看是什么套路。

正文:

接收过来压缩包,看了一下

loadddll32和64分别是用在32和64的驱动,MemOpe和dnf.exe都是测试用例(不过我是用自己写的123.exe进行测试)。

先跑起来,看看线程和模块上有没有什么特别的地方

有一个线程Pchunter标红,而且“模块”那里没有,很可疑,先记下。
进程模块这里出现了注入的MemOpe.dll,看来不是内存加载。

为了减小干扰,先试试把“驱动级别的dll注入器.exe”进程强关了,看驱动还有没有效果。
测试了下仍可以正常注入。说明整个注入过程全由驱动完成,其加载驱动的exe不参与。

由于是x86sys程序,x64dbg用不上,只好拿IDA
(顺便吐槽一下,之前尝试用windbg动态调试看看。那用的叫一个难受,单步1步,windbg的反汇编窗口卡1秒。watch窗口也看不了一些[ebp-xx]之类的变量数据,可能是我还不会用)

代码很干净,函数很少。先看看输入表。
注意框起来的API,看到这几个api。我想到了ssdt,attach进程,创建线程,设置模块加载回调,申请r3内存空间。
接下来看看都有什么操作。
1.和加载驱动的exe通信,获取目标进程名和要注入的dll路径
2.设置模块加载回调

再看看回调里面有什么东西

3.判断LoadImage的进程是不是目标进程>>判断加载的模块是不是ntdll.dll>>开一个内核线程
注意这个ntdll

再来看看内核线程执行的函数里面有什么

4.Attach到目标进程(之前Pchunter看到的标红线程应该就是这个原因)
取R3和R0的ZwProtectVirtualMemory,ZwWriteVirtualMemory,ZwReadVirtualMemory,ZwQueryVirtualMemory,LdrLoadDll(无R0),ZwTestAlert(无R0) 地址
5.往目标进程申请一片full_access内存放shellcode,并对其用到的API地址进行重定位,同时对ntdll!ZwTestAlert下了一个HOOK,用来跳转到自己的shellcode
(一个进程被Create,ntdll最先加载,再由其加载kernel,user等其他系统DLL。由于ntdll上的线程会经过ntdll!ZwTestAlert这个API,所以对其下Hook来跳转执行自己的shellcode实现DLL加载)

效果图:

总结一下大致流程:

1.目标进程创建>>
2.驱动通过Load_Image回调发现目标进程及其Ntdll>>
3.对其Ntdll线程必经的ntdll!ZwTestAlert下Hook,同时写入shellcode>>
4.Ntdll线程经过ntdll!ZwTestAlert并跳转到shellcode>>
5.执行LdrLoadDll加载目标DLL>>
6.DLL注入完成

尾声:

感谢xjun前辈的指点

(小声bb一句,这全是破绽的驱动注入能过TP,我觉得TP真是放水了。。。)
说实话,一开始逆的时候。逆到那个Shellcode操作的地方,怎么都看不明白,还以为注入是靠的内核线程attach了目标进程,然后亲自调用了什么API才注入的。这里看不懂,就只能先看其他函数,全部看遍了也没有相关的API和操作。没办法,试试windbg,动态看看对shellcode的操作。。。结果怎么样,前面也吐槽了。
最后还是配合着看线程环境(看到注入dll的是ntdll模块上的线程),看目标进程里的shellcode才分析出来具体原理。

虽然很想发到看雪,不过拙文一篇,就不去献丑了。权当是自娱自乐了

逆向随笔——对可以过TP的注入驱动的一次逆向相关推荐

  1. 【逆向】【Part 3】DLL注入

    目录 一.通过自制调试器来理解其原理 1.调试器的工作原理 实现反汇编功能(重点) 重点分析exception_debug_event 重点:1.对调试器程序增加异常处理操作功能,核心API, CON ...

  2. 171031 逆向-以CM41为例进行Dll注入(下)

    1625-5 王子昂 总结<2017年10月31日> [连续第396天总结] A. Dll注入收尾 B. 今天主要需要完成的是根据进程名自动搜索pid.错误检查和注出Dll的功能 首先是P ...

  3. 【JS 逆向百例】无限 debugger 绕过,某网站互动数据逆向

    文章目录 声明 逆向目标 逆向过程 绕过无限 debugger 1.Never pause here 2. Add conditional breakpoint 3.中间人拦截替换无限 debug 函 ...

  4. 【JS 逆向百例】复杂的登录过程,最新微博登录逆向

    文章目录 声明 逆向目标 登录流程 1.预登陆 2.获取加密后的密码 3.获取 token 4.获取加密后的账号 5.发送验证码 6.校验验证码 7.访问 redirect url 8.访问 cros ...

  5. TP屏幕适配--驱动篇

    文章目录 前言 硬件构成 TP原理 主要硬件组成 通讯流程 引脚配置 通讯方式(IIC) 中断初始化 TP屏幕逻辑主线程 TP触屏信息进行记录和上报 读取TP触屏信息并解析 TP触屏信息进行分析处理 ...

  6. 高通平台TP和LCD 驱动Porting流程

    ELAN 6730 高通820 8996平台Porting手册 1.Touch porting 创建Touch驱动文件夹 cd android/kernel/msm-3.18/drivers/inpu ...

  7. 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )

    文章目录 一.编译注入工具 二.编译结果文件说明 三.注入过程说明 一.编译注入工具 在 Visual Studio 2019 中打开了一个 " 生成文件项目 " , 该项目就是注 ...

  8. 【Android 逆向】Android 进程注入工具开发 ( SO 进程注入环境及 root 权限获取 | 进程注入时序分析 )

    文章目录 一.SO 进程注入环境及 root 权限获取 二.进程注入时序分析 一.SO 进程注入环境及 root 权限获取 SO 注入的前提必须有 root 权限 , 有了 root 权限后 , 才能 ...

  9. [免费专栏] Android安全之静态逆向APK应用浅析「手动注入smali」+「IDA Pro静态分析so文件」+「IDA Pro基础使用讲解」

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

最新文章

  1. 前端每周清单第 50 期: AngularJS and Long Term Support, Web 安全二三论
  2. Intellij IDEA 2018.2 搭建Spring Boot 应用
  3. 《税务登记管理办法》
  4. python shell怎么调字体_Python3设置在shell脚本中自动补全功能的方法
  5. JAVA开发工具整理
  6. 0与1世界的初级编程篇之C语言
  7. 消息队列mysql redis那个好_Redis与RabbitMQ作为消息队列的比较
  8. 这个温州人,是中国开店最多的炸鸡王者
  9. Firefox 和 Chrome 性能测试对比
  10. Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)
  11. HBase-TDG Architecture
  12. display:inline-block间隙产生的原因以及解决方案
  13. python mysql到处excel
  14. 数字序列中某一位的数字
  15. .NET破解之谷歌地图下载助手-睿智版
  16. Base64编码及应用
  17. c语言蠕虫病毒源码,蠕虫病毒源码!附带解毒源码!
  18. creator贴图纹理压缩(creator2.4.x 实现ETC2和ASTC)
  19. unity vr是加一个摄像机就行吗_梦工厂和皮克斯员工创办的Baobab谈互动叙事:传统动画与VR动画的探索...
  20. win7 破解后找不到活动分区以及bootmsr missing

热门文章

  1. 亚马逊本土化视频拍摄-合规化的白帽运营玩法
  2. 远程登录Linux服务器
  3. 研究报告|25W以上的高端新能源车KOL爱谁谁?
  4. 网站架构设计发展路径学习
  5. 如何压缩PDF文件?这3个PDF在线压缩工具免费又好用!
  6. virtualbox + 统信uos
  7. python乒乓球比赛规则介绍_乒乓球比赛规则常识大全
  8. 一种基于Visio替代软件的绘图方案
  9. pythonista3中文设置教程_Pythonista中文文档:使用Pythonista
  10. idea 公共方法抽取快捷键