吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 6576|回复: 140

[原创逆向图文] 简单逆向某平台驱动

  [复制链接]
Very_good 发表于 2022-3-29 22:40 | 显示全部楼层 |阅读模式

emmm  今天在玩某平台的时候,发现重启电脑后驱动会自动加载(并没有运行平台),我就发现这是一个很流氓的行为,因为你不知道他驱动在干些啥,于是决定简单逆向一下
用到的工具:IDA,PChunter,CE

首先定位驱动入口,将驱动dump出来,首先看一下入口

入口.png

说实话IDA这个默认配色还是看得不太舒服,上CE看吧,后边的图除了反编译的图我都用ce

入口 ce.png

这个就舒服太多了,很明显可以看到入口被vm了

既然被vm了索性就不分析入口了

我们首先看看驱动干了啥吧   用ark工具也就是pchunter来看

创建了三个系统回调用来收集信息 分别是进程,线程,最后一个比较少见,跟图片有关,盲猜是截图或者是检测透视窗口的

系统回调.png

创建了一个obj钩子  一般都是用来保护游戏,防止被第三方读写

SSDT.png

我就只分析一个进程的吧,要具体分析太杂太累,只是简单带过几笔

首先上IDA

1.png

这就是有关进程的回调,如果一句一句看,得累死

我们简单看看具体框架就行

我们很明显发现两条绿色的线,点进去F5看看

IDA1.png

很明显可以看到

  if ( !KeGetCurrentIrql() )
  {
    if ( a3 )
    {


就是这两个判断

在内核中,[tr]KeGetCurrentIrql()是[tr]返回当前的IRQL
[tr]

[tr]然后进行取反操作,也就是KeGetCurrentIrql()返回值为0时才往下执行。

再下来就是a3,a3为一个参数,这里应该是一个开关,而负责a3的应该是对战平台或者游戏,与驱动进行通讯修改a3的值

逆向思路:直接jmp,找到游戏或者平台通讯处,使其一直写入a3=0等等

一张一张图截图有点累,直接cv大法吧

if ( !KeGetCurrentIrql() )
  {
    if ( a3 )
    {
      Process = 0i64;
      ProcessHandle = 0i64;
      v11 = 0;
      P = 0i64;
      if ( PsLookupProcessByProcessId(a2, &Process) >= 0 )// 返回指向进程的EPROCESS结构的引用指针
      {
        if ( ObOpenObjectByPointer(Process, 0x200u, 0i64, 0, 0i64, 0, &ProcessHandle) >= 0 )// 返回对象的句柄
        {
          if ( ZwQueryInformationProcess(       // 收集进程信息
                 ProcessHandle,
                 ProcessBasicInformation,
                 ProcessInformation,
                 0x30u,
                 &ReturnLength) >= 0 )
          {
            _mm_lfence();


一直到这里   下面

if ( (int)sub_FFFFF8028D19D748(a2, &P) >= 0 )

我们进入这个函数看看

__int64 __fastcall sub_FFFFF8028D19D748(void *a1, PVOID *a2)
{
  NTSTATUS v3; // ebx
  PVOID PoolWithTag; // rax
  PEPROCESS Process; // [rsp+40h] [rbp-18h] BYREF
  ULONG ProcessInformationLength; // [rsp+70h] [rbp+18h] BYREF
  HANDLE ProcessHandle; // [rsp+78h] [rbp+20h] BYREF

  v3 = PsLookupProcessByProcessId(a1, &Process);
  if ( v3 >= 0 )
  {
    v3 = ObOpenObjectByPointer(Process, 0, 0i64, 0, 0i64, 0, &ProcessHandle);
    if ( v3 >= 0 )
    {
      v3 = ZwQueryInformationProcess(ProcessHandle, ProcessImageFileName, 0i64, 0, &ProcessInformationLength);
      if ( v3 == -1073741820 )
      {
        PoolWithTag = ExAllocatePoolWithTag(NonPagedPool, ProcessInformationLength, 0x66667061u);
        *a2 = PoolWithTag;
        if ( PoolWithTag )
        {
          v3 = ZwQueryInformationProcess(
                 ProcessHandle,
                 ProcessImageFileName,
                 PoolWithTag,
                 ProcessInformationLength,
                 &ProcessInformationLength);
          if ( v3 < 0 )
          {
            ExFreePoolWithTag(*a2, 0x66667061u);
            *a2 = 0i64;
          }
        }
      }
      ZwClose(ProcessHandle);
    }
    ObfDereferenceObject(Process);
  }
  return (unsigned int)v3;
}


没什么好看的,主要是看一下

  if ( v3 == -1073741820 )

v3是ZwQueryInformationProcess的返回值

在ZwQueryInformationProcess的返回值中-1073741820也就是  STATUS_INFO_LENGTH_MISMATCH  输入参数长度不匹配

也就是说这个函数是检测ZwQueryInformationProcess状态的

下边到分析完感觉也没有什么地方要单独拎出来将  直接cv分析结果把

游客,如果您要查看本帖隐藏内容请回复



其他几个地方就不分析了,知道了他的执行过程,逆向就很简单了,有很多可以过掉这个的方法

具体也不多说了,想分析的朋友可以自己去分析一下,这只是驱动层,他平台或者游戏本身也有检测的

那个比较简单,挂钩一些重要的函数即可。

最后祝大家身体健康,疫情期间勤带口罩少外出,也希望疫情早点结束

评分

参与人数 50威望 +1 HB +67 THX +27 收起 理由
夏日暖阳 + 1
柠檬丶螃蟹 + 1
消逝的过去 + 1
白丁老师 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
一生最爱白开水 + 1
爱编 + 5 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
花盗睡鼠 + 2 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
stdbot + 1
虚心学习 + 1
Cerolluo + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
459121520 + 1
WolfKing + 1
尘埃阿 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
后学真 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
丰明泽 + 1
yexing + 1
爱汇编爱汇编 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
图神魄 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
风里去 + 1 [吾爱汇编论坛52HB.COM]-学逆向防逆向,知进攻懂防守!
车太震 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
Wayne + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
zyyujq + 1
zg2600 + 1
xgbnapsua + 2
liugu0hai + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
小菜虫 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
thunderiser + 1
我是好人 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
新买的车 + 1
我是大新手 + 2 + 1
baobeitom + 1
涡流忍者 + 1 【违规行为】请查阅http://www.52hb.com/thread-116-1-1.html
云心飞雨 + 1
sihh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
红豆 + 1
ldljlzw + 1
努力实现自由 + 1 + 1
吾爱笑 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
zwj00544 + 1 + 1
孟宝桦 + 1 + 1
playboy + 1
Hackers + 2 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
temp + 1 + 1
weiran324 + 1 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!
jun6577 + 2 + 1
三月十六 + 1
莣孒嬡沵芣蓜 + 6 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
逆君 + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
Shark恒 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
jESuY 发表于 2022-3-29 22:42 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
NkjsCOYQeKqH 发表于 2022-3-29 22:51 | 显示全部楼层

火前留名!我相信一定会火!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
tiEo943 发表于 2022-3-29 23:05 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
VXBlSUP138 发表于 2022-3-29 23:10 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
aDzvkl 发表于 2022-3-29 23:28 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
oYmfLF8 发表于 2022-3-29 23:34 | 显示全部楼层

回复,顶帖,赚币,谢谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
KrvHoE6 发表于 2022-3-29 23:34 | 显示全部楼层

被标题吸引进来了,回复看看
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
KcthLpNC593 发表于 2022-3-29 23:55 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
zwVqG0972 发表于 2022-3-30 00:00 | 显示全部楼层

感谢楼主
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表