好友
阅读权限40
听众
最后登录1970-1-1
|
介绍 :本源码介绍了Api Inline Hook的妙用,通过Api Hook被动找到编译器加载我们Dll的时候,然后自己内存加载,避免被OD等调试器查到Dll。
该技术的原理很简单,不过实现需要Hook的Api比较多,因为采用了虚拟Api,原有Api查找dll很吃力,Hook了3个函数:
GetModuleHandleA
GetProcProcess
LoadLibraryExA
作用当然是模拟了整个加载过程以及函数处理
不知道是易语言的问题还是神马,总之Hook了这3个以后才能正常执行,汗颜。。。。
例程演示了以下内容:
1.智能虚拟API
2.使用原来的api声明,照样可以调用dll,避免了一个一个的写call,麻烦!
只需启动执行一行代码:Install_Hide()即可搞定所有问题咯~!
UpDate To V1.1.0.0 :
增加SDK配套演示,进行了一些简单的升级。
修正了一些概念,增加了UnInstall_Hide功能,用于释放资源。该功能使用后
将自动释放已经被虚拟的dll部分,并且释放所有钩子。
针对先前版本出现的未知异常进行修复,目前测试版本无异常问题。
名称:智能虚拟Api模块
作者:ps520[LCG]&[UpK]&[DFJG]&[SyS]
功能:
所有经由LoadLibraryExA(LoadLibraryA)加载的dll,如果在本代码执行之前未被加载,将被自动
虚拟化加载。
目的:
替换凌月保护插件.ec中不给力的2个API保护函数。
描述:
通过InlineHook挂接3个api函数:
1.LoadLibraryExA(LoadLibraryA)
2.GetModuleHandleA
3.GetProcAddress
分别实现功能。
LoadLibraryExA:获得所需加载的库地址
GetModuleHandleA:拦截Api调取,通过查表的形式找到已经存储在内存中的DllHandle。
GetProcAddress:模拟GetProcAddress,主要是系统函数太不给力了,必须稍微模拟下。[代码貌似写复杂了,可以直接用我内置的汇编函数返回]
基本流程就是这样:
LoadLibraryA转向自己的函数,函数内模拟dll,并把相关信息填充到一个表里,表里有dll name和dll handle。
GetModuleHandleA判断是否为自己虚拟化的函数,如果是,返回handle。
GetProcAddress被调用后,主要是用来强化一下API的能力,否则找不到我的Api函数。
一点都不难的模块,写了我三年,蛋疼了我三个月。完成直接放源码得了。你懂的
附加带源码了,模块是李光的apihook,感谢baby修正了一个错误
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|