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

 找回密碼
 注冊[Register]

QQ登錄

500彩票邀请码只需一步,快速開始

搜索
查看: 2141|回復: 30

[Android 原創] 快速定位關鍵代碼

  [復制鏈接]
樓主
宸道移動安全 發表于 2020-10-15 17:59 回帖獎勵
APK的特點


1.在學習定位技巧之前,先分析一下APK的3個特點:
(1)每個APK文件中都包含有一個AndroidManifest.xml文件,它記錄著軟件的一些基本信息。
(2)一個Android程序包含一個或多個Activity組成,不同的Activity實現不同的功能。每個Android程序有且只有一個主Acitivity。隱藏程序除外,它沒有主Acitivity。
每個Activity都是Android程序的一個顯示頁面,負責數據的處理及展示的工作。
(3)鑒于Application類啟動的時機很早,一些授權驗證的流程可能存在于這里,所以需要著重注意Application。


定位關鍵代碼的方法


一個完整的Android程序反編譯后的代碼量可能非常龐大,要想在這浩如煙海的代碼中找到程序的關鍵代碼,是需要很多經驗與技巧的。總結有以下6種定位關鍵代碼的方法:

1.信息反饋法(資源id/字符串)
所謂信息反饋法是指根據程序運行時給出的反饋信息作為突破口,定位關鍵代碼。例如錯誤提示,運行提示等等,可以在程序中直接搜索字符串。
當提示信息存在于String.xml資源文件中時,我們可以根據R.java的映射文件,查找對應的資源id ,然后在smali或者在IDA窗口進行搜索。

2.特征函數法(api函數)
這種定位代碼的方法與信息反饋法類似。在信息反饋法中,無論程序給出什么樣的反饋信息,終究是需要調用相關API函數來完成。比如彈出注冊碼錯誤的提示信息就需要調用Toast.MakeText().Show()方法。

3.順序查看法(分析程序執行流程/病毒分析)
從AndroidManifest.xml中找到主Activity界面,逐行順序分析代碼,掌握軟件的執行流程,通常在分析病毒軟件時使用。

4.代碼注入法(插入log/查看logcat/分析加解密)
代碼注入法又叫做插樁,即在關鍵反匯編代碼處,插入可以輸出logcat調試信息的代碼,這種方法在解密程序數據時經常使用。

5.棧跟蹤法
棧跟蹤法屬于動態調試方法,原理是輸出運行時棧調用跟蹤信息,然后查看函數調用序列,來理解方法的執行流程。

6.Method Profiling(方法剖析)
要用于熱點分析和性能優化。除了可以記錄每個函數占用的CPU時間外,還可以跟蹤所有的函數調用關系,并提供比棧跟蹤法更詳細的函數調用序列報告。

實戰去除RE文件管理器廣告


RE文件管理器是一款用來管理系統文件的工具,該工具需要root權限,逆向分析應用程序時使用它來管理相關文件。不過該工具存在每次關閉程序都會打開一個廣告界面的缺點。

此時我們要對RE文件管理器進行判斷,判斷它是否可以進行后續分析,實現想要的功能。

1.查殼:
先使用查殼工具進行查殼,會發現“shell”一欄顯示“此apk未采用加固或為未知加固廠商”,這表示該APK沒有加殼,如下圖所示,如果顯示該APP加殼了,在目前階段就果斷選擇放棄。



2.重新簽名:
接下來打開簽名工具,將RE文件管理器拖進來重新簽名,如下圖所示,重新簽名好后會彈出一個彈窗,在這里點擊“否”,如下圖所示,隨后生成了一個“RE文件管理器_Signed.apk”文件,打開雷電模擬器安裝運行,發現程序可以正常運行。如果程序報錯或者閃退就選擇放棄,說明存在簽名驗證。

   


3.反編譯該APP分析程序邏輯

在“工程管理器”中打開“AndroidManifest.xml”文件,找到程序入口界面的“android:name”屬性的值“com.kkkpppxzn”,如下圖所示



根據該值找到對應的smali文件,找到“onCreate”方法,如下圖所示



在指令開始位置按“鼠標右鍵”=》“插入代碼”=》“toast輸出”
選項插入Toast彈窗,保存。回編譯,安裝運行,發現程序可以正常運行。如下圖所示。如果程序崩潰或者閃退就選擇放棄。說明存在文件校驗。



注意:當字符串等關鍵信息搜不到時,可以從三個方向考慮:

1.字符串在so層。
2.字符串被加密。
3.結合了服務器,服務器返回,本地顯示。

4.去除RE文件管理器關閉程序時的廣告信息

總的來講,分四個步驟操作。

