吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8018|回复: 16
收起左侧

[易语言 转载] 神奇的马甲Dll:用模拟Dll的思想来做马甲dll

[复制链接]
ps520 发表于 2011-6-7 23:20
本帖最后由 ps520 于 2011-6-7 23:22 编辑

首先向goldsun致敬~~感谢金太阳大人的指教

--------------------------------------
我们知道,在壳的保护中,有一个叫做Anti-Hook,也有叫虚拟Api的,就是通过壳自身Load程序所需函数,然后完成调用等工作
这样导致Hook找到的并非我们所执行的函数。而在马甲Dll上,我们是否可以通过这个思想来完成不模拟所有的劫持dll的接口也可以
马甲马甲呢?答案是肯定的。

首先将我的一点点拙见及实现代码贴一下,后面提供goldsun的一个方法:

由于我Hook的针对性,我只处理了LoadLibraryA,这样就导致通过LdrLoadDll(导入表就是调用这个函数,也是LoadLibraryA的原型)
加载的dll无法被模拟,如果你有相关资料,那么你可以完成更为深入的研究。

感谢吴涛老大设计的E语言API调用格式,让我们的Hook多了个GetProcAddress,正是这个函数让我们劫持非黑月程序更加方便(黑月直接添加的导入表)
首先请允许我简单介绍一下易语言API调用流程:
LoadLibraryA->GetProcAddress->存表,如果这里不处理将会提示没找到dll,我以前就是因为这个差点放弃相关研究
*注意,这个模式是通过E语言自带的API声明来调用DLL所特有的

介绍一下模拟Dll实现马甲DLL的思想吧:
我们知道Dll的函数被调用最终都要靠DLL的Handle来查找函数,也就是说如果我们把马甲dll的handle改成原始dll的handle,那么
函数查找时就会直接找原始dll的,而不是马甲dll的,这样我们就避免了去声明被模拟dll的函数,也省去了很多功夫。

那么我们应该怎么做呢?

首先,取自身(马甲dll)的handle,然后手工Load一下被劫持dll,获得handle。

然后Hook GetProcAddress\GetModuhandleA\LoadLibraryA(最好是Hook LdrLoadDll,因为这个可以实现通用)

当发现目标在调用这些函数试图获取被劫持dll信息时,我们直接将其handle等赋值为被劫持dll的信息。比如:
GetProcAddress(handle,"test")
handle换成被劫持dll的handle
这样程序就会去查被劫持对象,而不是查我们的马甲,这样就避免了马甲要声明很多API,尤其是模拟某些系统dll时,你们懂的……

具体的东西看代码:
.版本 2

hook1.安装 (“kernel32.dll”, “GetProcAddress”, &my_GetProcAddress)
hook2.安装 (“kernel32.dll”, “GetModuleHandleA”, &my_GetModuleHanleA)
handle [1] = LoadLibraryA (“test.dll”)
handle [2] = LoadLibraryA (“test1.dll”)
信息框 (“大哥,你确实执行的是我……”, 0, )




.版本 2

.子程序 my_GetProcAddress, 整数型
.参数 a, 整数型
.参数 b, 整数型

.判断开始 (a = handle [1])
    a = handle [2]
.默认

.判断结束
返回 (hook1.原函数 (a, b))




.版本 2

.子程序 my_GetModuleHanleA, 整数型
.参数 dllname, 整数型
.局部变量 temp, 文本型

temp = 指针到文本 (dllname)
.判断开始 (寻找文本 (到小写 (temp), “test.dll”, , 假) ≠ -1)
    返回 (handle [2])
.默认
    返回 (hook2.原函数 (dllname))
.判断结束
附带一份E语言的测试源码供各位喷血。。

goldsun的思想是:通过修改存储DLL handle的handlelist达到一劳永逸,不过这个涉及到很多PE相关的知识,我还木有达到那个级别……囧- -。只能研究到这里了。

    如果相逢只是为了失之交臂,我愿意倾尽一生等待那一个机会。
               越像,越证明不是。
               晓泪不懂妆浓,风清融入雨中。

桌面.rar

57.49 KB, 下载次数: 115, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1热心值 +1 收起 理由
qw78as45 + 1 楼主是个好人

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qw78as45 发表于 2011-6-7 23:27
=。=  好贴。。。有教程不
尘然枉逝 发表于 2011-6-7 23:36
 楼主| ps520 发表于 2011-6-7 23:49
09931419 发表于 2011-6-8 01:11
回复 ps520 的帖子

没有模块啊
65302666 发表于 2011-6-8 01:20
学习了         ···PE头的修改我看过一部分。【关于免杀的】。有点小烦···
qw78as45 发表于 2011-6-8 10:11
回复 ps520 的帖子

谢谢  我去学习
 楼主| ps520 发表于 2011-6-8 18:49
AnyHook之路还很漫长吶。。。。。
善意的小强 发表于 2011-6-8 23:43
谢谢分享
学习一下~
墙角の小风 发表于 2011-9-26 12:58
我表示看不懂!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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