Binary Ninja(逆向編譯平臺(tái)),提供了許多的方式來(lái)修改二進(jìn)制文件,大致可以分為低級(jí)和高級(jí)模式兩種,其中低級(jí)模式主要就是原始碼的十六進(jìn)制編輯和匯編模式,高級(jí)模式可以使用內(nèi)置的C編譯器直接書(shū)寫(xiě)C代碼來(lái)進(jìn)行操作!
現(xiàn)代UI
并非所有的黑客都會(huì)忽略UI/UX。Binary Ninja使用了現(xiàn)代的UX范式,如果默認(rèn)的主題不適合你,你可以使用眾多替代品中的一種。
廣泛的API
我們的Python和C++綁定能夠與平臺(tái)的幾乎所有元素進(jìn)行交互。UI、ILs、反匯編、頭文件、我們的類型解析器等等。
強(qiáng)大的分析
代碼和數(shù)據(jù)交叉引用、基于置信度的類型傳播、值集分析等--所有這些都是自動(dòng)完成的,并且能夠以一種與架構(gòu)無(wú)關(guān)的方式進(jìn)行腳本。
二進(jìn)制忍者中級(jí)語(yǔ)言(BNIL)
我們創(chuàng)建了一個(gè)強(qiáng)大而又易于閱讀的IL系列,涵蓋了分析的多個(gè)階段。最低級(jí)別接近匯編,更高的級(jí)別接近反編譯輸出。對(duì)于不支持的架構(gòu),實(shí)現(xiàn)提升器也極其簡(jiǎn)單
HEX編輯模式
是最直觀的修改方式,也是最簡(jiǎn)易的一種修改方式。如上圖所示,可以通過(guò)右下角的菜單按鈕或者熱鍵H打開(kāi)(^ + H),這里要注意一下,這里介紹的熱鍵如果沒(méi)有效果,可以去參考 用戶文檔.
這種編輯模式下,可以一邊修改,一邊實(shí)時(shí)的看修改結(jié)果,從而到達(dá)比較高的修改測(cè)試效率,一次修改過(guò)程大致的操作步驟如下:
先在圖形視圖或者線性匯編試圖中找一個(gè)準(zhǔn)備修改的函數(shù)
使用菜單 view -> Split進(jìn)行一次屏幕視圖拆分
現(xiàn)在可以隨意調(diào)整拆分的視圖,看著舒服就行,把其中一個(gè)視圖切換到hex編輯模式,并修改一下上面選定的函數(shù)。你這邊修改,另一個(gè)視圖中就會(huì)看到同步的修改結(jié)果展示,一般情況下,如果修改一個(gè)比較大的函數(shù)的時(shí)候,操作反應(yīng)可能會(huì)慢一點(diǎn)。編輯器也支持大塊的復(fù)制粘貼操作。
結(jié)構(gòu)體實(shí)時(shí)修改
這個(gè)實(shí)時(shí)預(yù)覽功能說(shuō)起來(lái)比反匯編字節(jié)碼有用多了, 這里給出一個(gè)實(shí)時(shí)修改結(jié)構(gòu)體并查看結(jié)構(gòu)體解碼結(jié)果的的演示視頻:
這里本來(lái)是一段演示視頻,但是是youtube的視頻源,沒(méi)有辦法觀看,請(qǐng)?jiān)谠逆溄又蟹瓑τ^看(sorry),視頻地址是:http://www.youtube.com/embed/sCKiG_xdNSc
點(diǎn)兩下鼠標(biāo)就搞定
上面介紹的方法,需要你對(duì)二進(jìn)制的內(nèi)容甚至是系統(tǒng)架構(gòu)有所了解,對(duì)于大多人來(lái)說(shuō)可能還有點(diǎn)困難,但是在Binary Ninja這個(gè)平臺(tái)上,你甚至不必了解那么多的知識(shí)也可以通過(guò)平臺(tái)來(lái)完成二進(jìn)制文件的修改工作。比如,專有的 右鍵修改菜單,有了這個(gè)菜單的幫助,你只需要點(diǎn)兩下鼠標(biāo)就可以了
這個(gè)彈出菜單里面有不少專門(mén)用來(lái)修改條件分支跳轉(zhuǎn)的功能,通過(guò)這些選項(xiàng)你可以強(qiáng)制性的把一個(gè)條件分支改成 永遠(yuǎn)跳轉(zhuǎn)或者永不跳轉(zhuǎn)。使用 Invert Brach功能,可以進(jìn)行條件反轉(zhuǎn),這些功能使用起來(lái)很簡(jiǎn)單命令,但是確實(shí)能很方便快速的實(shí)現(xiàn)你想要的結(jié)果。
還有其他的一些有用的功能,比如把一些匯編指令給Nop掉,也就是說(shuō),你選中一條指令,然后用這個(gè)功能來(lái)進(jìn)行Nop指令替換,這里系統(tǒng)還會(huì)自動(dòng)的進(jìn)行剩余空間填充,比如原先的指令占4個(gè)直接,你直接把這條指令給Nop調(diào)用,那么剩下的3個(gè)字節(jié)系統(tǒng)會(huì)自動(dòng)的給你也填充成Nop指令,這個(gè)功能對(duì)于那種變長(zhǎng)指令系統(tǒng)還是很實(shí)用的。
這里需要注意的一點(diǎn)是, 如果你把鼠標(biāo)放到一個(gè)條件分支上,這個(gè)時(shí)候菜單里面可能沒(méi)有 Convert to NOP這個(gè)選項(xiàng),因?yàn)楹?as Never功能是一樣的,軟件顯示一個(gè)就夠了。
單行編輯
在Patch這個(gè)菜單中,還有一些隱藏的菜單項(xiàng),比如單行編輯功能。使用單行編輯功能,你可以快速的以匯編形式修改單行指令。選擇一條需要修改的指令,按快捷鍵e或者使用右鍵菜單Patch/Edit current line選項(xiàng),然后就可以看到選中那條匯編指令就變成了可編輯狀態(tài),編輯完成之后按回車即可,Binary Ninja會(huì)自動(dòng)把修改結(jié)果應(yīng)用到二進(jìn)制文件中去。
如果編輯匯編的時(shí)候,新指令比原先的指令長(zhǎng)度小的話,工具會(huì)自動(dòng)填充余下的空間為NOP指令,比如在 x86 x64這些變長(zhǎng)指令系統(tǒng)上。
附加說(shuō)明:工具會(huì)盡最大努力保證匯編和反匯編的正確性, 如果遇到指令錯(cuò)誤或者不支持的指令,可以聯(lián)系我們,把這些特殊的情況跟我們溝通一下
2.0.2170 (2020-05-22)
- 修正了。解決了加載數(shù)據(jù)庫(kù)時(shí)的崩潰問(wèn)題
關(guān)于騰牛 | 聯(lián)系方式 | 發(fā)展歷程 | 版權(quán)聲明 | 下載幫助(?) | 廣告聯(lián)系 | 網(wǎng)站地圖 | 友情鏈接
Copyright 2005-2023 QQTN.com 【騰牛網(wǎng)】 版權(quán)所有 鄂ICP備2022005668號(hào)-1 | 鄂公網(wǎng)安備 42011102000260號(hào)
聲明:本站非騰訊QQ官方網(wǎng)站 所有軟件和文章來(lái)自互聯(lián)網(wǎng) 如有異議 請(qǐng)與本站聯(lián)系 本站為非贏利性網(wǎng)站 不接受任何贊助和廣告