第一步:獲取該APP的主頁活動信息:
點擊左下角“windows”圖標;運行cmd命令;執行“adb shell dumpsys activity top”命令;獲取“com.speedsoftware.rootexplorer
/.RootExplorer”信息,如下圖所示



第二步:根據獲取到的信息在“工程管理器”中找到這個類,瀏覽該類的相關方法。
“onDestroy”方法是在關閉APP時被執行的,而且廣告信息是當前活動界面消失之后再彈出的,由此我們可以判斷廣告的相關邏輯必然是“onDestroy”方法里實現的。但“onDestroy”方法的邏輯比較多。


第三步:獲取廣告界面的信息:
點擊左下角“windows”圖標運行cmd命令,執行“adb shell dumpsys activity top”命令獲取“com.speedsoftware.rootexplorer/com.
AddDouDouWall2.WebPageDownLoadMainActivity”信息,如下圖所示



通過閱讀smali代碼,看到在“onDestroy”方法中的第五個dalvik指令中有廣告活動界面信息(“const-class v1, Lcom/AddDouDouWall2/WebPage
DownLoadMainActivity;”),繼續閱讀smali代碼,發現第七個dalvik指令中有(invoke-virtual {p0, v0}, Lcom/speedsoftware/rootexplorer/
RootExplorer;->startActivity(Landroid/content/Intent;)VstartActivity方法的調用。這條指令就是我們要獲取的信息,將這條指令進行注釋,即可去除廣告,如下圖所示





最后,回編譯,安裝運行。再關閉程序,發現沒有跳轉到廣告界面,說明成功去除了RE文件管理器的廣告信息。

小結:


1、定位關鍵代碼的技巧
(1)信息反饋法(資源id/字符串)
(2)特征函數法(api函數)
(3)順序查看法(分析程序執行流程/病毒分析)
(4)代碼注入法(插入log/查看logcat/分析加解密)
(5)棧跟蹤法(動態調式/函數調用流程)
(6)Method Profiling(動態調式/熱點分析/函數調用流程)

2、快速定位的步驟:
(1)反編譯 apk。
(2) 通過 AndroidManifest.xml 查找主 Activity。
(3)查看程序的入口方法:主 Activity 的 onCreate()方法。
(4)查看 Application 類(全局類,早于其他類啟動)的onCreate() 方法,該方法通常用作授權檢測。

免費評分

參與人數 11吾愛幣 +10 熱心值 +8 收起 理由
霏映 + 1 鼓勵轉貼優秀軟件安全工具和文檔!
iteamo + 2 熱心回復!
回家筆記~ + 1 + 1 謝謝@Thanks!
fc4lee + 1 + 1 用心討論,共獲提升!
Jeraxx + 1 + 1 用心討論,共獲提升!
幼稚鬼 + 1 用心討論,共獲提升!
muyu1314520 + 1 用心討論,共獲提升!
erss + 1 + 1 我很贊同!
J12138 + 1 + 1 學習了
木魚啊 + 1 + 1 歡迎分析討論交流,吾愛破解論壇有你更精彩!
天上飛來一只 + 1 我很贊同!

查看全部評分

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

推薦
yiwai2012 發表于 2020-10-16 16:20
417788939 發表于 2020-10-16 10:55
re管理器這個教程太多了吧,能不能換個樣品

棧追蹤對某些app還是很好用的。

這是易錦為了打廣告出的 類似公開課一樣的教程 點到為止
推薦
 樓主| 宸道移動安全 發表于 2020-10-17 11:01 |樓主
PJ599 發表于 2020-10-17 10:25
不懂就問,這都用到了什么工具啊

Android killer 、ida、jadx-jui、ddms、查殼工具、簽名工具、雷電模擬器、MT管理器、大概就這些吧
沙發
417788939 發表于 2020-10-16 10:55
re管理器這個教程太多了吧,能不能換個樣品

棧追蹤對某些app還是很好用的。
3#
發飆的熊貓君 發表于 2020-10-16 11:17
同意樓上
4#
chao888go 發表于 2020-10-16 13:19

同意樓上
5#
office1 發表于 2020-10-16 14:34
對的,求換個棧追蹤的。
6#
plasd 發表于 2020-10-16 16:02
收藏,有用
8#
quyun0517 發表于 2020-10-16 16:46
感謝分享
9#
1357zh 發表于 2020-10-16 21:37
感謝樓主分享
10#
律己 發表于 2020-10-16 22:04
厲害啊。
您需要登錄后才可以回帖 登錄 | 注冊[Register]

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

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

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

GMT+8, 2020-10-21 04:02

Powered by Discuz!

500彩票邀请码Copyright © 2001-2020, Tencent Cloud.

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

500彩票邀請碼-彩經網