开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 9509|回复: 15
收起左侧

[技术专题] 巧用DLL劫持做黑盒分析

[复制链接]
结帖率:100% (1/1)
发表于 2020-8-29 16:43:39 | 显示全部楼层 |阅读模式   山东省烟台市
前言
之前因需分析某加了SE壳的易语言程序。
从哪里入手?
对于这种加了vmp壳
而分析价值又不高的目标
首先想到的不应是如何还原
而是通过黑盒方式分析其原理
当然这种方式对于纯粹的算法程序就无计可施了
该程序文件结构如下:
程序.exe
v8.dll
一般来说
易语言程序很少会调用dll
从名字上看 v8.dll 的作用是为了让程序能跟 js 交互
在IDA中查看导出表也能很快验证之前的猜想
那么目标就确定了
虽然不能很快的分析源程序
但是可以较为容易的获得 ExecJavaScriptV8 的参数
从而得到一些便于分析的内容
DLL劫持
原理说起来也很简单
通过伪造一个 v8.dll替换掉原 v8.dll
然后在 新v8.dll中将所有导出函数转回 原v8.dll
那么就可以在源码层面去控制导出函数了
这种方式可能会被文件效验的方式检测
本程序中不存在文件效验
本文也不打算讲如何绕过文件效验
此时新的文件结构应如下:
程序.exe
v8.dll
v8Org.dll

AheadLib
要生成一个转发dll
最快的方式莫过于使用 AheadLib
其中AheadLib存在两个常见的版本
本文这个 v8.dll 是一个复杂的 c++ 程序
在AheadLib-x86-x64 直接拖入会崩溃
在AheadLib +中没有什么问题
只是在生成即时调用时
生成的代码有问题
如果可以直接生成即时调用
那本文也就到此结束了
另外AheadLib-x86-x64生成的代码框架要优于AheadLib +
这里我采用的方法是用AheadLib + 先生成一份 v8Org.cpp
编译之
得到一个新的 v8.dll
再将刚刚生成的v8.dll拖入AheadLib +
如此一来便可得到新的 v8.cpp
由于生成的代码是使用的 pragma 预处理指令进行转发
#pragma comment(linker, "xxxx")[url=][/url]
故用 新dll 和 原dll 生成是没有区别的
在新代码生成后
新dll 就没用了

hook
与其称之为hook,实际上就是普通的接管了
通过阅读load函数
得知需要将 原dll 重命名为 v8org.dll
开始接管 ExecJavaScriptV8
注意 AheadLib_ExecJavaScriptV8 是裸函数
注意 /EXPORT:ExecJavaScriptV8=_AheadLib_ExecJavaScriptV8 有个下划线代表是内部函数
其中 @3 代表该函数有3个参数
实际这个函数是__thiscall
但是查看参数不需要理会 this 指针
网上搜一下
很容易找到原型
前两个参数是 char*
第三个是 BOOL

char* text;

ALCDECL AheadLib_ExecJavaScriptV8(void)

{

  // 获取参数一

  __asm {

    push[esp + 0x8]

    pop[text]

  }

  // 输出 text -- 省略

  __asm JMP pfnExecJavaScriptV8;

}
[url=][/url]
最终
提取了其js
及调用的相关函数
对后续分析提供了莫大帮助
总结
有时候碰到问题
不能看到钉子就去找锤子
也许你仅仅需要一块板砖


IF0P[0]G_1`D@ZK]GYI00YF.png

点评

看来下次要在主程序加载一下对调用dll的sha1特征验证了   四川省成都市  发表于 2020-9-4 16:09

评分

参与人数 3好评 +3 精币 +10 收起 理由
44944 + 1 + 2 感谢分享,很给力!~
Ossian + 1 + 3 新技能已get√
冰点 + 1 + 5 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

  • · 好帖|主题: 1229, 订阅: 43
结帖率:86% (6/7)
发表于 2020-10-1 09:24:05 | 显示全部楼层   四川省遂宁市
学习打卡
回复 支持 反对

使用道具 举报

发表于 2020-9-27 14:30:50 | 显示全部楼层   吉林省长春市
大佬厉害!!!
回复 支持 反对

使用道具 举报

发表于 2020-9-19 00:30:05 | 显示全部楼层   江苏省南京市
哭了,我用Aheadlib的时候,他说我的是破电脑
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2020-8-30 11:48:18 | 显示全部楼层   湖南省长沙市
思路        
回复 支持 反对

使用道具 举报

结帖率:0% (0/3)
发表于 2020-8-30 09:48:27 | 显示全部楼层   黑龙江省哈尔滨市
666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:96% (24/25)

签到天数: 1 天

发表于 2020-8-30 09:17:57 | 显示全部楼层   保留地址
B
回复 支持 反对

使用道具 举报

结帖率:75% (18/24)

签到天数: 8 天

发表于 2020-8-30 09:04:10 | 显示全部楼层   河北省石家庄市
陈大奶么么哒 发表于 2020-8-29 22:58
看来下次放JS的时候 也不能直接放常量里了

这跟你是不是在常量里面没关系  
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2020-8-30 06:51:57 | 显示全部楼层   广东省惠州市
膜拜大佬
回复 支持 反对

使用道具 举报

结帖率:69% (45/65)

签到天数: 18 天

发表于 2020-8-29 22:58:44 | 显示全部楼层   江苏省无锡市
看来下次放JS的时候 也不能直接放常量里了
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2020-8-29 21:26:25 | 显示全部楼层   山东省烟台市

谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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