VC6.0蕉HOOK_timeGetTime 达到变速效果
注意这个 MytimeGetTime 函数内部的加速算法是有问题的,对有些进程只能加速,不能减速,减速后就会卡主。。。
本帖隐藏的内容
#include "StdAfx.h" //预处理文件放第一行 ,否则 有些函数 会报错
#include <windows.h>
#include <stdio.h>
DWORD dwAddrtimeGetTime; //保存真的timeGetTime函数地址
DWORD WINAPI MytimeGetTime(void)//自己写的假冒的api函数
{
// DWORD ret=2*GetTickCount(); //函数直接返回2倍加速、或3倍、4倍、
return 4*GetTickCount();//函数直接返回2倍加速、或3倍、4倍
}
//JMP跳转-自定义函数
void WriteJMP(DWORD ProcAddr,LPVOID lpData)
{
BYTE _data[5];//声明了一个字节数组_data,字节长度为5
_data[0]=0xE9;// 0xE9代表汇编指令JMP
DWORD OldPro;//声明了一个整数OldPro,保存原来的内存属性
VirtualProtect((LPVOID)(ProcAddr),5,PAGE_EXECUTE_READWRITE,&OldPro);
//VirtualProtect函数功能是修改内存属性
//第一个参数 ProcAddr 是真的API函数地址,这里作为内存地址看待
//第二个参数 5代表的是字节长度
//第三个参数 PAGE_EXECUTE_READWRITE 内存的属性设置为可读可写
//第四个参数 OldPro 保存原来的内存属性
//VirtualProtect的函数功能为:修改Api函数的内存属性-改为'可读可写
memcpy((LPVOID)(_data+1),lpData,4);//_data是变量的内存地址
// WriteProcessMemory 和 memcpy 功能是一样的都是修改内存,可以修改youxi内存也可以youxi变量的内存数据
//memcpy函数是功能是:修改内存
//第一个参数 内存地址
//第二个参数 可以是内存地址也可以具体的数值
//第三个参数 数据长度
//以上是填充 机器码字节数组data[1]...到 data[4]
// _data[0]= 0xE9; _data变量的的内存地址为(LPVOID)_data
// _data[1]= 0x70; _data变量的的内存地址为(LPVOID)_data+1
// _data[2]= 0xC7;
// _data[3]= 0xD4;
// _data[4]= 0x90;
memcpy((LPVOID)(ProcAddr),_data,5);
VirtualProtect((LPVOID)(ProcAddr),5,OldPro,&OldPro);//内存属性恢复为只读
}
//卸载HOOK -恢复timeGetTime函数头的5个字节
void UnHOOK(DWORD ProcAddr)
{
BYTE _data[5];//声明了一个字节数组_data,字节长度为5
DWORD OldPro;//声明了一个整数OldPro,保存原来的内存属性
VirtualProtect((LPVOID)(ProcAddr),5,PAGE_EXECUTE_READWRITE,&OldPro);
//修改内存属性为可读可写,修改长度为5,PAGE_EXECUTE_READWRITE表示可读可写
_data[0]= 0x83;
_data[1]= 0x3D;
_data[2]= 0x14;
_data[3]= 0x00;
_data[4]= 0xB3;
memcpy((LPVOID)(ProcAddr),_data,5);
//通过字节数组的形式把83,3D,14,00,B3原来的5个字节写入 真Api函数地址
VirtualProtect((LPVOID)(ProcAddr),5,OldPro,&OldPro);//内存属性恢复为只读
}
BOOL WINAPI DllMain(HINSTANCE hmodule,DWORD reason, LPVOID lpreserved)
{
if(reason==DLL_PROCESS_ATTACH)// 如果DLL被注入到其他进程,DLL_PROCESS_ATTACH表示注入DLL的时候
{
HMODULE hWsock32=GetModuleHandle("winmm.dll");//获取winmm.dll模块句柄
dwAddrtimeGetTime=(DWORD)GetProcAddress(hWsock32,"timeGetTime");//获取api函数timeGetTime真正的地址
DWORD tmp=(DWORD)MytimeGetTime-(dwAddrtimeGetTime+5);// 假冒的API函数地址的字节(一个4个字节)
//通过字节的形式来代表假冒api函数MytimeGetTime的地址 ,保存到变量tem里面
//公式:假冒的API函数地址的4个字节=My函数地址-(真的函数地址+5)
WriteJMP(dwAddrtimeGetTime,&tmp);//开始HOOK-修改timeGetTime函数头的5个字节
}
if(reason==DLL_PROCESS_DETACH)// 如果DLL被卸载, DLL_PROCESS_DETACH表示卸载DLL的时候
{
UnHOOK(dwAddrtimeGetTime);//卸载HOOK -恢复timeGetTime函数头的5个字节
}
return TRUE;
}
VC6.0蕉HOOK_timeGetTime 达到变速效果相关推荐
- 通过注册表修改VC6.0的字体【转】
2019独角兽企业重金招聘Python工程师标准>>> 在VC6.0下更改字体,我们一般通过菜单-Tools-Options-Format来更改 但在我的win7 64位系统下这一选 ...
- vc6.0 简易的tcp网络讲解(二)
至于为什么用vc6.0,我用的是xp系统,没钱 有错误请指出,本人业余的(所写的代码,尽量注释清楚)通过vc6.0的直接复制粘贴即可 (代码来源于网络, 仅供学习交流,严禁用于商业用途 ) 本人参考的 ...
- vc6.0 获取ip(一)
作为新手!自己学的东西太多怕自己忘记,就做记录了(主攻单片机类):博客的文章以单片机为主,上位机为辅 最近被物联网云服务器的协议搞的醉生醉死,就打算自己做一个小型的转发服务器,娱乐使用,打算用vc6. ...
- VC6.0 使用小结--让开发更加快捷的vc插件
1.VC6.0显示行号的插件 VC 6.0 没有显示行号的功能, 这个插件可以帮助显示行号, 效果不错 VC显示行号插件说明 ------------------------------------- ...
- 亲密接触VC6.0编译器
亲密接触VC6.0编译器 大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解.原因是多方面的.大多数情况下,我们只停留在"使用"它,而不会想去"了解" ...
- [转贴]从零开始学C++之STL(二):实现一个简单容器模板类Vec(模仿VC6.0 中 vector 的实现、vector 的容量capacity 增长问题)...
首先,vector 在VC 2008 中的实现比较复杂,虽然vector 的声明跟VC6.0 是一致的,如下: C++ Code 1 2 template < class _Ty, cla ...
- VC6.0建立控制台程序实现PDA应用
作者:iamlaosong 由于须要,又写起了文本界面的程序,以便PDA通过telnet连上运行. 假设是Linuxserver的话.这是非常easy的事,但是用户server是windows ser ...
- 在VC6.0中使用GDI+的两种办法
朱金灿 GDI+是GDI的升级版本.在VC6.0中并没有配备GDI+的相关文件.那么如何在VC6.0使用GDI+呢?我从网上搜索了一些资料,并结合自己的使用,总结出一下两种方法.下面我各建一个MFC工 ...
- VC6.0快捷键一览表
F1 显示帮助,如果光标停在代码的某个字符上,显示MSDN中相应的帮助内容 F2 书签功能: Ctrl+F2 –在某行设置一个书签(再按一次次是取消) F2 –跳到下一个书签位置 Shift+F2 – ...
最新文章
- 大牛程序员分享 Python基础学习笔记
- 深入分析SpringBoot源码如何内嵌Tomcat容器?
- 《Java8实战》笔记汇总
- 要闻君说:IBM最新量子计算机真真像个艺术品!鹅厂正式成立了自己的技术委员会哇!联想竟然也试着做了一款智能闹钟?...
- 把区块链作为核心技术自主创新重要突破口:华为云可以做什么?【华为云分享】
- opencv1-安装及资料
- 安装centos7步骤_Centos7下源码编译安装mysql5.7 详细步骤 小白也能安装
- 指针(Pointer)
- ListView中有Checkbox时的点击和选择问题
- BZOJ 3555 [CTSC2014] 企鹅QQ Hash
- Redis Command
- 我的Delphi开发经验谈(本人修改版) 收藏
- [微信支付]如何获取公众号AppID、AppSecret、商户号和商户API密钥
- 如何对全站进行死链接检测?
- 2019配电安规电子版_2018年配电安规.docx
- 黑客攻防专题九:菜鸟 Sa 注入=肉鸡
- 情感营销,如何打动消费者的心
- 产业链图谱:2021年中国5G产业链图谱|产业链全景图
- APP - 查询全国医院各科室排行榜(二)
- 年过35岁的程序员爆料:大龄程序员们的花样出路
热门文章
- response设置响应头
- plsql(轻量版)-存储函数存储过程
- 建造者模式源码解析(jdk-guava+mybatis)
- Dubbo支持的注册中心
- 计算机有残留office,电脑中无法安装Office2013删除残留文件的方法
- php flash chart,openflashchart 2.0 简单案例php版
- python程序文件扩展名有_python程序文件的扩展名称是什么
- 【重温基础】2.流程控制和错误处理
- chapter3.1封装和解构
- vue中的provide/inject的学习