五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ó)家法律
蛟河市| 元阳县| 孟津县| 同德县| 易门县| 宁阳县| 凤庆县| 柳林县| 镇雄县| 增城市| 麻城市| 萍乡市| 台山市| 黎川县| 琼海市| 泰安市| 台中市| 潼南县| 赣州市| 宜丰县| 平原县| 永福县| 望城县| 商都县| 新津县| 富锦市| 和林格尔县| 堆龙德庆县| 定陶县| 邢台县| 安龙县| 宝应县| 怀安县| 河源市| 沁水县| 辰溪县| 托里县| 大洼县| 洛阳市| 淮北市| 彩票|