鱼C论坛

 找回密码
 立即注册
查看: 3191|回复: 0

一个inlinehook代码有点看不懂可以直接写inlinehook特别是pcode的赋值

[复制链接]
发表于 2013-10-19 20:24:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
VOID Recoveryhook(PVOID address,PUCHAR code,ULONG codelenth)
{
__asm
{
  cli
   mov eax, cr0
   and eax,not 0x10000
   mov cr0,eax

}
RtlCopyMemory(address,code,codelenth);
__asm
{

  mov eax ,cr0
   or eax, 0x10000
   mov cr0,eax
   sti

}
}

VOID HOOK(PVOID addres ,ULONG Funaddr,PUCHAR presecode, ULONG presecodelength)
{
KdBreakPoint();
PULONG pcode ;
UCHAR JmpCode[] = {0xe9,0x00,0x00,0x00,0x00};  //jmp到你要跳到的地址
RtlCopyMemory(presecode,addres, presecodelength);//参数1保存以前的代码
presecode [presecodelength] = 0xe9;      
pcode = (PULONG)((ULONG)presecode  + presecodelength +1);

*pcode = (ULONG)addres - (ULONG)presecode - 5;  
pcode = (PULONG)((ULONG )JmpCode +1);
*pcode =(ULONG)Funaddr - (ULONG)addres - 5;  //跳Funaddr
Recoveryhook(addres,JmpCode,5);   //将jmpcode的值赋值到addr中去 5个字节      
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 18:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表