每日看點(diǎn)!代碼混淆與反混淆學(xué)習(xí)-第二彈
deflat腳本鏈接:GitHub - cq674350529/deflat: use angr to deobfuscation
deflat 腳本測(cè)試這里以代碼混淆與反混淆學(xué)習(xí)-第一彈中的OLLVM 混淆樣本為例進(jìn)行去除?!綥LVM-4.0】
(相關(guān)資料圖)
控制流平坦前 | 控制流平坦后 |
---|---|
python deflat.py --file main-bcf --addr 0x401180
deflat.py 成功去除后效果:
去混淆后,效果還算可以,能分析程序流程了。
deflat 腳本分析【angr】利用符號(hào)執(zhí)行去除控制流平坦化 - 博客 - 騰訊安全應(yīng)急響應(yīng)中心 (tencent.com)
angr documentation
利用angr符號(hào)執(zhí)行去除控制流平坦化 - 0x401RevTrain-Tools (bluesadi.github.io)
序言:函數(shù)的第一個(gè)執(zhí)行的基本塊主(子)分發(fā)器:控制程序跳轉(zhuǎn)到下一個(gè)待執(zhí)行的基本塊retn塊:函數(shù)出口真實(shí)塊:混淆前的基本塊,程序真正執(zhí)行工作的版塊預(yù)處理器:跳轉(zhuǎn)到主分發(fā)器如第一彈中分析:OLLVM 的控制流平坦化是將程序的一般邏輯劃分為很多個(gè)真實(shí)執(zhí)行的塊,然后通過分發(fā)器進(jìn)行鏈接。其實(shí)就是一個(gè)Switch結(jié)構(gòu),每次執(zhí)行完真實(shí)塊后,進(jìn)行預(yù)處理,再跳轉(zhuǎn)到主分發(fā)器,繼續(xù)分發(fā),最終達(dá)到平坦化的效果。
顯然,去控制流平坦化就是要找到真實(shí)塊間的跳轉(zhuǎn)邏輯,打破Switch結(jié)構(gòu)束縛。
具體來說,有如下步驟:
靜態(tài)分析CFG得到序言/入口塊、主分發(fā)器、子分發(fā)器/無用塊、真實(shí)塊、預(yù)分發(fā)器和返回塊。利用符號(hào)執(zhí)行恢復(fù)真實(shí)塊的前后關(guān)系,重建控制流根據(jù)第二步重建的控制流Patch程序,輸出恢復(fù)后的可執(zhí)行文件靜態(tài)分析首先明確:【以下結(jié)論針對(duì)OLLVM項(xiàng)目,其他大佬加料的OLLVM混淆還需要單獨(dú)分析】
函數(shù)的開始地址為序言的地址序言的后繼為主分發(fā)器后繼為主分發(fā)器的塊為預(yù)處理器后繼為預(yù)處理器的塊為真實(shí)塊無后繼的塊為retn塊剩下的為無用塊angr 獲取類似Ida的 CFG
獲取真實(shí)塊、主分發(fā)器、預(yù)處理器、序言、retn塊和無用塊
獲取真實(shí)塊的細(xì)節(jié)
利用angr 強(qiáng)大的符號(hào)執(zhí)行功能,找到各真實(shí)塊的連接邏輯。
這里對(duì)于兩個(gè)分支的模擬執(zhí)行,只需關(guān)注cmov
指令,就可以分別對(duì)應(yīng)得到eax、ecx,然后獲得后續(xù)真實(shí)塊。【局限性很大】
符號(hào)執(zhí)行 symbolic_execution()
函數(shù),返回后繼真實(shí)塊。
如此便完成了 deflat腳本的簡(jiǎn)單處理分析。
小結(jié)分析下來,其實(shí)就是定位到所有真實(shí)塊,然后利用angr符號(hào)執(zhí)行將真實(shí)塊間的執(zhí)行邏輯進(jìn)行串聯(lián)。最后進(jìn)行patch程序,重建控制流。
但顯然存在一些問題,我們默認(rèn)了如下規(guī)則:
函數(shù)的開始地址為序言的地址序言的后繼為主分發(fā)器后繼為主分發(fā)器的塊為預(yù)處理器后繼為預(yù)處理器的塊為真實(shí)塊無后繼的塊為retn塊剩下的為無用塊但是在實(shí)際去除控制流平坦化過程中,上面的默認(rèn)思路已經(jīng)被加混淆的開發(fā)者做了處理。
例如:
后繼為預(yù)處理器的塊不一定是真實(shí)塊;預(yù)處理器不一定存在;存在分支的真實(shí)塊跳轉(zhuǎn)的判斷邏輯,不一定是cmov
指令;deflat腳本默認(rèn)模擬執(zhí)行最多兩個(gè)分支,但真實(shí)情況可能不只兩個(gè)分支;可能存在一個(gè)向前更新的數(shù)組,依據(jù)程序運(yùn)行進(jìn)行更新,決定當(dāng)前真實(shí)塊的跳轉(zhuǎn)【這導(dǎo)致angr對(duì)于該塊的模擬執(zhí)行得不到正確的跳轉(zhuǎn)】程序在加混淆前,已經(jīng)被添加了花指令或其他處理,程序CFG圖
已經(jīng)被打破;某個(gè)塊存在死循環(huán),會(huì)使angr符號(hào)執(zhí)行卡死……這也導(dǎo)致了,這個(gè)deflat腳本的普適性較低,除了能夠處理OLLVM官方項(xiàng)目做的混淆,對(duì)加了其他PASS或者處理的混淆,基本用不了。
所以對(duì)于去除不了的OLLVM混淆,我們需要根據(jù)程序的實(shí)際混淆效果,對(duì)deflat腳本進(jìn)行修改,再進(jìn)行去混淆。
【這也要求對(duì)deflat 腳本比較熟悉,可以更快上手】
失敗的花指令控制流平坦化嘗試使用代碼混淆與反混淆學(xué)習(xí)-第一彈中加了花指令的程序,進(jìn)行OLLVM控制流平坦化混淆,看看效果。
源代碼如下:
# clang 執(zhí)行內(nèi)聯(lián)匯編加 -fasm-blocks 或者 -fms-extensions 或者 -masm=intelclang -mllvm -fla -mllvm -split -mllvm -split_num=3 main-call-加花.cpp -lm -fasm-blocks -o main-call-加花# 需要對(duì)源代碼作一些修改
存在較大的問題,我的OLLVM 環(huán)境是在Ubuntu上搭建的,對(duì)于上述內(nèi)聯(lián)匯編加的花指令無法編譯通過!
【或許可以在Windows 上移植OLLVM,進(jìn)行編譯(好像挺難的)】
可以看到,花指令用到的標(biāo)簽、$ 出現(xiàn)報(bào)錯(cuò)。
【最終也沒解決編譯問題,或許本就不可以,ollvm 不具備這樣的處理能力,也可能是我代碼的問題,如果博客前的你有任何想法,歡迎與我交流】
TSCTF-J 2022-upx_revenge實(shí)戰(zhàn)分析TSCTF-J 2022 WP
對(duì)upx_revenge
題目進(jìn)行分析。
首先直接使用deflat 腳本。
python deflat.py --file upx_revenge_test --addr 0x4016D0
發(fā)現(xiàn)沒有找到retn 塊。
處理多個(gè)retn塊回到ida 查看cfg 圖發(fā)現(xiàn)原因:存在其他的退出塊。
這里需要改進(jìn)deflat 腳本,使其存在很多retn塊。
# 其他位置的retn_node,對(duì)應(yīng)改為list處理if supergraph.out_degree(node) == 0: retn_node.append(node)
成功運(yùn)行,但是去除效果不行。
去除后CFG圖 |
---|
很明顯看出,程序的真實(shí)塊間的邏輯串聯(lián)失敗,也就是重建控制流失敗。
產(chǎn)生原因
顯然,這里存在2個(gè)分支,因?yàn)橛袃蓚€(gè)cmov
【相同判斷】,并且call 函數(shù),對(duì)分支跳轉(zhuǎn)是有作用的,這里var_CC是順序執(zhí)行,動(dòng)態(tài)更新的。
【deflat 腳本只處理了執(zhí)行有一個(gè)cmov
指令的情況,且hook了call函數(shù)】
【由于var_CC是順序執(zhí)行,動(dòng)態(tài)更新也可以看出,deflat 腳本的模擬執(zhí)行思路已經(jīng)無法對(duì)真實(shí)塊的后繼進(jìn)行確定了】
但這里做個(gè)測(cè)試,不hook call 看是什么效果。
可以知道,取消hook call 對(duì)真實(shí)塊后繼的查找毫無影響,這是因?yàn)閐eflat中的模擬執(zhí)行,只是基于comv
處的模擬。對(duì)前文并無任何關(guān)聯(lián)。
顯然,該deflat腳本的無法處理了。【】
總結(jié)angr就upx_revenge這道題而言,
deflat 腳本中angr 對(duì)局部的模擬執(zhí)行顯然無法獲取真實(shí)塊間的執(zhí)行順序,重建控制流顯然也無從談起。當(dāng)然靜態(tài)查找各個(gè)控制流平坦化的功能塊效果還是可以的。
那么如何通過angr,有序的、聯(lián)系上文地進(jìn)行模擬執(zhí)行,獲取真實(shí)塊的執(zhí)行邏輯,顯然是關(guān)鍵點(diǎn)!
【??? 后續(xù)學(xué)習(xí)了,有思路再更新】
unicorn[原創(chuàng)]ARM64 OLLVM反混淆-Android安全-看雪論壇-安全社區(qū)|安全招聘|bbs.pediy.com (kanxue.com)
Unicorn反混淆:恢復(fù)被OLLVM保護(hù)的程序(一) - 簡(jiǎn)書 (jianshu.com)
使用unicorn 模擬執(zhí)行框架獲取真實(shí)塊間的執(zhí)行順序,重建控制流。
【還沒學(xué)過 unicorn 使用,,,】
ida使用IDA microcode去除ollvm混淆(上) - 先知社區(qū) (aliyun.com)
GitHub - PShocker/de-ollvm: IDA Python Script for anti ollvm
利用ida 現(xiàn)成的CFG 圖,以及idc 腳本,動(dòng)態(tài)運(yùn)行程序,獲取真實(shí)塊的執(zhí)行順序,從而恢復(fù)控制流。
關(guān)鍵詞:
- 每日看點(diǎn)!代碼混淆與反混淆學(xué)習(xí)-第二彈(2023-04-09 17:34:28)
- 【全球快播報(bào)】暴跌7300億,多頭殺瘋了!(2023-04-09 16:58:21)
- 非洲廣西上林淘金幫,過刀尖舔血生活,有人資產(chǎn)上億有人魂歸異鄉(xiāng)(2023-04-09 16:55:24)
- 實(shí)時(shí):國(guó)鐵集團(tuán):一季度全國(guó)鐵路固定資產(chǎn)投資同比增長(zhǎng)6.6%(2023-04-09 15:46:08)
- 醫(yī)藥高新區(qū)(高港區(qū))新獲200億元信貸支持(2023-04-09 15:57:51)
- 工行“巨貪”顧國(guó)明落馬:斂財(cái)1.36億,坐擁32個(gè)女下屬,結(jié)局舒適(2023-04-09 15:44:06)
- 每日動(dòng)態(tài)!新能源時(shí)代來臨,銀行推分期購(gòu)車,又一批新能源車和充電樁運(yùn)抵仰光(2023-04-09 15:54:57)
- “乍暖還寒”易受流感侵襲,如何用連花清瘟對(duì)癥治療(2023-04-09 15:36:58)
- 【世界獨(dú)家】緊急提醒!假的!假的!(2023-04-09 14:46:55)
- 資深老股民:炒股買賣順口溜,朗朗上口,盤中默念就做好股票!(2023-04-09 15:01:35)
- 全球速訊:“數(shù)據(jù)中心+算力”風(fēng)口熱潮,4只真正的液冷溫控概念股,有望走妖(2023-04-09 14:43:24)
- 世界觀點(diǎn):大單壓盤“不移動(dòng)”,是洗盤還是出貨?股市老鳥為大家詳盡解答!(2023-04-09 15:04:49)
- 焦點(diǎn)滾動(dòng):邀請(qǐng)函 | 2023非洲開發(fā)銀行商業(yè)機(jī)會(huì)研討會(huì)(2023-04-09 15:05:31)
- 【天天新視野】貓咪睡覺時(shí)為什么把身體蜷成團(tuán)?貓咪睡覺的位置代表什么(2023-04-09 13:54:08)
- 中國(guó)股市:警惕K線一枝獨(dú)秀的形態(tài),識(shí)別莊家精心設(shè)置的誘多陷阱(2023-04-09 13:49:38)
- 中國(guó)股市:股票被套,應(yīng)該離場(chǎng)還是硬扛?散戶不要再犯這樣的錯(cuò)誤(2023-04-09 13:56:28)
- 全球快看點(diǎn)丨中國(guó)股市:具備爆發(fā)上漲空間的“四朵金花”,值得大家收藏研究!(2023-04-09 13:51:28)
- 男子欠信用卡19萬,入獄3年滾到115萬,銀行稱一分都不能少(2023-04-09 13:56:40)
- 縣級(jí)人民銀行全部撤銷,那么多的員工怎么辦?直接下崗失業(yè)?(2023-04-09 13:52:32)
- 環(huán)球今日?qǐng)?bào)丨曾經(jīng)年入30億的民族品牌突然倒塌,原因至今撲朔迷離(2023-04-09 13:39:15)
- 渝論 | 銀行“反向抹零”,誰給的權(quán)力?(2023-04-09 13:00:48)
- 【當(dāng)前獨(dú)家】收益高達(dá)6%,還能減稅的個(gè)人養(yǎng)老金,為什么感覺大家都不買賬?(2023-04-09 12:50:10)
- 天天快報(bào)!突然爆了!林俊杰巨虧90%?這個(gè)市場(chǎng)徹底崩盤!此前更有爆倉(cāng)傳聞 這些明星也踩雷(2023-04-09 12:03:55)
- 當(dāng)前關(guān)注:摩根大通做空黃金的傳聞是真是假?黃金后期走勢(shì)如何?(2023-04-09 11:52:52)
- 保險(xiǎn)巨頭最新布局!加速養(yǎng)老產(chǎn)業(yè)發(fā)展,全國(guó)版圖初步成形!運(yùn)營(yíng)模式生變(2023-04-09 11:53:49)
- 當(dāng)前快訊:非農(nóng)數(shù)據(jù)強(qiáng)化加息預(yù)期 美國(guó)銀行業(yè)風(fēng)險(xiǎn)揮之不去(2023-04-09 11:47:30)
- 每日看點(diǎn)!特斯拉員工被曝傳閱客戶車內(nèi)私密圖像;國(guó)美辟謠員工貸款上班傳聞;阿里版ChatGPT邀請(qǐng)測(cè)試丨邦早報(bào)(2023-04-09 11:58:59)
- 今日熱門!畢馬威和高盛等因硅谷銀行關(guān)閉被起訴(2023-04-09 11:00:48)
- 環(huán)球新消息丨Feign 接口的繼承(2023-04-09 10:11:31)
- 【聚看點(diǎn)】暴雷的,可能暴雷的,不會(huì)暴雷的|李子曰(2023-04-09 09:50:05)
-
焦點(diǎn)滾動(dòng):邀請(qǐng)函 | 2023非洲開發(fā)銀行商業(yè)
各有關(guān)單位:為幫助客戶更好了解非洲開發(fā)銀行的產(chǎn)品和服務(wù),促進(jìn)項(xiàng)目合作,非洲開發(fā)銀...
-
【天天新視野】貓咪睡覺時(shí)為什么把身體蜷成
貓咪在生活中較為常見,因其性情溫和且可愛是時(shí)下最受人們喜愛的寵物之一,但很多人在...
-
中國(guó)股市:警惕K線一枝獨(dú)秀的形態(tài),識(shí)別莊
投資需要正確地思考盈利和虧損,盈利了要明白這是市場(chǎng)對(duì)你用心付出的回報(bào),虧損了要明...
-
中國(guó)股市:股票被套,應(yīng)該離場(chǎng)還是硬扛?散
做一個(gè)幸福的散戶是很容易辦到的是要有一顆平常心,要以一種投資的心態(tài)入市,雖然股民...
-
全球快看點(diǎn)丨中國(guó)股市:具備爆發(fā)上漲空間的
股票市場(chǎng)不創(chuàng)造財(cái)富,人們財(cái)富的升值是來源于于另一方的失誤,不一樣股票于同一股票需...
-
男子欠信用卡19萬,入獄3年滾到115萬,銀行
浙江杭州,男子信用卡欠款19萬,可卻在3年后利滾利變成115萬,如此天價(jià)利息,連高利貸...
-
縣級(jí)人民銀行全部撤銷,那么多的員工怎么辦
我國(guó)相關(guān)部門公布的公務(wù)員縮招的消息讓很多在職的公務(wù)員惴惴不安,他們認(rèn)為自己可能要...
-
環(huán)球今日?qǐng)?bào)丨曾經(jīng)年入30億的民族品牌突然倒
文|華商韜略6002023年3月,隨著湖南株洲公安局原副局長(zhǎng)凌婭的投案自首,13年前的太子奶...
-
渝論 | 銀行“反向抹零”,誰給的權(quán)力?
取錢時(shí)0 94元被銀行“反向抹零”?近日,河南駐馬店一名男子去銀行取錢時(shí)發(fā)現(xiàn),有0 9...
-
【當(dāng)前獨(dú)家】收益高達(dá)6%,還能減稅的個(gè)人養(yǎng)
每年的收益率高達(dá)6%以上,并且還能夠減稅的個(gè)人養(yǎng)老金制度,為什么感覺很多人都不愿意...
- 每日看點(diǎn)!代碼混淆與
- 實(shí)時(shí):國(guó)鐵集團(tuán):一季
- 【天天新視野】貓咪睡
- 天天快報(bào)!突然爆了!
- 每日看點(diǎn)!代碼混淆與反混淆學(xué)習(xí)-第二彈
- 實(shí)時(shí):國(guó)鐵集團(tuán):一季度全國(guó)鐵路固定資產(chǎn)投資同
- 【天天新視野】貓咪睡覺時(shí)為什么把身體蜷成團(tuán)?
- 天天快報(bào)!突然爆了!林俊杰巨虧90%?這個(gè)市場(chǎng)徹
- 環(huán)球新消息丨Feign 接口的繼承
- 全球視點(diǎn)!定了!密云這個(gè)地方將大變樣!
- n76星云(L77星云的介紹)
- 維a酸乳膏可以一直使用嗎_維A酸乳膏能一直用嗎
- 北京市屬公園啟動(dòng)生物多樣性保護(hù)科普宣傳月 邀
- 黃桃鸚鵡與牡丹鸚鵡區(qū)別?
- 滾動(dòng)
- 綜合
- 房產(chǎn)
- 1數(shù)字貨幣板塊走強(qiáng) 海聯(lián)金匯漲停
- 2長(zhǎng)飛光纖投資成立微電子公司 經(jīng)營(yíng)范圍含
- 3香港恒生指數(shù)開盤漲0.27% 恒生科技指數(shù)
- 4科大訊飛投資設(shè)立新公司 經(jīng)營(yíng)范圍含集成
- 5三大指數(shù)微幅低開 體育概念漲幅居前
- 6五糧液、上機(jī)數(shù)控等21股獲北向資金增持額
- 7伯克希爾盤前漲超1% 三季度凈虧損大幅收窄
- 8東陽光擬與廣汽零部件等設(shè)合資公司 從事
- 9金力永磁收到兩家國(guó)際知名汽車與發(fā)動(dòng)機(jī)零
- 10普源精電與中航國(guó)際供應(yīng)鏈科技有限公司在
- 1【全球快播報(bào)】暴跌7300億,多頭殺瘋了!
- 2非洲廣西上林淘金幫,過刀尖舔血生活,有
- 3醫(yī)藥高新區(qū)(高港區(qū))新獲200億元信貸支持
- 4工行“巨貪”顧國(guó)明落馬:斂財(cái)1.36億,坐
- 5每日動(dòng)態(tài)!新能源時(shí)代來臨,銀行推分期購(gòu)
- 6【世界獨(dú)家】緊急提醒!假的!假的!
- 7資深老股民:炒股買賣順口溜,朗朗上口,
- 8全球速訊:“數(shù)據(jù)中心+算力”風(fēng)口熱潮,4
- 9世界觀點(diǎn):大單壓盤“不移動(dòng)”,是洗盤還
- 10焦點(diǎn)滾動(dòng):邀請(qǐng)函 | 2023非洲開發(fā)銀行商
- 16月樓市成交明顯上漲 市場(chǎng)恢復(fù)態(tài)勢(shì)能否
- 2珠海4.17億元成功出讓新香洲1幅工改住地
- 3總成交價(jià)1.64億元!唐山路南區(qū)1宗優(yōu)質(zhì)地
- 4華潤(rùn)置地2.11億元競(jìng)得大連保稅區(qū)地塊 樓
- 5西寧市:出臺(tái)15項(xiàng)措施支持剛性和改善性住
- 6樓面價(jià)14626元/㎡!中建智地13.14億競(jìng)得
- 7總起價(jià)93.4億元!蘇州2022年首次集中供地
- 8徐州市住建局:推出18條政策支持房地產(chǎn)行
- 9溫州:2022年龍灣區(qū)計(jì)劃供應(yīng)商品住宅用地
- 10重磅!東莞謝崗鎮(zhèn)2022年度土地征收成片開
- “乍暖還寒”易受流感侵襲,如何用連花清瘟
- 環(huán)球今日?qǐng)?bào)丨曾經(jīng)年入30億的民族品牌突然倒
- 每日看點(diǎn)!特斯拉員工被曝傳閱客戶車內(nèi)私密
- 全球熱議:江海股份:光伏行業(yè)成為電容器最
- 每日觀點(diǎn):老店翻新自救?實(shí)探家樂福新業(yè)態(tài)
- 每日熱門:漢能系崩盤!九家經(jīng)營(yíng)主體集中破
- 【全球報(bào)資訊】下周一,全面注冊(cè)制后首批上
- 焦點(diǎn)精選!《“愛”AI難天長(zhǎng)地久 》
- 世界速遞!中國(guó)知識(shí)付費(fèi)行業(yè)數(shù)據(jù)分析: 51
- 環(huán)球快資訊丨電競(jìng)亞運(yùn)之年,雷神科技奏響“
- 每日速讀!華寶新能發(fā)布《2023中國(guó)戶外電源