[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。
这样定义就是个ascii字符串,而汇编里面是unicode。这才是问题的关键。
我把C++代码留给以后需要的人。下面是我写的C++代码,vs2019通过
[C++] 纯文本查看 复制代码
// 第13章 Hook技术 《加密与解密(第四版)》 // // 转载请保留作者信息 // //本程序中实现了一个简单的Hook引擎,可以通过更改下面的宏定义实现不同的InlineHook //定义如下结构,保存一次InlineHook所需要的信息 sub edx, eax // 因为JMP参数是函数地址的相对偏移,所以这里先减去老函数入口地址,再减5 //注意函数的定义和原始函数一定要一样,尤其是调用约定,否则函数返回后将出错 //当需要调用原始的MessageBox时,直接调用此函数即可,参数完全相同 //由于我们写入的Hook指令破坏了原函数开头的几条指令,所以将原来的指令复制到这里,在这里执行原函数的前几条指令 //获取指定模块中指定API的地址 这里计算一下要填充的指令 根据要HOOK的长度不同及现场保护的不同要求,可以采用不同的HOOK指令 通常远跳转最少要5字节,下面是常用的三种情况: 当要改变的指令长度大于以上时,可以使用nop来填充 //计算跳转偏移并写入