用到的工具
1.IDA7.2
2.GDA3.72
3.Cheat Engine 6.5
目的:
主要是學習下Cheat Engine工具怎么在PC端運行,調試安卓程序!
下載鏈接:
鏈接:https://pan.baidu.com/s/1Q_Q8ovHLXUcsRjLyCf0d0w
提取碼:u72u
1.程序界面
2.GDA打開程序,定位到關鍵驗證位置,發現核心驗證在so層,函數名為SecurityCheck,參數為String類型我們輸入的假碼
3.提取出so文件,打開IDA,定位到驗證函數
4.F5查看偽代碼,采用的是JNI靜態注冊,算法很簡單
5.對偽代碼進行整理分析后得知,當我們輸入的字符串和全局變量strRightKey相同即注冊成功!
8.轉到strRightKey查看正確的Key,結果是"woshidaan"
9.然而實際輸入后提示驗證碼校驗失敗!
10.通過IDA分析我們已經可以肯定,最終一定會和strRightKey做對比,為什么這里卻不成功呢?很可能是程序在運行之后對這個字符串進行了修改,真正的key並不是這個,需要跑起來才行。
11.本打算使用IDA附加單步調試去跟蹤正確的key,結果發現有反調試!那我們換個思路,用CE去附加APK進程,然后找到字符串相對偏移,就拿到了正確key了!所以現在IDA中記錄下key偏移為0x4450
12.執行命令【adb push C:\ceserver_x86 /data/local/tmp】把ce的調試服務ceserver_x86發送到模擬器/data/local/tmp目錄下
13.在adb shell中切換到/data/local/tmp目錄下執行【chmod 777 ceserver_x86】,將ceserver_x86修改為777權限,然后執行【./ceserver_x86】啟動ce調試服務
14.新開CMD,執行【adb forward tcp:52736 tcp:52736】進行端口轉發
15.重新進入adb shell,執行【ps】,查詢所有進程信息,找到我們要調試的進程ID為3080
16.執行【cat /proc/3080/maps】查詢進程ID為3080的進程所有模塊信息,可以看到模塊基址為0xC000000,根據上面得到的Key偏移0x4450,那么正確key位置應該在0xC004450
17.打開CE,進程->網絡->輸入127.0.0.1端口57236
18.選擇進程並打開
19.添加地址0xC004450,看到正確key為"aiyou,bucuoo"
20.驗證