汇编中push 0x*** retn表示跳转到某个地址继续执行

取消hook时会在多线程环境中可能被检测

去掉函数框架可以规避寄存器cpu前后状态监测

#pragma comment(linker,"/SECTION:.text,ERW") //编译器允许代码可写

#include <iostream>
#include <Windows.h> //游戏功能函数
void func1()
{
MessageBoxA(0, "正常消息", "提示", MB_OK);
} void hookedproc()
{
MessageBoxA(0, "hook消息", "提示", MB_OK);
} void hookedproc1()
{ BYTE* lpfunc1 = (BYTE*)func1; lpfunc1[0] = 0x68; *(ULONG_PTR*)&lpfunc1[1] = (ULONG_PTR)hookedproc; lpfunc1[5] = 0xc3; } //void unhook用到了memcpy。入口函数恢复成原来状态即可。 void __declspec(naked) hookentry() //使hook前后cpu和寄存器的状态不变,规避检测。但是仍然不足,因为汇编代码已改变,即使unhook,也可能因为多线程调用函数而被检测
{
__asm
{
Pushfd
Pushad call hookedproc1 popad
popfd jmp func1
}
} //默认为游戏入口函数
int main()
{ hookentry(); return 0;
}

hook笔记①的更多相关文章

  1. Linux Hook 笔记

    相信很多人对"Hook"都不会陌生,其中文翻译为"钩子".在编程中, 钩子表示一个可以允许编程者插入自定义程序的地方,通常是打包好的程序中提供的接口. 比如,我 ...

  2. PLT hook笔记

    1. hook技术概述    hook技术是一种拦截用户函数调用的技术.通过hook技术可以实现统计用户对某些函数的调用次数,对函数注入新的功能的目标.在Linux平台,Hook技术可以分成用户和内核 ...

  3. hook笔记②

  4. 羽夏笔记——Hook攻防基础

    写在前面   本笔记是由本人独自整理出来的,图片来源于网络.本人非计算机专业,可能对本教程涉及的事物没有了解的足够深入,如有错误,欢迎批评指正. 如有好的建议,欢迎反馈.码字不易,如果本篇文章有帮助你 ...

  5. 孙鑫MFC学习笔记20:Hook编程

    1.HOOK拦截消息,设置越后的钩子优先级越高(钩子队列)2.SetWindowHookEx设置钩子    如果thread identifier为0或其他进程创建的线程,回调函数需要在动态链接库中声 ...

  6. CI框架源码阅读笔记6 扩展钩子 Hook.php

    CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...

  7. 我的Hook学习笔记

    关于Hook 一.基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序能够在上面设置子程以监视指定窗体的某种消息,并且所监视的窗体能够是其它进程所创建的.当消息到达后,在目标 ...

  8. CI框架源代码阅读笔记6 扩展钩子 Hook.php

    CI框架同意你在不改动系统核心代码的基础上加入或者更改系统的核心功能(如重写缓存.输出等). 比如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...

  9. [PyTorch 学习笔记] 5.2 Hook 函数与 CAM 算法

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson5/hook_fmap_vis.py https://gi ...

随机推荐

  1. .Net Core使用IdentityServer4

    官方文档https://identityserver4.readthedocs.io/en/latest/ 参考https://www.cnblogs.com/i3yuan/p/13843082.ht ...

  2. mysqld程序结构介绍

    说明:mysqld程序结构模型就是------> SQL语句的执行过程· 分为三大部分:连接层,SQL层,存储引擎层 #1.连接层功能 (1).TCP/IP或者Socket的连接方式    (2 ...

  3. [EF] - Entity Framework 6处理User Defined Function(UDF SQL Server)

    随着EF5的发布,新增了对数据库(SQL Server) UDF的支持,具体可以看以下的连接:https://msdn.microsoft.com/en-us/data/hh859577.aspx,新 ...

  4. redis错误解决

    第一次运行redis-server的时候闪退 win+R运行cmd打开命令行 进入redis根目录 输入 redis-server.exe redis.windows.conf 查看运行状态 此时如果 ...

  5. [数据库]000 - 🍳Sysbench 数据库压力测试工具

    000 - Sysbench 数据库压力测试工具 sysbench 是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有 ...

  6. java字符统计+字符串压缩

    要实习了.突然发现自己好像什么都不会,就去看看题吧.在网上看到一个字符串压缩的题.看了一眼,感觉用python很简单.一个for循环+字典就可以搞定. 但是呢,主要还是java.下面就用java来实现 ...

  7. JDBC学习(错误反思)

    注意拼写错误!!! 注意拼写错误!!! 注意拼写错误!!!  文档注释快捷键   alt+shift+J    

  8. Erlang那些事儿第3回之我是函数(fun),万物之源MFA

    Erlang代码到处都是模式匹配,这把屠龙刀可是Erlang的看家本领.独家绝学,之前在<Erlang那些事儿第1回之我是变量,一次赋值永不改变>文章提到过,Erlang一切皆是模式匹配. ...

  9. HDFS 修改默认副本数

    描述:将HDFS副本数修改为2第一步:将HDFS上已有文件副本数修改为2 hdfs dfs -setrep 2 -R -w / 第二步:修改dfs.replication值为2(页面上操作),然后重启 ...

  10. 手动修复 under-replicated blocks in HDFS

    解决方式步骤: 1.进入hdfs的pod kubectl get pod -o wide | grep hdfs kubectl exec -ti hadoop-hdfs-namenode-hdfs1 ...