每日看点!代码混淆与反混淆学习-第二弹
deflat脚本链接:GitHub - cq674350529/deflat: use angr to deobfuscation
deflat 脚本测试这里以代码混淆与反混淆学习-第一弹中的OLLVM 混淆样本为例进行去除。【LLVM-4.0】
(相关资料图)
控制流平坦前 | 控制流平坦后 |
---|---|
python deflat.py --file main-bcf --addr 0x401180
deflat.py 成功去除后效果:
去混淆后,效果还算可以,能分析程序流程了。
deflat 脚本分析【angr】利用符号执行去除控制流平坦化 - 博客 - 腾讯安全应急响应中心 (tencent.com)
angr documentation
利用angr符号执行去除控制流平坦化 - 0x401RevTrain-Tools (bluesadi.github.io)
序言:函数的第一个执行的基本块主(子)分发器:控制程序跳转到下一个待执行的基本块retn块:函数出口真实块:混淆前的基本块,程序真正执行工作的版块预处理器:跳转到主分发器如第一弹中分析:OLLVM 的控制流平坦化是将程序的一般逻辑划分为很多个真实执行的块,然后通过分发器进行链接。其实就是一个Switch结构,每次执行完真实块后,进行预处理,再跳转到主分发器,继续分发,最终达到平坦化的效果。
显然,去控制流平坦化就是要找到真实块间的跳转逻辑,打破Switch结构束缚。
具体来说,有如下步骤:
静态分析CFG得到序言/入口块、主分发器、子分发器/无用块、真实块、预分发器和返回块。利用符号执行恢复真实块的前后关系,重建控制流根据第二步重建的控制流Patch程序,输出恢复后的可执行文件静态分析首先明确:【以下结论针对OLLVM项目,其他大佬加料的OLLVM混淆还需要单独分析】
函数的开始地址为序言的地址序言的后继为主分发器后继为主分发器的块为预处理器后继为预处理器的块为真实块无后继的块为retn块剩下的为无用块angr 获取类似Ida的 CFG
获取真实块、主分发器、预处理器、序言、retn块和无用块
获取真实块的细节
利用angr 强大的符号执行功能,找到各真实块的连接逻辑。
这里对于两个分支的模拟执行,只需关注cmov
指令,就可以分别对应得到eax、ecx,然后获得后续真实块。【局限性很大】
符号执行 symbolic_execution()
函数,返回后继真实块。
如此便完成了 deflat脚本的简单处理分析。
小结分析下来,其实就是定位到所有真实块,然后利用angr符号执行将真实块间的执行逻辑进行串联。最后进行patch程序,重建控制流。
但显然存在一些问题,我们默认了如下规则:
函数的开始地址为序言的地址序言的后继为主分发器后继为主分发器的块为预处理器后继为预处理器的块为真实块无后继的块为retn块剩下的为无用块但是在实际去除控制流平坦化过程中,上面的默认思路已经被加混淆的开发者做了处理。
例如:
后继为预处理器的块不一定是真实块;预处理器不一定存在;存在分支的真实块跳转的判断逻辑,不一定是cmov
指令;deflat脚本默认模拟执行最多两个分支,但真实情况可能不只两个分支;可能存在一个向前更新的数组,依据程序运行进行更新,决定当前真实块的跳转【这导致angr对于该块的模拟执行得不到正确的跳转】程序在加混淆前,已经被添加了花指令或其他处理,程序CFG图
已经被打破;某个块存在死循环,会使angr符号执行卡死……这也导致了,这个deflat脚本的普适性较低,除了能够处理OLLVM官方项目做的混淆,对加了其他PASS或者处理的混淆,基本用不了。
所以对于去除不了的OLLVM混淆,我们需要根据程序的实际混淆效果,对deflat脚本进行修改,再进行去混淆。
【这也要求对deflat 脚本比较熟悉,可以更快上手】
失败的花指令控制流平坦化尝试使用代码混淆与反混淆学习-第一弹中加了花指令的程序,进行OLLVM控制流平坦化混淆,看看效果。
源代码如下:
# clang 执行内联汇编加 -fasm-blocks 或者 -fms-extensions 或者 -masm=intelclang -mllvm -fla -mllvm -split -mllvm -split_num=3 main-call-加花.cpp -lm -fasm-blocks -o main-call-加花# 需要对源代码作一些修改
存在较大的问题,我的OLLVM 环境是在Ubuntu上搭建的,对于上述内联汇编加的花指令无法编译通过!
【或许可以在Windows 上移植OLLVM,进行编译(好像挺难的)】
可以看到,花指令用到的标签、$ 出现报错。
【最终也没解决编译问题,或许本就不可以,ollvm 不具备这样的处理能力,也可能是我代码的问题,如果博客前的你有任何想法,欢迎与我交流】
TSCTF-J 2022-upx_revenge实战分析TSCTF-J 2022 WP
对upx_revenge
题目进行分析。
首先直接使用deflat 脚本。
python deflat.py --file upx_revenge_test --addr 0x4016D0
发现没有找到retn 块。
处理多个retn块回到ida 查看cfg 图发现原因:存在其他的退出块。
这里需要改进deflat 脚本,使其存在很多retn块。
# 其他位置的retn_node,对应改为list处理if supergraph.out_degree(node) == 0: retn_node.append(node)
成功运行,但是去除效果不行。
去除后CFG图 |
---|
很明显看出,程序的真实块间的逻辑串联失败,也就是重建控制流失败。
产生原因
显然,这里存在2个分支,因为有两个cmov
【相同判断】,并且call 函数,对分支跳转是有作用的,这里var_CC是顺序执行,动态更新的。
【deflat 脚本只处理了执行有一个cmov
指令的情况,且hook了call函数】
【由于var_CC是顺序执行,动态更新也可以看出,deflat 脚本的模拟执行思路已经无法对真实块的后继进行确定了】
但这里做个测试,不hook call 看是什么效果。
可以知道,取消hook call 对真实块后继的查找毫无影响,这是因为deflat中的模拟执行,只是基于comv
处的模拟。对前文并无任何关联。
显然,该deflat脚本的无法处理了。【】
总结angr就upx_revenge这道题而言,
deflat 脚本中angr 对局部的模拟执行显然无法获取真实块间的执行顺序,重建控制流显然也无从谈起。当然静态查找各个控制流平坦化的功能块效果还是可以的。
那么如何通过angr,有序的、联系上文地进行模拟执行,获取真实块的执行逻辑,显然是关键点!
【??? 后续学习了,有思路再更新】
unicorn[原创]ARM64 OLLVM反混淆-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com (kanxue.com)
Unicorn反混淆:恢复被OLLVM保护的程序(一) - 简书 (jianshu.com)
使用unicorn 模拟执行框架获取真实块间的执行顺序,重建控制流。
【还没学过 unicorn 使用,,,】
ida使用IDA microcode去除ollvm混淆(上) - 先知社区 (aliyun.com)
GitHub - PShocker/de-ollvm: IDA Python Script for anti ollvm
利用ida 现成的CFG 图,以及idc 脚本,动态运行程序,获取真实块的执行顺序,从而恢复控制流。
关键词:
- 每日看点!代码混淆与反混淆学习-第二弹(2023-04-09 17:34:28)
- 【全球快播报】暴跌7300亿,多头杀疯了!(2023-04-09 16:58:21)
- 非洲广西上林淘金帮,过刀尖舔血生活,有人资产上亿有人魂归异乡(2023-04-09 16:55:24)
- 实时:国铁集团:一季度全国铁路固定资产投资同比增长6.6%(2023-04-09 15:46:08)
- 医药高新区(高港区)新获200亿元信贷支持(2023-04-09 15:57:51)
- 工行“巨贪”顾国明落马:敛财1.36亿,坐拥32个女下属,结局舒适(2023-04-09 15:44:06)
- 每日动态!新能源时代来临,银行推分期购车,又一批新能源车和充电桩运抵仰光(2023-04-09 15:54:57)
- “乍暖还寒”易受流感侵袭,如何用连花清瘟对症治疗(2023-04-09 15:36:58)
- 【世界独家】紧急提醒!假的!假的!(2023-04-09 14:46:55)
- 资深老股民:炒股买卖顺口溜,朗朗上口,盘中默念就做好股票!(2023-04-09 15:01:35)
- 全球速讯:“数据中心+算力”风口热潮,4只真正的液冷温控概念股,有望走妖(2023-04-09 14:43:24)
- 世界观点:大单压盘“不移动”,是洗盘还是出货?股市老鸟为大家详尽解答!(2023-04-09 15:04:49)
- 焦点滚动:邀请函 | 2023非洲开发银行商业机会研讨会(2023-04-09 15:05:31)
- 【天天新视野】猫咪睡觉时为什么把身体蜷成团?猫咪睡觉的位置代表什么(2023-04-09 13:54:08)
- 中国股市:警惕K线一枝独秀的形态,识别庄家精心设置的诱多陷阱(2023-04-09 13:49:38)
- 中国股市:股票被套,应该离场还是硬扛?散户不要再犯这样的错误(2023-04-09 13:56:28)
- 全球快看点丨中国股市:具备爆发上涨空间的“四朵金花”,值得大家收藏研究!(2023-04-09 13:51:28)
- 男子欠信用卡19万,入狱3年滚到115万,银行称一分都不能少(2023-04-09 13:56:40)
- 县级人民银行全部撤销,那么多的员工怎么办?直接下岗失业?(2023-04-09 13:52:32)
- 环球今日报丨曾经年入30亿的民族品牌突然倒塌,原因至今扑朔迷离(2023-04-09 13:39:15)
- 渝论 | 银行“反向抹零”,谁给的权力?(2023-04-09 13:00:48)
- 【当前独家】收益高达6%,还能减税的个人养老金,为什么感觉大家都不买账?(2023-04-09 12:50:10)
- 天天快报!突然爆了!林俊杰巨亏90%?这个市场彻底崩盘!此前更有爆仓传闻 这些明星也踩雷(2023-04-09 12:03:55)
- 当前关注:摩根大通做空黄金的传闻是真是假?黄金后期走势如何?(2023-04-09 11:52:52)
- 保险巨头最新布局!加速养老产业发展,全国版图初步成形!运营模式生变(2023-04-09 11:53:49)
- 当前快讯:非农数据强化加息预期 美国银行业风险挥之不去(2023-04-09 11:47:30)
- 每日看点!特斯拉员工被曝传阅客户车内私密图像;国美辟谣员工贷款上班传闻;阿里版ChatGPT邀请测试丨邦早报(2023-04-09 11:58:59)
- 今日热门!毕马威和高盛等因硅谷银行关闭被起诉(2023-04-09 11:00:48)
- 环球新消息丨Feign 接口的继承(2023-04-09 10:11:31)
- 【聚看点】暴雷的,可能暴雷的,不会暴雷的|李子曰(2023-04-09 09:50:05)
-
焦点滚动:邀请函 | 2023非洲开发银行商业
各有关单位:为帮助客户更好了解非洲开发银行的产品和服务,促进项目合作,非洲开发银...
-
【天天新视野】猫咪睡觉时为什么把身体蜷成
猫咪在生活中较为常见,因其性情温和且可爱是时下最受人们喜爱的宠物之一,但很多人在...
-
中国股市:警惕K线一枝独秀的形态,识别庄
投资需要正确地思考盈利和亏损,盈利了要明白这是市场对你用心付出的回报,亏损了要明...
-
中国股市:股票被套,应该离场还是硬扛?散
做一个幸福的散户是很容易办到的是要有一颗平常心,要以一种投资的心态入市,虽然股民...
-
全球快看点丨中国股市:具备爆发上涨空间的
股票市场不创造财富,人们财富的升值是来源于于另一方的失误,不一样股票于同一股票需...
-
男子欠信用卡19万,入狱3年滚到115万,银行
浙江杭州,男子信用卡欠款19万,可却在3年后利滚利变成115万,如此天价利息,连高利贷...
-
县级人民银行全部撤销,那么多的员工怎么办
我国相关部门公布的公务员缩招的消息让很多在职的公务员惴惴不安,他们认为自己可能要...
-
环球今日报丨曾经年入30亿的民族品牌突然倒
文|华商韬略6002023年3月,随着湖南株洲公安局原副局长凌娅的投案自首,13年前的太子奶...
-
渝论 | 银行“反向抹零”,谁给的权力?
取钱时0 94元被银行“反向抹零”?近日,河南驻马店一名男子去银行取钱时发现,有0 9...
-
【当前独家】收益高达6%,还能减税的个人养
每年的收益率高达6%以上,并且还能够减税的个人养老金制度,为什么感觉很多人都不愿意...
- 滚动
- 综合
- 房产