標籤:
參考:網易雲加密:http://apk.aq.163.com網易雲捕:http://crash.163.com
1、結構體的建立及匯入,結構體指標等。以JniNativeInterface, DexHeader為例。 解析Dex的函數如下:F5後如下:File->load file->parser c header file,匯入Dex.h中a1,右鍵轉成結構體,選擇dexheader,效果如下:
2、函數指標時的參數個數調整,不定參數等。以__android_log_print為例,選中該函數。Edit->operand type-> set operand type,修改參數如下:int (__cdecl *)(int, char *, char *, char *, int *, int *),F5重新整理後,效果如下:
3、thumb/arm模式的轉換快速鍵ALT +G,其中0x01是THUMB,0x00是ARM模式。一般4個位元組ARM模式,兩個位元組為THUMB模式,如:
4、函數被誤認為chunk,導致調用者函數多個入口。以Java_by_Ericky_crackme01_JNI_EatRice為例,可以看到有兩個入口。來到第一個入口的結束位置為BX跳轉指令, 應該讓他跳轉到第二個入口出,才正確。所有首先要remove function tail,選中,結尾處,然後edit->functions->remove function tail,效果:然後再將跳轉指令BL,修改為Call,edit->others->force bl call,效果5、C++RTTI,類名識別。來的 JNI_OnLoad處sub_A558為建構函式。可以得在該函數名為9ArtLoader,
6、建立函數,設定函數結尾地址。F5,效果如下:解決辦法,按P,再F5。如果P沒有效果,則可以選中後再按P。7、Elf的修複,記憶體dump該so及其以來檔案,然後修改dump出來的基址,File-->LoadFile-->binary file。dump命令為:dd if=/proc/1935/mem of=/sdcard/alimsc4 skip=1578049536 ibs=1 count=39936008、資料複製、patch。 選中資料,然後edit->export data,即可9、指令碼,idc,IDAPythonhttp://magiclantern.wikia.com/wiki/IDAPython/introhttp://drops.wooyun.org/tips/11849http://drops.wooyun.org/tips/12060
10、lsof查看被刪除的檔案,cat從記憶體中得到被刪除的檔案[email protected]:/ # lsof |busybox grep com.sxiaoao.car3d3system_se 523 system 298 /data/app/com.sxiaoao.car3d3-2.apkcom.sxiao 10370 u0_a65 44 /data/data/com.sxiaoao.car3d3/files/app_sdk103700_.jar (deleted)com.sxiao 10370 u0_a65 48 /data/app/com.sxiaoao.car3d3-2.apkcom.sxiao 10370 u0_a65 49 /data/app/com.sxiaoao.car3d3-2.apk
10370是進程號 44是開啟檔案的fd 檔案fd映射在/prop/pid/fd裡面用cat命令把檔案拷貝出來1|[email protected]:/ # cat /proc/10370/fd/44 > /data/local/tmp/test.jar
11、arm指令模擬器
12、為什麼不能F5, 不能全信F5
Android安卓破解之逆向分析SO常用的IDA分析技巧