逆向安全_HOOK

一.ShellCode

1.什么是ShellCode

不依赖环境,放到任何地方都可以执行的机器码

2.ShellCode的编写原则

<1>不能有全局变量
<2>不能使用常量字符串
<3>不能使用系统调用
<4>不能嵌套调用其他函数

二.HOOK攻防

(1)基本概念
<1>HOOK是用来获取、更改程序执行时的某些数据,或者是用于更改某些程序执行流程的一种技术
<2>HOOK的两种主要形式
1.改函数代码:INLINEHOOK
2.改函数地址:
IAT HOOK
SSDT HOOK
IDT HOOK
EAT HOOK
IRP HOOK
(2)常见形式

1.VirtualTable_Hook
2.IAT_Hook

改IAT导入表

3.INLINEHOOK

改程序执行的顺序
注:修改代码会占用更多字节需要补上
使用代码修改
(3)HOOK攻防常用手段
阶段一:
(防)检查JMP(E9)、检查跳转范围
(破)想法设法绕
阶段二:
(防)写个线程全代码校验/CRC校验
(破)修改检测代码(重点:找到检测代码的位置)、挂起检测线程
阶段三:
(防)先对相关API全代码校验,多线程互相检测,并检测线程是否在活动中
(破)使用瞬时钩子(挂钩子然后摘钩子)/硬件钩子

为心中的美好而战 : p

发布了42 篇原创文章 · 获赞 17 · 访问量 4990

猜你喜欢

转载自blog.csdn.net/weixin_45055269/article/details/104774524