无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
巴马| 邹城市| 天台县| 克东县| 三穗县| 原平市| 北辰区| 萨嘎县| 普宁市| 武义县| 徐水县| 柘城县| 盘山县| 洛川县| 武陟县| 遵化市| 马鞍山市| 松桃| 那坡县| 阿拉善右旗| 衢州市| 琼海市| 广水市| 曲阳县| 永州市| 宣化县| 青阳县| 丁青县| 绥芬河市| 县级市| 泰州市| 澄迈县| 巫山县| 剑河县| 施甸县| 邯郸市| 静海县| 高邮市| 成武县| 新化县| 沐川县|