pc微信hook原理
发布网友
发布时间:2022-09-22 23:54
我来回答
共1个回答
热心网友
时间:2024-11-30 13:51
Pc微信HOOK的完成大概分成两部分
内存HOOK
内存Call调用
内存HOOK的简单介绍
Hook又被简称为钩子 是在软件没有在调用改函数的之前 就先捕获HOOK到该消息 并跳到我们写的执行函数里执行流程操作.
内存Call
CALL是汇编中的一个指令,CPU执行这条指令会执行2个动作 一:压入EIP入栈 二:跳转到后面的地址. 跟RETN指令配合就实现了汇编中子程序的作用,通常我们常说的写CALL就是 调用游戏中已经存在的功能子程序.
比如说
viod myadd (int a, int b)
{
int c=a+b;
}
这是一个简单的子程序,当我们用程序语言调用那么就是 myadd(5,4);
而在汇编里则是
push 4
push 5
call myadd
编译好的程序不会存在什么函数变量和子程序. 只有1和0 . 所以编译器会给myadd 分配一个地址.在反汇编里就是
push 4
push 5
call ********
CALL ******* 并不单单就是子程序的调用,他还可以调用 函数 API.
如函数 send
send(
socket;
buf;
len;
flags;
)
在汇编里调用就是
push flags
push len
push buf
push socket
call send
参数在反汇编里表现形式.
在汇编或反汇编里参数都是压入堆栈来供CALL调用的.而CALL以[ESP+*]的形式读取参数.
如:
viod myadd(int a,int b)
{
int c=a+b
}
myadd(4,5);
在反汇编参数 4 和参数 5 在反汇编里的实现形式是
push 5
push 4
call ********
探讨交流请加 var qq = '2974520784';