吾愛破解 - LCG - LSG |安卓破解|病毒分析|huihengkj.com

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 3190|回復: 27

[Android 原創] 實戰:Crakeme01

  [復制鏈接]
樓主
宸道移動安全 發表于 2020-9-16 16:51 回帖獎勵


先運行軟件,觀察程序特點,步驟與前面“AliCrckme”實戰相似,都是運用IDA靜態調試與動態調試相結合獲取密碼,從而進入功能頁面,具體操作流程如下。

1.1  jdax-gui中分析java代碼


在xml文件里,找到程序入口點,如下圖所示。



直接查看click,如下圖所示。



此處if的判斷與之前分析的AliCreackme不同。先判斷它是否為空,如果為空,先彈出對應字符;如果不為空,直接把字符給被Native修飾的方法調用,也就是說,輸入字符的對錯結果和返回的字符串都在so層處理。


1.2  IDA中靜態分析


1.找到JNI_OnLoad,進入后,如下圖所示。



2.按F5查看偽代碼,修改參數類型和名稱,如下圖所示。



3.調用一個AD函數,然后是一個if-else判斷,如下圖所示。



4.進入AD函數,查看字眼是檢測進程,如下圖所示。



5.查看靜態注冊,搜索后發現沒有靜態注冊的函數,那邏輯的執行部分肯定是在動態注冊里,但是動態注冊的偽代碼里面只識別到兩個函數,AD和GetEnv,如下圖所示。



6.查看匯編窗口,除了if里面的兩個BL跳轉函數之外,下面的else里面還有一個BL跳轉函數,而且很明顯是4個參數,RegisterNative恰好就是4個參數,如下圖所示。



靜態分析就到這里,接下來開始IDA動態調試,驗證我們的推論。

1.3  IDA動態調試

直接修改名字和端口就可以直接過掉,記錄動態分析的過程,進來后,檢測函數nop掉,如下圖所示。



F8一路往下,來到這個可能是RegisterNative函數的位置,如下圖所示。



觀察第三個參數,發現是一個地址,可以跳過去,如下圖所示。



點擊過去,然后按d鍵,識別成dword類型的地址,看到存放的內容是一個 java層被native修飾的方法名,如下圖所示。



同樣識別第二個和第三個參數,第二個參數是方法簽名,如下圖所示。



第三個參數是C代碼中的底層函數實現的函數名,bc過來后,看到這里的標志位T是1,說明是thumb指令,如下圖所示。



按c鍵,將此處代碼識別成thumb指令,如下圖所示。



這個bc函數就是我們要分析的關鍵邏輯所在,直接在導出函數里面搜索,過來后F5識別偽代碼,分析這里的邏輯,這是一個字符轉換,如下圖所示。



進dc里面看看,發現有一個 dh,繼續跟進去,如下圖所示。



有kill和getpid,與進程檢測有關,如下圖所示。



繼續跟進,如下圖所示。



有getpid,也與進程檢測有關,如下圖所示。



它執行的條件是上面的dc返回為真,如下圖所示。



dc的返回值取決于此處,想給上一層返回一個真,那必須是if里面的執行,首先dh要返回一個真,如下圖所示。



進去dh,它想給上層返回一個真,必須是memcmp這個執行成立,否則就執行下面的else,如下圖所示。



回到dc,查看這個函數的返回結果,如下圖所示。



返回結果又由dh決定,在dh里面返回上一層是0或者是1,取決于這三個點,如下圖所示。



回到bc,查看這個函數,如下圖所示。



發現了解密函數,由上層可以知道,他的返回值是一個int,如下圖所示。



該函數的返回值由這兩處決定,v4是v7給的,由上面可知,v7是一個組數,v7最終會給v4,如下圖所示。



v4作為返回值傳遞給上一層,然后作為參數傳遞給這個函數,將最終結果作為bc的返回值,如下圖所示。



點進去觀察這個函數,會發現是調用toast函數,它與彈窗有關,如下圖所示。



接下來在bc進行動態分析,如下圖所示。



