简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希
最近看到 一个 样本 ,里面有键盘 按键记录的功能 ,而且 实现也比较 简单,运行 记录 的效果还 不错 。主要思路如下 :
//假代码 int i=0;for(i=0;i<0x100;i++){GetKeyState(i);//参考:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeystate//如果有按键 记录,就去获取一些相关信息//当前时间 ,活动窗口名等一起记录}
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$x64 下,虚拟地址转换物理地址:
***应用层虚拟地址转换
1,在windbg中找到对应进程的DirBase
2,根据 9-9-9-9-12(pml4-pd-pt-ptd)规则,对虚拟地址进行切割,然后读取相应的内容,最后定位到物理地址。
实测例子:
进程为DbgView.exe,进程的ImageBase=0x4000000;DirBase=0x303e0000
下面查找0x400000对应的物理地址:
对虚拟地址进行切割得到偏移为0-0-2-0-0
pml4=*((qword*)0x303e000+0*8)=0xa000000`045ec867 ,取页起始地址0x45ec000
pd=*((qword*)0x45ec000+0*8)=0xa000000`5a16d867 ,取页起始地址0x5a16d000
pt=*((qword*)0x5a16d000+2*8)=0xa000000`0686f867 ,取页起始地址0x686f000
pte=*((qword*))0x686f000+0*8)=0x81000000`45b78025 ,取页起始地址0x45b78000
PhysicalAddress=0x45b78000+0=0x45b78000
可以看到物理地址和虚拟地址内容是一致的。
***内核中虚拟地址转换
内核中的虚拟地址转物理地址与应用层原理是一致的,唯一的区别在于内核中的虚拟地址都属于system。
生成随机字符串
ULONG times = 0x10;char* GetRandString()
{//随机因子ULONGLONG seed = GetTickCount()+times;//基字符串CHAR RandString[MAX_PATH] = "aiebdcefgh\0";CHAR* temp = NULL;//长度随机化int i = seed%4+strlen(RandString)-4;RandString[i] = 0x0;while (i>0){//内容随机化RandString[i-1] += seed % (i+2);i--;}{temp = (CHAR*)malloc(MAX_PATH);if (temp){memset(temp, 0, MAX_PATH);strcat_s(temp,MAX_PATH, RandString);}}//times++;return temp;
}
计算字符串哈希
//
// 计算字符串的hash
//
//注意64/32指针长度
ULONG CalStringHash(char* a1)
{ULONG result; // raxchar v2; // cl ULONG v3; // edxresult = (unsigned __int64)a1;if (a1){v2 = *a1;v3 = 0;while (v2){v3 ^= 0XF673B679 * v2;v2 = *(BYTE*)++result;}result = v3;}return result;
}
简单的键盘按键记录(无码)/虚拟地址转物理地址/生成随机字符串/计算字符串哈希相关推荐
- delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收
delphi XE模拟Android手机PDA设备的虚拟键盘按键及扫码过程输入焦点及信号接收 今天,群里有几位同学讨论这个问题,汇总了一下,分享出来,供同学们学习研究. 一.直接上代码示例 1.屏蔽应 ...
- html 按键检测,js如何检测键盘按键的ascii码?
本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. 每个键盘上的按键都对应一个ascii码,包括鼠标左键,右键,中键都是有ascii码的.具体的码值是什么,实践出 ...
- 记录键盘按键记录程序实现
1.编写键盘记录钩子的DLL函数 2.编写主程序调用DLL文件 一. 在vc6.0新建一个名字为hodll的MFC Appwizard DLL工程 在hodll.h文件里面//main symbols ...
- 学习记录:Unity点击屏幕生成随机UI花朵
1 效果展示 点击屏幕的位置生成花朵,生成的花朵等5秒后自动销毁. 2 代码展示 1 生成花朵的代码 using System.Collections; using System.Collection ...
- 【无码专区2】序列划分(数学)
有std,但是没有自我实现,所以是无码专区 description 完全由数字组成的字符串 sss,划分成若干段,每一段看成一个十进制的数(允许前导零)求有多少种划分方法使得相邻两个数至少一个是 DD ...
- 键盘按键响应时间越快越好吗_【涨姿势】按键无冲、响应延时、键盘调速……你会看机械键盘参数指标吗?...
除了手感之外,快速响应与按键无冲对于机械键盘也十分重要.但对于许多新手玩家而言,不同键轴的手感是实实在在可以体验到的,但快速响应与按键无冲突却是一个大家少有了解的知识.今天将为广大玩家着重讲解按键响应 ...
- 基于FPGA的 矩阵键盘按键识别 【原理+源码】
目录 引言 原理阐述 实现方法 源码分享 板级调试演示 引言 最近了解了矩阵键盘扫描的原理,动手实现了一下,在这里做一个简单的总结. 原理阐述 矩阵键盘典型电路: FPGA的应用电路: 其中,行信号为 ...
- 键盘的扫描码虚拟码概念 常见Windows键盘按键虚拟码
'当用户按下某个键时, ' 1.键盘会检测到这个动作,并通过键盘控制器把扫描码(scan code)传送到计算机: ' 键盘扫描码跟具体的硬件有关的,不同厂商对同一个键的扫描码有可能不同. ...
- 【无码专区1】简单路径的第二大边权(启发式合并+最小生成树)
只有std,没有自我实现,所以叫做无码专区 description 给一张无向图,多次询问,每次询问两个点之间所有简单路径(不重复经过点)中边权第二大(不是严格第二大)的权值的最小值. 数据范围:10 ...
最新文章
- Linux下编辑器vi/vim的使用介绍
- maven指定构建的编码格式
- linux教程期末考试,Linux-期末考试试题8套含答案.doc
- 风林火山最新系统win11 32位旗舰版v2021.07
- union的限制, 临时表大小的优化
- VC++多线程工作笔记0001---认识与创建线程
- 部署NEP-5智能合约 (第1部分)
- java创建一个不可变对象_如何在Java中创建不可变类?
- 如何使用Wondershare UniConverter应用效果并调整音量
- 关于GPS坐标系和地图定位偏差
- windows查看md5命令
- 从高德地图获取城市地铁线路+站点
- 在html用vue组件,html页面引入vue组件
- 2017年上半年软件设计师考试真题及答案(上午+下午)免费
- 由两个曲面确定的交线的切向量求解
- 大公司都在用的招聘分析模型,会EXCEL就行,白嫖党不要错过
- 初识计算机网络||概述
- 【HTML】讲讲HTML5视频播放的方式
- 诺禾:和Java一样能用汉字编程的神奇语言
- android 手机超频降频秘籍