国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

IDA去除so簽名驗(yàn)證(新手向)

2023-08-19 12:32 作者:夢(mèng)影キリ  | 我要投稿

眾所周知,簽名校驗(yàn)是一個(gè)對(duì)安卓逆向人超級(jí)頭大的一個(gè)問題,與其用工具去除,不如用了解簽名校驗(yàn)的原理后用ida去除

Part 0 原理

簽名驗(yàn)證必須調(diào)用系統(tǒng)api


Java層一般通過getPackageManager().getPackageInfo.signatures來獲取簽名信息。
NDK層一般調(diào)用Native方法/DLL/Lua腳本等通過獲取Java的context/Activity對(duì)象,動(dòng)態(tài)JNI反射調(diào)用getPackageInfo等來獲取簽名。


Part 1 查簽名驗(yàn)證

我們拿到這個(gè)apk后重簽名,發(fā)現(xiàn)無法正常運(yùn)行,說明有簽名驗(yàn)證。我們?cè)侔惭b原簽名apk斷網(wǎng)后正常運(yùn)行,說明是本地驗(yàn)證

先用jeb打開

搜索signatures

并未找到,說明Java層面沒有簽名校驗(yàn)

接著,我們搜索loadLibrary,這是Java層面調(diào)用so的api

我們雙擊跳轉(zhuǎn)

這段代碼的大意是將JniTest賦值到寄存器0再將此作為參數(shù)傳入LoadLibrary()

我們解壓apk打開lib目錄,選擇對(duì)應(yīng)手機(jī)型號(hào)的cpu,UP是armabi架構(gòu)

用IDA pro打開libJniTest.so

用以下選項(xiàng)打開

如果沒有Elf for arm 就安裝ELF.b

我們搜索signature,勾選查找所有事件

????????我們會(huì)搜索出很多結(jié)果,一般只需要看一看函數(shù)(function)

我們先點(diǎn)開第一個(gè)函數(shù),打開圖標(biāo)視圖

發(fā)現(xiàn)沒有關(guān)鍵跳轉(zhuǎn),接著往下看,我們會(huì)在圖中所示的函數(shù)發(fā)現(xiàn)關(guān)鍵跳轉(zhuǎn)

右鍵,轉(zhuǎn)換為文本視圖,按F5轉(zhuǎn)換為偽C代碼(前提你的IDA支持)

我們發(fā)現(xiàn)了簽名校驗(yàn)的函數(shù),按ESC退出反編譯模式,因此我們要讓跳轉(zhuǎn)失效


BEQ指令是“相等(或?yàn)?)跳轉(zhuǎn)指令”,
BNE指令是“不相等(或不為0)跳轉(zhuǎn)指令”,
B指令是“無條件跳轉(zhuǎn)指令”,
CBZ 指令是“比較,為零則跳轉(zhuǎn)”,
CBNZ指令是“比較,為非零則跳轉(zhuǎn)”。

通過工具,我們發(fā)現(xiàn):

BNE跳轉(zhuǎn)指令對(duì)應(yīng)的HEX機(jī)器碼是D1,
BEQ跳轉(zhuǎn)指令對(duì)應(yīng)的HEX機(jī)器碼是D0,
CBZ跳轉(zhuǎn)指令對(duì)應(yīng)的HEX機(jī)器碼是B1,
CBNZ跳轉(zhuǎn)指令對(duì)應(yīng)的HEX機(jī)器碼是B9。


所以,我們需要把BNE改為BEQ,即把D1改為D0,IDA無法修改,只是為了定位

記住內(nèi)存地址,用notepad++或mt的hex編輯器修改

????最后,我們重簽名,就不會(huì)退出了

IDA去除so簽名驗(yàn)證(新手向)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
常山县| 桃源县| 博乐市| 汝阳县| 田阳县| 册亨县| 通渭县| 松江区| 海安县| 乡宁县| 平泉县| 玛曲县| 德格县| 龙川县| 龙海市| 阿巴嘎旗| 宜兰县| 江安县| 乐昌市| 寿宁县| 贵溪市| 甘泉县| 台前县| 兴安盟| 高陵县| 淮滨县| 闸北区| 孟津县| 揭西县| 万荣县| 罗定市| 宁德市| 兴海县| 望奎县| 尤溪县| 通渭县| 洛隆县| 正镶白旗| 通辽市| 新乡县| 临泽县|