上一篇 《教我兄弟學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爆破簽名驗證》