看流星社区

 找回密码
 注册账号
查看: 2604|回复: 1

关于hook api偷代码 的防御方法

[复制链接]

该用户从未签到

发表于 2013-3-26 09:46:24 | 显示全部楼层 |阅读模式
最近发现偷代码这话题很热闹..也来凑热闹一下。


方法很多。
理论上来说,用API自己防御好,比用 汇编写内存字节集来的安全。


1.从获取api函数头入手。
=================
大部分HOOK API,要得到API函数头位置吧?

模块句柄=GetModuleHandleA("kernel32.dll")
函数地址 = GetProcAddress (模块句柄, “WriteProcessMemory”)

可以自己改造GetProcAddress,做一个过滤。这样大部分小菜偷代码根本得不到 WriteProcessMemory位置。


2.给函数做自校验,或者直接把整个kernel32.dll的内存做一个校验。
================
CreateToolhelp32Snapshot
Module32First
Module32Next
组合,得到kernel32.dll的
modBaseAddr//地址
modBaseSize//大小
一开始就就
读内存字节集(modBaseAddr,modBaseSize) 存个全局变量。

读写重要代码的时候,重新读一遍。比较是否一致。


3.直接保护kernel32.dll
PROCESS_VM_OPERATION 开进程,NtProtectVirtualMemory直接把kernel32.dll保护。
还有这个,VirtualProtectEx也可以。方法很多的。

================================
题外话.
除了HOOK API偷代码..最强大的应该是冷月的那个全局不可写入。然后等你写入出错。利用出错位置找你写的东西。
真心强大,虽然防御的方法有.制造了很多负担.
1.在取进程pid时,别被假的"目标程序"骗了,多做一些筛选条件。
2.写入前,用快照api判定下是否被保护。

以上处理完,对付菜鸟偷代码基本够用。对付大牛..r0hook也只是永无休止的攻防战了。

该用户从未签到

发表于 2013-3-26 14:30:28 | 显示全部楼层
不错,支持一个
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 18:33

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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