首頁>科技>

首先,祝大家新年快樂!新的一年紅紅火火!

前段時間有個朋友聯絡到我 ,說有家安全公司招聘(哪家公司我就不說了) 但是面試題目第一題就難著了。這我哪兒能忍,直接幹!

拿到app的時候我心涼了一下 ,這銀行我搞個錘子,但是逆向工程師絕不認輸!

直接重新簽名安裝 ,果然不出意外崩潰。

現在勒讓我們捋捋思路,在程式一啟動就崩潰,說明校驗是存放在入口點或者入口頁面的初始化函式裡面。先掏出我們的逆向工具 jadx反編譯一波,找到AndroidManifest.xml檔案裡面 我們知道入口點比入口頁面執行的時機要早 ,直接先從入口點的onCreate()函式入手。

直接往下跟捋捋邏輯

Java層其實沒啥東西,只要你思路清晰一眼就能看出來 ,這個onCreate()函式首先呼叫了一些super 然後註冊了一些事件 ,下面我們看到了一句程式碼:

Init這又在初始化什麼??? 過去看看:

System.loadLibrary載入了這個so庫 ,上面還有個native關鍵詞修飾的getSignatures();函式。

這就有點敏感了,心裡已經10有8 9確定了簽名校驗在so層 ,然後這個init又呼叫了一個native_init函式 傳入了一個context ,既然如此就去so看看:

So檔案還是挺多的 直接拖出來 ,放進ida反編譯一波。

找到節區分析,逆向分析思路一定得要清晰 ,先不慌搜尋註冊得函式,先看一波init跟init_array ,不清楚這部操作的小貼友們不要慌 ,推薦學習一下so檔案的載入流程以及ELF檔案結構 (可能下篇文章會詳細講到,不過市面上也有很多百度一波就行。看不懂就留言我抽空自己寫一下以我理解的流程 ,嚼碎了給你)

言歸正轉,接著來:

沒有東西 ,可以鬆口氣了,要是再有東西就又多了幾步了。

接著找到匯出函式視窗搜尋一波

採用了靜態註冊問題不大,來到這個函式

沒啥操作直接呼叫了_Z8init_libP7_JNIEnvP8_jobject 這個函式初始化,跟進

又呼叫了_Z9check_appP7_JNIEnvP8_jobject函式 ,跟進

來到這個check_app函式裡面

發現這裡呼叫了這個get_sign這個函式,我們往上看他傳入了那些引數,R0暫存器是R4傳入的env ,R1暫存器就是R5傳入的jobject,R2暫存器就是呼叫上面的函式的返回值。

這裡先不看,現在分析到這裡我們可以通過他的函式名稱確定在這裡get獲取這個sign簽名。

緊接著進行md5 sha系列的簽名運算

我們也可以看一下他的執行流程

沒有混淆就是為所欲為

找到了這個get_sign獲取當前簽名了就好辦了,直接改這個呼叫就行,要是要改的乾淨一點可以從下面的判斷入手,直接改nop指令你就得注意下面的暫存器相關的使用了,稍不注意就gg。

改好以後直接執行,完美!

好了這個就講到這裡了,聽說月薪小20k ,流下了我月薪1800的淚水!

總結一下:現在安卓逆向安全行業的門檻還是挺低的,你品,你細品。這個銀行如果加殼(當然了銀行基本不會加殼) 就費時間了,還有就是對so檔案的保護不夠好,關鍵點很好定位,基本不用動態就能分析出來 ,混淆也沒有,不過混淆也沒啥用,對咱逆向安全工程師來說都問題不大!

最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 春節,網際網路玩家的競技場