C++ 计算文件指定位置 rof,再计算 vaof
功能代码:
int get_PE_feature_rof(string path_r,int codeArr[],int codeCtrl[],int len){// 打开文件ifstream in = ifstream(path_r, ios::binary);if (!in.is_open()){cout << "文件打开失败:" << GetLastError() << endl;in.close();return 0;}// 获取文件大小、文件名long long Beg = in.tellg();in.seekg(0, ios::end);long long End = in.tellg();long long fileSize = End - Beg;in.seekg(0, ios::beg);// 读文件(每次循环读取 1 字节)int byteBeenRead = 0; // 已经读取的字节数unsigned char temp; // 存放读取内容的缓冲区 int rof_feature = 0; // 特征 ROFint codeArrSub = 0; // 要对比的 codeArr[] 下标BOOL isFound = FALSE; // 是否找到特征int cmpAllReady = 0; // 已经对比特征的次数while (in.read((char*)&temp, 1)/* && isFound == FALSE*/){byteBeenRead++;// 读 1 字节int hex = (unsigned)temp;// 控制码为0 则比较下一个if(codeCtrl[codeArrSub] == 0){codeArrSub++;// 是否比较完毕if(codeArrSub == len){cout << "find rof" << endl;rof_feature = byteBeenRead - len;isFound = TRUE;break;}continue;}// 匹配到一个特征if(hex == codeArr[codeArrSub]){codeArrSub++;// 是否比较完毕if(codeArrSub == len){cout << "find rof" << endl;rof_feature = byteBeenRead - len;isFound = TRUE;break;}continue;}// 匹配失败else{codeArrSub=0;continue;}}//cout << "rof_feature = " << hex << rof_feature << endl;in.close();return rof_feature;
}
调用例子:
int codeArr_lea_win7[] = {0x48,0x8d,0x0d,0x37,0x41,0xdc,0xff,0x45,0x33,0xc0,0x48,0x8b,0xd7,0x48,0x8d,0x0c,0xd9,0xe8,0x98,0x54,0xf7,0xff,0x84,0xc0,0x75,0x11,0xff,0xc3,0x83,0xfb,0x40,0x72,0xdf,0x48,0x8b,0xcf,0xe8,0x65,0xd8,0xf7,0xff,0xeb,0xcc
};
int codeCtrl_lea_win7[] = {1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1
};int rof_lea = get_PE_feature_rof("C:\\Windows\\SysNative\\ntoskrnl.exe",codeArr_lea_win7,codeCtrl_lea_win7,43);
延申,根据 rof 计算 vaof
假设我们已经拿到了 ROF = 0x3d3f60
观察区段表:
因为 0x3d3f60
,大于 0x235000
小于 0x46ec00
所以处于 PAGE 区段
根据公式 vaof = 我们的rof - 所属区段rof + 所属区段va
在这里也就是:
vaof = 0x3d3f60 - 0x235000 + 0x2be000;
拿到 vaof 后,再加上驱动基地址就能得到对应未公开 API 再内核中的内存地址。
C++ 计算文件指定位置 rof,再计算 vaof相关推荐
- php 文件指定位置添加内容,C++_VC++在TXT文件指定位置追加内容的方法,本文实例讲述了VC++操作文本文 - phpStudy...
VC++在TXT文件指定位置追加内容的方法 本文实例讲述了VC++操作文本文件的方法,实现在txt文件指定位置插入内容.对于VC++爱好者有一定的学习参考价值. 主要功能代码如下: void CGoT ...
- 计算Dataframe指定位置上的分位数:df.quantile()
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] 计算Dataframe指定位置上的分位数 df.quantile() 选择题 关于以下代码说 ...
- FME写入Excel数据时写到模板文件指定位置
在写入Excel数据时写到模板文件指定位置 介绍 本示例对 Excel 写模块参数概述一文进行了扩展.在该示例中,您学习了如何更新模板文件指定的单元格. 使用 FME,您可以重写 RawData 工作 ...
- python把光标定义到指定的位置并删除之前的字符_python 批量修改预定字符串并将修改后的字符串插入文件指定位置...
下面的例子是在文件的指定位置增加指定字符串的例子 修改配置文件: def add_str(pre_str): lines =[] flag= Truef= open("z.txt" ...
- python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...
- python awk 读文件_测试python awk sed 读取文件指定位置时的性能
#!/bin/env python #coding:utf8 ''' awk 打印指定行数 sed 打印指定行数 python 打印指定位置,某长度字符串 awk 耗时最长,很长 sed awk 时间 ...
- python 文件指定位置写入-Python从文件中读取指定的行以及在文件指定位置写入...
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 :This is line 1. Thi ...
- python指定位置写入文件_Python从文件中读取指定的行以及在文件指定位置写入
Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 : This is line 1. Th ...
- C#中计算流指定位置和长度的MD5值
在Microsoft .NET Framework 2.0中,计算MD5值可以用到System.Security.Cryptography.MD5CryptoServiceProvider类,其计算M ...
最新文章
- java jdk下载过慢 解决方案
- mysql connector bin_mysql-connector-java-xxx-bin.jar包的使用
- 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )
- windows下挂载ext4_WSL2 支持挂载物理磁盘,Windows 可直接访问 ext4
- jsonobject修改key的值_修改JSONArray里所有key的值
- 使用jenkins进行项目的自动构建部署
- 【教程】E103-W10无线串口服务器TCP协议与PC连接收发数据详解!
- VS2010 快捷键 (空格显示 绿点, Tab 显示箭头)
- gan 总结 数据增强_吴恩达Deeplearning.ai国庆上新:GAN专项课程
- 中国计量大学研究生复试c语言_中国计量大学2020考研招调剂生,25个专业
- hdu 5402 Travelling Salesman Problem (技巧,未写完)
- python游戏源代码下载_python小游戏源代码_python游戏项目
- VMware虚拟机无法识别U盘解决方案
- 外部表不是预期的格式-excel
- C++中的typeid关键字
- Android中获取GPS搜索到的卫星颗数、并获取每颗卫星的信噪比
- linux系统时间显示错误的是,教你解决linux操作系统时间错误
- C语言指针中P、*P、P、**P的区别
- 数据仓库维度建模——事实表设计
- 逃离迷宫 c++ bfs(中南大学考研机试题
热门文章
- 基于java贫困学生信息跟踪管理系统
- [易飞]供应商料件特殊检验方式优先级大于检验方式
- 多级放大电路耦合方式的优缺点
- 2021年优秀信创解决方案名单公布,艺赛旗成功入选
- 直升机总体优化设计优秀论文集
- python中ch是什么_Python中的函数
- 头文件的内容以及如何引用头文件
- 计算机科学与技术专业职业规划范文,计算机科学与技术专业职业生涯规划书范文...
- 如何查看google浏览器的信息
- 论文阅读 | BMBC:Bilateral Motion Estimation with Bilateral Cost Volume for Video Interpolation