跳至R0指向的地址,這個就是剛才手動輸入的密碼,如下圖所示。



下面一個BLX跳轉后面緊跟著一個CBZ,就是靜態分析里面的dc函數,由dc的返回值決定if的執行,如下圖所示。



直接步過這個函數,發現返回值為零,如下圖所示。



直接執行else,如下圖所示。



這個函數是解密函數,里面有RC4算法,如下圖所示。



來到解密函數處,下斷點,如下圖所示。




一路F8走到這里,如下圖所示。



繼續分析,如下圖所示。



觀察F7寄存器的值,跳過來就得到正確的密鑰,如下圖所示。



繼續單步往下,查看R7的值,如下圖所示。




過來R7,提示密碼錯誤,如下圖所示。



這就是結合靜態分析和動態調試得到的結果,靜態分析能夠更方便的閱讀邏輯,得到一些關鍵點,動態調試的目的是查看具體數據。

小結:
這次的分享當中,先從java層簡單分析到so層,然后靜態分析了so里面的動態注冊方法,隨后又進行了動態調試so,過掉反調試,并且找到bc函數,靜態分析bc函數,最后在bc函數處找解密函數下斷點,然后找到密鑰。

免費評分

參與人數 24吾愛幣 +25 熱心值 +22 收起 理由
N0LL + 1 + 1 謝謝@Thanks!
fg2q1q3q + 1 我很贊同!
悵廖廓 + 1 我很贊同!
siuhoapdou + 1 + 1 謝謝@Thanks!
BrainFlower + 1 + 1 用心討論,共獲提升!
spadesa + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
sunpx3 + 1 + 1 用心討論,共獲提升!
dns2018 + 1 我很贊同!
CrazyNut + 3 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
yixi + 1 + 1 謝謝@Thanks!
晨曦照相 + 2 + 1 熱心回復!
迷魂 + 1 + 1 謝謝@Thanks!
woditian + 1 + 1 謝謝@Thanks!
soyiC + 1 + 1 用心討論,共獲提升!
qaz007 + 1 + 1 用心討論,共獲提升!
victos + 1 + 1 謝謝@Thanks!
zsq + 1 + 1 謝謝@Thanks!
fengbolee + 1 + 1 用心討論,共獲提升!
Issac=Li + 1 用心討論,共獲提升!
獨行風云 + 1 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!
小小金 + 1 + 1 我很贊同!
dedegoodboy + 1 + 1 我很贊同!
黑色小星星 + 1 + 1 用心討論,共獲提升!
i66235 + 1 + 1 熱心回復!

查看全部評分

發帖前要善用論壇搜索500彩票邀请码功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
 樓主| 宸道移動安全 發表于 2020-9-27 17:51 |樓主
a767421378 發表于 2020-9-27 17:14
有的地方有點讀不懂 可以錄個分析視頻嘛 想學習一下

讀不懂地方你可以說出來,暫時沒有時間錄視頻
推薦
 樓主| 宸道移動安全 發表于 2020-9-29 09:05 |樓主
沙發
zhutou123 發表于 2020-9-18 17:06
3#
lifz888 發表于 2020-9-23 08:47
很好的實戰應用案例,支持原創,支持
4#
lynxtang 發表于 2020-9-26 09:24
謝謝,學習了,步驟很詳細,手把手系列。
5#
猛男z 發表于 2020-9-27 09:47
看不懂這個,不過支持原創,支持
6#
qaz007 發表于 2020-9-27 12:33
謝謝,學習了.
7#
總有刁民想約朕 發表于 2020-9-27 15:22
感謝分析
8#
a767421378 發表于 2020-9-27 17:14
有的地方有點讀不懂 可以錄個分析視頻嘛 想學習一下
10#
張海洋 發表于 2020-9-28 09:26
反編譯反編譯
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|處罰記錄|聯系我們|吾愛破解 - LCG - LSG ( )

GMT+8, 2020-10-24 14:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表

500彩票邀請碼-彩經網