教我兄弟學Android逆向07 IDA破解第一個so


上一篇 《教我兄弟學Android逆向06 用AndroidStudio編寫第一個so》我帶你用AS編寫了第一個so 現在回顧一下 首先我創建了一個myJNI類 里面包含一個Native的sayHello方法 這個方法在native層返回一句話 hello 52pojie! 然后我在java層通過Log函數調用並輸入了sayHello方法完成了第一個so的編寫。
課程寫到這我已經不再是面向威一個人了 有很多同學私信我問威學的怎么樣了 找到工作了嗎 其實威已經找到了逆向的工作 待遇還不錯 今年七月份回學校拿畢業證 現在正在忙着寫畢業論文等學校一堆的事情 當然他學的並不止這些東西。 雖然威找到了工作 但是應很多同學的要求課程還會繼續更新 后面我還會陸續放出來一些課程。

希望同學們好好學習 認真學習的人都能找到滿意的工作。  

教我兄弟學逆向系列課程中的每一課我認為均是一個框架 這是一個拋磚引玉的過程 課程中我不會把東西講的這么細 我只會教給大家一種破解的思路和實現方式 具體原理請自行百度。


要么學!要么不學!學和不學之間沒有中間值 不學就放棄,學就要去認真的學!    --致選擇

本節課給你帶來的是so的破解 本節課用到的例子是上節課我帶你做的Demo 題目是更改Native方法sayHello的返回值 讓它原來返回的hello 52pojie!變成hello world!
那么開始今天的課程。


本節課所有到的工具和Demo
IDA

鏈接:https://pan.baidu.com/s/15uCX8o6tTSSelgG_RN7kBQ 密碼:ftie

第六課Demo
鏈接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密碼:u1an


一 解包
1.使用apktool解包app-debug.apk  

2.關於apktool的使用請看番外

https://www.52pojie.cn/thread-732007-1-1.html


二 打開so文件
1.進入解包后的lib目錄找到libJniTest.so並用IDA打開

<ignore_js_op>


2.點兩次OK進入此頁面 點新建
<ignore_js_op>

3.找到so並打開它 因為我的機型是支持arm的所以我這里打開的是armeabi文件夾下的so 如果機型是x86模式的那么這里要打開x86模式下的libJniTest.so
armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以后的生產的大部分Android設備都使用它.
arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。
armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
x86: 平板、模擬器用得比較多。
x86_64: 64位的平板。
<ignore_js_op>

4.點擊打開后會有幾個彈框 全部點OK會進入到這樣一個界面 說明so已經打開
<ignore_js_op>

三 找到字符串hello 52pojie!並修改為hello world!
1.按住鍵盤組合鍵 shift + f12 打開字符串窗口  這個窗口將會列舉出so中所包含的所有字符串 因為上節課我們只編寫了一個字符串 所以這里只有一個hello 52pojie! 如果打開的是x86的so這里還會有一些.so 但是字符串只有這一個
<ignore_js_op>

2.雙擊進去將會找到hello 52pojie!的內存地址
<ignore_js_op>

3.鼠標點在hello 52pojie!字符串上,打開 Hex dump窗口,修改hello 52pojie!對應內存地址的內容
關於字符對應的16進制可以在百度百科搜索ascii碼表 找到字符所對應的16進制
<ignore_js_op>

<ignore_js_op>

4.因為我要把hello 52pojie!修改成hello world! 是不是只要找到每個字符所對應的hex修改就好了
這里我看到 hello 52pojie!對應的hex是:68 65 6C 6C 6F 20 35 32 70 6F 6A 69 65 21
我在ascii碼表上找到world所對應的十六進制是:77 6F 72 6C 64
所以hello world! 對應的十六進制是:68 65 6C 6C 6F 20 77 6F 72 6C 64 21


5.找到所要修改的字符所對應的16進制 右鍵Edit
<ignore_js_op>

6.由於52pojie!比world!多兩個字符 這里把多出來的置為00 修改好后 右鍵Apply changes應用
<ignore_js_op>

7.保存修改好后so
<ignore_js_op>

<ignore_js_op>

8.點擊確定后 把修改后的so儲存到一個位置
<ignore_js_op>

四 替換so並重打包
1.關閉ida 並把armeabi和armeabi-v7a下的libJniTest.so替換成修改后的so 注意這里兩個文件夾下的so都要替換  同理 如果是x86模式的 這里要替換x86文件夾的so
<ignore_js_op>

2 替換so后把app-debug文件夾用apktool命令重打包成new.apk 並進行簽名 生成簽名后的new_sign.apk
<ignore_js_op>

<ignore_js_op>

3.將new_sign.apk安裝到手機 運行 查看Log成功顯示hello world! so破解成功
<ignore_js_op>

五.總結
本節課首先下載了ida這款逆向神器   然后通過ida修改so的16進制 成功的將hello 52pojie!修改成了hello world! 完成了對第六課的破解 。



課后作業
1.完成第六課的課后作業並破解它
2.看完《IDA Pro權威指南》前六章
書籍鏈接:https://pan.baidu.com/s/1zHkHbeaGZ6wfeRR20Gav-A 密碼:3vnu



下一篇:教我兄弟學Android逆向08 IDA爆破簽名驗證


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM