中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

站長(zhǎng)工具大全企業(yè)網(wǎng)站的作用

站長(zhǎng)工具大全,企業(yè)網(wǎng)站的作用,網(wǎng)站首頁(yè)原型圖咋做,深圳學(xué)校網(wǎng)站建設(shè)文章目錄 一些資料IDA調(diào)試命令I(lǐng)DA調(diào)試安卓的10個(gè)技巧objection基本使用 Wallbreaker1frida源碼閱讀之frida-java 第一個(gè)實(shí)例EasyJNI第二個(gè)實(shí)例objection資料 art_trace2.pyart_trace2.js IDAFrida分析CTF樣本和Frid源碼和objection模塊 一些資料 IDA調(diào)試命令 adb devices adb…

文章目錄

  • 一些資料
    • IDA調(diào)試命令
    • IDA調(diào)試安卓的10個(gè)技巧
    • objection基本使用+ Wallbreaker1
    • frida源碼閱讀之frida-java
  • 第一個(gè)實(shí)例EasyJNI
  • 第二個(gè)實(shí)例
  • objection
    • 資料
  • art_trace2.py
  • art_trace2.js

IDA+Frida分析CTF樣本和Frid源碼和objection模塊

一些資料

IDA調(diào)試命令

adb devices
adb push d:\as /data/local/tmp/asadb shell
suchmod 777 /data/local/tmp/as/data/local/tmp/as
/data/local/tmp/as -p31928再開(kāi)一個(gè)cmd窗口
adb forward tcp:23946 tcp:23946
adb forward tcp:31928 tcp:31928adb shell am start -D -n com.yaotong.crackme/.MainActivity
adb shell am start -D -n com.wolf.ndktest/.MainActivity
adb shell am start -D -n com.faloo.BookReader4Android/com.faloo.app.activity.LogoPageActivity
adb shell am start -D -n com.example.helloworld/com.example.helloworld.MainActivity
adb shell am start -D -n com.pingan.peanut/com.pingan.peanut.activity.GuideActivity
adb shell am start -D -n com.lalamove.huolala.driver/.main.mvp.ui.SplashActivity打開(kāi)DDMS或者執(zhí)行adb forward tcp:8700 jdwp:7319jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8616如果出現(xiàn)錯(cuò)誤
查看serverSocket所監(jiān)聽(tīng)的端口
netstat -naostatic main(void)
{
auto fp, dexAddress, end, size;
dexAddress = 0xD9B18000;
size = 0xBF000;
end = dexAddress + size;
fp = fopen("C:\\Users\\Administrator\\Desktop\\upx.so", "wb");
for ( ; dexAddress < end; dexAddress++ )
fputc(Byte(dexAddress), fp);
}動(dòng)態(tài)調(diào)式本身就是很復(fù)雜的,和APP本身,安卓系統(tǒng),IDA軟件,電腦環(huán)境,要下斷的函數(shù)等都有聯(lián)系,
任何一個(gè)因素都可能影響動(dòng)態(tài)調(diào)試的成敗。大部分錯(cuò)誤都在JDB啟動(dòng)那一步,網(wǎng)上沒(méi)有好的解決或原因
分析,下面就做一些小結(jié):
1.不滿足動(dòng)態(tài)調(diào)試條件,安卓系統(tǒng)配置文件build.prop的ro.debugable或APP的Androidmainfest.xml中的android:debugable,必須兩個(gè)有1個(gè)為true2.使用jdb前的步驟出現(xiàn)錯(cuò)誤:如android_server文件權(quán)限不夠,沒(méi)有am start啟動(dòng)目標(biāo)程序等。
3.一般來(lái)說(shuō),使用jdb連接前后都是可以下斷的,但確實(shí)會(huì)出現(xiàn),有的必須jdb連接前下斷,有的必須jdb連接后下斷,否則可能出現(xiàn)錯(cuò)誤。
4.雖然說(shuō)jdb連接前后都可以下斷,但在jdb連接前,一定要先用IDA附加,這個(gè)次序是一定的。
5.jdb屬于電腦的JDK,如果JDK出錯(cuò),JDB也可能出錯(cuò)。有關(guān)so層逆向分析的問(wèn)題
問(wèn)題解決:
1.加密方法在一個(gè)叫l(wèi)ibmt2.so的so文件中,然后用ida動(dòng)態(tài)調(diào)試附加之后,
發(fā)現(xiàn)搜不到這個(gè)libmt2.so的so文件,這種類(lèi)型問(wèn)題怎么解決?第一步:要先判斷so文件是否已經(jīng)加載到內(nèi)存中 如果在IDA里面搜索不到第二步:cat /proc/$pid/maps 執(zhí)行該命令獲取模塊列表信息獲取指定應(yīng)用程序的進(jìn)程pidps 獲取當(dāng)前存在進(jìn)程信息補(bǔ)充:|grep 特征字符串ida工具里面搜索不到?  如何下段調(diào)試?解決方法:
b3cfe000-b3d0c000 r-xp 00000000 b3:17 521239     /data/app/bin.mt.plus-2/lib/arm/libmt2.so
b3d0c000-b3d0d000 r--p 0000d000 b3:17 521239     /data/app/bin.mt.plus-2/lib/arm/libmt2.so
b3d0d000-b3d0e000 rw-p 0000e000 b3:17 521239     /data/app/bin.mt.plus-2/lib/arm/libmt2.sob3cfe000 模塊起始地址+偏移地址(ida靜態(tài)分析時(shí)在反匯編窗口中的左邊的地址欄)dd if=/dev/zero of=/data/local/tmp/info.txt bs=1 count=1if 代表輸入文件。如果不指定if,默認(rèn)就會(huì)從stdin中讀取輸入,/dev/zero 是一個(gè)字符設(shè)備,會(huì)不斷返回0值字節(jié)(\0)。
of 代表輸出文件。如果不指定of,默認(rèn)就會(huì)將stdout作為默認(rèn)輸出。
bs 代表字節(jié)為單位的塊大小。 
count 代表被復(fù)制的塊數(shù)。 獲取指定進(jìn)程模塊信息
cat /proc/6594/maps >info.txtdex是看0x20處找大小,odex是看0x32處就有
dd if=/proc/7081/mem of=/data/local/tmp/dump.so skip=3421749248 bs=1 count=16384tcpdump+Wireshark:
adb shell tcpdump -p -vv -s 0 -w /sdcard/capture.pcap 開(kāi)始抓包
ctrl+c	結(jié)束抓包
adb pull /sdcard/capture.pcap 導(dǎo)出文件tcpdump下載地址
https://www.androidtcpdump.com/android-tcpdump/downloads孤挺花(Armariris)基于LLVM的支持多平臺(tái)多語(yǔ)言的混淆器開(kāi)源工程:https://github.com/GoSSIP-SJTU/ArmaririsControl Flow Flattening(-fla,控制流程平坦化)
Bogus Control Flow(-bcf,虛假控制流程)
Instructions Substitution & SplitBasicBlock (-sub,指令替換)
字符串加密Pass
函數(shù)名稱(chēng)加密Pass分析技巧:
分析被ollvm混淆的算法的時(shí)候,關(guān)心的參數(shù)的加密過(guò)程,以及結(jié)果的生成過(guò)程。Android源碼在線閱讀:http://androidxref.com/http://aospxref.com/系統(tǒng)源碼下載地址
鏈接:https://pan.baidu.com/s/1IW-UR2UaDQaEQKB8DRa_bg 提取碼:n5sb 	seLinux安全機(jī)制:adb shell getenforce	adb shell setenforce 0當(dāng)系統(tǒng)引導(dǎo)程序啟動(dòng)Linux內(nèi)核,內(nèi)核會(huì)加載各種數(shù)據(jù)結(jié)構(gòu),和驅(qū)動(dòng)程序,
加載完畢之后,Android系統(tǒng)開(kāi)始啟動(dòng)并加載第一個(gè)用戶(hù)級(jí)別的進(jìn)程,
即init進(jìn)程。
1.啟動(dòng)電源以及系統(tǒng)啟動(dòng)當(dāng)電源按下時(shí)引導(dǎo)芯片代碼從預(yù)定義的地方(固化在ROM)開(kāi)始執(zhí)行加載引導(dǎo)程序BootLoader到ARM,然后執(zhí)行
2.引導(dǎo)程序bootloader引導(dǎo)程序BootLoader是在Android操作系統(tǒng)運(yùn)行前的一個(gè)小程序,它的主要作用是把系統(tǒng)OS拉起來(lái)并運(yùn)行
3.Linux內(nèi)核啟動(dòng)當(dāng)內(nèi)核啟動(dòng)時(shí),設(shè)置換成、被好好存儲(chǔ)器、計(jì)劃列表、加載驅(qū)動(dòng)當(dāng)內(nèi)核完成系統(tǒng)設(shè)置時(shí),它首先在系統(tǒng)文件中尋找init.rc文件,并啟動(dòng)init進(jìn)程
4.init進(jìn)程啟動(dòng)創(chuàng)建和掛載啟動(dòng)需要的文件目錄初始化和啟動(dòng)屬性服務(wù)解析init.rc配置文件并啟動(dòng)zygote進(jìn)程
5.zygote進(jìn)程啟動(dòng)創(chuàng)建AndroidRuntime并調(diào)用其start函數(shù),啟動(dòng)zygote進(jìn)程創(chuàng)建java虛擬機(jī)并為java虛擬機(jī)注冊(cè)JNI函數(shù)通過(guò)JNI調(diào)用ZygoteInit的main方法進(jìn)入zygote的java框架層通過(guò)registerServerSocket方法創(chuàng)建服務(wù)器端socket,并通過(guò)runSelectLoop方法等待AMS的請(qǐng)求來(lái)創(chuàng)建新的應(yīng)用程序進(jìn)程啟動(dòng)SystemServer進(jìn)程,該進(jìn)程主要用來(lái)創(chuàng)建系統(tǒng)服務(wù)
6.systemserver進(jìn)程啟動(dòng)啟動(dòng)binder線程池,這樣就可以與其他進(jìn)程進(jìn)行通信創(chuàng)建SystemServiceManager,其用于對(duì)系統(tǒng)的服務(wù)進(jìn)行創(chuàng)建、啟動(dòng)和生命周期管理啟動(dòng)各種系統(tǒng)方法(引導(dǎo)服務(wù)、核心服務(wù)、其他服務(wù))
7.launcher啟動(dòng)Android 8.1.0 libart.so 32 JNI_onLoad
.text:0024F88C
.text:0024F88C loc_24F88C                              ; CODE XREF: .text:0024FD9Cj
.text:0024F88C                                         ; .text:0024FE10j
.text:0024F88C                 MOV             R0, R6
.text:0024F88E                 MOVS            R1, #0
.text:0024F890                 BLX             R5
.text:0024F892                 MOV             R7, R0
.text:0024F894                 LDR             R0, [R6,#4]
.text:0024F896                 LDR.W           R0, [R0,#0x2D4]
.text:0024F89A                 CBZ             R0, loc_24F8A6
.text:0024F89C                 CMP             R0, #0x15
.text:0024F89E                 BGT             loc_24F8A6
.text:0024F8A0                 MOVS            R0, #0xBAndroid 8.1.0 libart.so 64 JNI_onLoad
.text:0000000000300F68 loc_300F68                              ; CODE XREF: art::JavaVMExt::LoadNativeLibrary(_JNIEnv *,std::__1::basic_string<char,std::__1::char_traits<char>,std::__1::allocator<char>> const&,_jobject *,_jstring *,std::__1::basic_string<char,std::__1::char_traits<char>,std::__1::allocator<char>>*)+FAC↓j
.text:0000000000300F68                                         ; art::JavaVMExt::LoadNativeLibrary(_JNIEnv *,std::__1::basic_string<char,std::__1::char_traits<char>,std::__1::allocator<char>> const&,_jobject *,_jstring *,std::__1::basic_string<char,std::__1::char_traits<char>,std::__1::allocator<char>>*)+1030↓j
.text:0000000000300F68                 MOV             X0, X22
.text:0000000000300F6C                 MOV             X1, XZR
.text:0000000000300F70                 BLR             X27
.text:0000000000300F74                 LDR             X8, [X22,#8]
.text:0000000000300F78                 MOV             W24, W0
.text:0000000000300F7C                 LDR             W8, [X8,#0x4A8]
.text:0000000000300F80                 CBZ             W8, loc_300F94
.text:0000000000300F84                 CMP             W8, #0x15
.text:0000000000300F88                 B.GT            loc_300F94
.text:0000000000300F8C                 MOV             W0, #0xBAndroid 8.1.0 linker 32 function
.text:00013562                 LDR             R1, =(aLinker - 0x13572)
.text:00013564                 ADR             R2, aCallingCTorSPF ; "[ Calling c-tor %s @ %p for '%s' ]"
.text:00013566                 MOVS            R0, #4
.text:00013568                 MOV             R3, R4
.text:0001356A                 STRD.W          R6, R5, [SP]
.text:0001356E                 ADD             R1, PC  ; "linker"
.text:00013570                 BL              __dl_async_safe_format_log
.text:00013574
.text:00013574 loc_13574                               ; CODE XREF: __dl__ZL13call_functionPKcPFviPPcS2_ES0_+18↑j
.text:00013574                 LDR             R0, =(__dl_g_envp_ptr - 0x1357A)
.text:00013576                 ADD             R0, PC  ; __dl_g_envp_ptr
.text:00013578                 LDR             R0, [R0] ; __dl_g_envp
.text:0001357A                 LDR             R2, [R0]
.text:0001357C                 LDR             R0, =(__dl_g_argv_ptr - 0x13582)
.text:0001357E                 ADD             R0, PC  ; __dl_g_argv_ptr
.text:00013580                 LDR             R0, [R0] ; __dl_g_argv
.text:00013582                 LDR             R1, [R0]
.text:00013584                 LDR             R0, =(__dl_g_argc_ptr - 0x1358A)
.text:00013586                 ADD             R0, PC  ; __dl_g_argc_ptr
.text:00013588                 LDR             R0, [R0] ; __dl_g_argc
.text:0001358A                 LDR             R0, [R0]
.text:0001358C                 BLX             R6
.text:0001358E                 LDR             R0, =(__dl_g_ld_debug_verbosity - 0x13594)
.text:00013590                 ADD             R0, PC  ; __dl_g_ld_debug_verbosity
.text:00013592                 LDR             R0, [R0]Android 8.1.0 linker 64 function
.text:0000000000020838                 ADRP            X2, #aCallingCTorSPF@PAGE ; "[ Calling c-tor %s @ %p for '%s' ]"
.text:000000000002083C                 MOV             W0, #4
.text:0000000000020840                 MOV             X1, X23
.text:0000000000020844                 ADD             X2, X2, #aCallingCTorSPF@PAGEOFF ; "[ Calling c-tor %s @ %p for '%s' ]"
.text:0000000000020848                 MOV             X3, X26
.text:000000000002084C                 MOV             X4, X28
.text:0000000000020850                 MOV             X5, X19
.text:0000000000020854                 BL              __dl_async_safe_format_log
.text:0000000000020858
.text:0000000000020858 loc_20858                               ; CODE XREF: __dl__ZL10call_arrayIPFviPPcS1_EEvPKcPT_mbS5_+D0↑j
.text:0000000000020858                 ADRP            X8, #__dl_g_argc_ptr@PAGE
.text:000000000002085C                 LDR             X8, [X8,#__dl_g_argc_ptr@PAGEOFF]
.text:0000000000020860                 LDR             W0, [X8]
.text:0000000000020864                 ADRP            X8, #__dl_g_argv_ptr@PAGE
.text:0000000000020868                 LDR             X8, [X8,#__dl_g_argv_ptr@PAGEOFF]
.text:000000000002086C                 LDR             X1, [X8]
.text:0000000000020870                 ADRP            X8, #__dl_g_envp_ptr@PAGE
.text:0000000000020874                 LDR             X8, [X8,#__dl_g_envp_ptr@PAGEOFF]
.text:0000000000020878                 LDR             X2, [X8]
.text:000000000002087C                 BLR             X28
.text:0000000000020880                 LDR             W8, [X25,#__dl_g_ld_debug_verbosity@PAGEOFF]
.text:0000000000020884                 CMP             W8, #2.text:0000000000020AE0                 ADRP            X1, #__dl_$d.20_0@PAGE ; "linker"
.text:0000000000020AE4                 ADRP            X2, #aCallingCTorSPF@PAGE ; "[ Calling c-tor %s @ %p for '%s' ]"
.text:0000000000020AE8                 ADRP            X3, #aDtInit@PAGE ; "DT_INIT"
.text:0000000000020AEC                 ADD             X1, X1, #__dl_$d.20_0@PAGEOFF ; "linker"
.text:0000000000020AF0                 ADD             X2, X2, #aCallingCTorSPF@PAGEOFF ; "[ Calling c-tor %s @ %p for '%s' ]"
.text:0000000000020AF4                 ADD             X3, X3, #aDtInit@PAGEOFF ; "DT_INIT"
.text:0000000000020AF8                 MOV             W0, #4
.text:0000000000020AFC                 MOV             X4, X20
.text:0000000000020B00                 MOV             X5, X21
.text:0000000000020B04                 BL              __dl_async_safe_format_log
.text:0000000000020B08
.text:0000000000020B08 loc_20B08                               ; CODE XREF: __dl__ZN6soinfo17call_constructorsEv+1C0↑j
.text:0000000000020B08                 ADRP            X8, #__dl_g_argc_ptr@PAGE
.text:0000000000020B0C                 ADRP            X9, #__dl_g_argv_ptr@PAGE
.text:0000000000020B10                 ADRP            X10, #__dl_g_envp_ptr@PAGE
.text:0000000000020B14                 LDR             X8, [X8,#__dl_g_argc_ptr@PAGEOFF]
.text:0000000000020B18                 LDR             X9, [X9,#__dl_g_argv_ptr@PAGEOFF]
.text:0000000000020B1C                 LDR             X10, [X10,#__dl_g_envp_ptr@PAGEOFF]
.text:0000000000020B20                 LDR             W0, [X8]
.text:0000000000020B24                 LDR             X1, [X9]
.text:0000000000020B28                 LDR             X2, [X10]
.text:0000000000020B2C                 BLR             X20
.text:0000000000020B30                 LDR             W8, [X23,#__dl_g_ld_debug_verbosity@PAGEOFF]
.text:0000000000020B34                 CMP             W8, #2

IDA調(diào)試安卓的10個(gè)技巧

請(qǐng)?zhí)砑訄D片描述

objection基本使用+ Wallbreaker1

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

frida源碼閱讀之frida-java

請(qǐng)?zhí)砑訄D片描述

第一個(gè)實(shí)例EasyJNI

在這里插入圖片描述
發(fā)現(xiàn)只有32位的so
在這里插入圖片描述
運(yùn)行64位的frida
在這里插入圖片描述
在這里插入圖片描述
常見(jiàn)的ps命令及輸出格式
在這里插入圖片描述

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 168448  9776 ?        Ss   Aug28   0:03 /usr/lib/systemd/systemd --system --deserialize 19
root         2  0.0  0.0      0     0 ?        S    Aug28   0:00 [kthreadd]
...

第二個(gè)實(shí)例

jadx先看java代碼,看調(diào)用的時(shí)機(jī)
在這里插入圖片描述在這里插入圖片描述

復(fù)制這個(gè)代碼
在這里插入圖片描述找到偏移地址
在這里插入圖片描述
因?yàn)槲业氖謾C(jī)是64位的,將64位的so庫(kù)放入到IDA工具中
在這里插入圖片描述選中我們要調(diào)試的函數(shù)

在這里插入圖片描述
如何看64位的指令
在這里插入圖片描述
在這里插入圖片描述
arm64位指令集
在這里插入圖片描述

將Graph View切換成TextView
在這里插入圖片描述
目標(biāo)要得到的結(jié)果
在這里插入圖片描述在這里插入圖片描述IDA導(dǎo)入頭文件

  • 步驟一:點(diǎn)擊IDA Pro 菜單項(xiàng)“File->Load file->Parse c header file ” 選擇jni.h頭文件
  • 步驟二:點(diǎn)擊IDA Pro 主界面上的“Structures”選項(xiàng)卡 然后按下Insert鍵打開(kāi)“Create structure/union”對(duì)話框,點(diǎn)擊界面上的"Add standard structure"按鈕,在打開(kāi)的結(jié)構(gòu)體選擇對(duì)話框中選擇JNINativeInterface并點(diǎn)擊OK返回,同理JNIInvokeInterface結(jié)構(gòu)體也導(dǎo)入進(jìn)來(lái)
  • 步驟四:在0x29C等調(diào)用env的地方右鍵,出現(xiàn)jni函數(shù)
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述輸出一個(gè)結(jié)果
    在這里插入圖片描述
    在這里插入圖片描述

在這里插入圖片描述
使用下面的腳本

// HOOK未導(dǎo)出函數(shù)
function Test02() {// 絕對(duì)地址=so模塊起始地址(基地址)+偏移地址let baseAddr = Module.findBaseAddress("libcyberpeace.so");send("baseAddr:" + baseAddr);// 指令集 分為ARM指令、thumb指令// ARM指令地址不變  thumb指令地址+1 sub_ 開(kāi)頭的函數(shù) 這種函數(shù)只能使用這種方式來(lái)進(jìn)行Interceptor.attach(baseAddr.add(0x840), {onEnter: function (args) {send("============CheckString===============");send(args[0]); // 第一個(gè)參數(shù)send(args[1]); // 第二個(gè)參數(shù)send(args[2]); // 第三個(gè)參數(shù)// 獲取JNIEnv*let env = Java.vm.tryGetEnv();// 將jstring 轉(zhuǎn)換 const char*let str = env.getStringUtfChars(args[2], 0);send(str.readCString());console.log(hexdump(str, {offset: 0,length: 32,header: true,ansi: false}));},onLeave: function (retval) {send("============result===============");send(retval);// 獲取JNIEnv*let env = Java.vm.tryGetEnv();// 將jstring 轉(zhuǎn)換 const char*let str = env.getStringUtfChars(retval, 0);send(str.readCString());}});
}Java.perform(function () {Test02();
})

能得到正確的結(jié)果
在這里插入圖片描述返回結(jié)果是0x0,并不是我們想要的結(jié)果,所以要使用IDA調(diào)試一下
關(guān)閉frida-server
使用64位的android_server64
在這里插入圖片描述
選擇一個(gè)進(jìn)程
在這里插入圖片描述
搜索模塊
在這里插入圖片描述
在這里插入圖片描述
雙擊進(jìn)入, 并找到我們要找到的函數(shù)
在這里插入圖片描述跳轉(zhuǎn)到你想要看指定寄存器的位置
在這里插入圖片描述在這里插入圖片描述
老師又返回看了看靜態(tài)分析的函數(shù)
在這里插入圖片描述
拿數(shù)據(jù)在這里插入圖片描述
分析后的結(jié)果
在這里插入圖片描述

objection

資料

Windows/Ubuntu安裝frida和objection 原創(chuàng)
kali Linux 逆向環(huán)境pyenv、Frida、objection、jadx、的安裝

先運(yùn)行frida-sever
在這里插入圖片描述
端口轉(zhuǎn)發(fā)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述
跳轉(zhuǎn)到指定的界面
在這里插入圖片描述生成Hook樣例代碼
在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述監(jiān)控類(lèi)
在這里插入圖片描述

art_trace2.py

# -*- coding: utf-8 -*-import os
import sys
import frida
import codecsdef message(message, data):if message["type"] == 'send':print("[*] {0}".format(message['payload']))else:print(message)# process = frida.get_remote_device().attach('Transformers')
# if not os.path.isfile('./art_trace2.js'):
#     raise TypeError("./art_trace2.js does not exist")
# with codecs.open('./art_trace2.js', 'r', 'UTF-8') as file:
#     js_code = file.read()
# script = process.create_script(js_code)
# script.on("message", message)
# script.load()
# sys.stdin.read()
rdev = frida.get_remote_device()
pid = rdev.spawn(["com.zhuotong.crackme"])
process = rdev.attach(pid)
if not os.path.isfile('art_trace2.js'):raise TypeError("./art_trace2.js does not exist")
with codecs.open('art_trace2.js', 'r', 'UTF-8') as file:js_code = file.read()
script = process.create_script(js_code)
script.on('message', message)
script.load()
rdev.resume(pid)
sys.stdin.read()

art_trace2.js

Java.perform(function () {let symbols = Module.enumerateSymbolsSync("libart.so");let addrRegisterNatives = null;for (let i = 0; i < symbols.length; i++) {let symbol = symbols[i];//_ZN3art3JNI15RegisterNativesEP7_JNIEnvP7_jclassPK15JNINativeMethodiif (symbol.name.indexOf("art") >= 0 &&symbol.name.indexOf("JNI") >= 0 && symbol.name.indexOf("RegisterNatives") >= 0 && symbol.name.indexOf("CheckJNI") < 0) {addrRegisterNatives = symbol.address;console.log("RegisterNatives is at ", symbol.address, symbol.name);}}if (addrRegisterNatives != null) {Interceptor.attach(addrRegisterNatives, {onEnter: function (args) {console.log("[RegisterNatives] method_count:", args[3]);let java_class = args[1];let class_name = Java.vm.tryGetEnv().getClassName(java_class);let methods_ptr = ptr(args[2]);let method_count = parseInt(args[3]);for (let i = 0; i < method_count; i++) {let name_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3));let sig_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3 + Process.pointerSize));let fnPtr_ptr = Memory.readPointer(methods_ptr.add(i * Process.pointerSize * 3 + Process.pointerSize * 2));let name = Memory.readCString(name_ptr);let sig = Memory.readCString(sig_ptr);let find_module = Process.findModuleByAddress(fnPtr_ptr);console.log("[RegisterNatives] java_class:", class_name, "name:", name, "sig:", sig, "fnPtr:", fnPtr_ptr, "module_name:", find_module.name, "module_base:", find_module.base, "offset:", ptr(fnPtr_ptr).sub(find_module.base));// console.log("[RegisterNatives] java_class:", class_name, "name:", name, "sig:", sig, "fnPtr:", fnPtr_ptr);}}});}
});
http://m.risenshineclean.com/news/62086.html

相關(guān)文章:

  • 教育類(lèi)網(wǎng)站怎么做優(yōu)化搜索引擎優(yōu)化排名培訓(xùn)
  • bbs網(wǎng)站模板下載網(wǎng)站運(yùn)營(yíng)策劃書(shū)范文
  • 天寧常州做網(wǎng)站長(zhǎng)沙市seo百度關(guān)鍵詞
  • 新昌網(wǎng)站制作網(wǎng)站投放廣告費(fèi)用
  • 注冊(cè)功能網(wǎng)站建設(shè)icp備案查詢(xún)官網(wǎng)
  • 外貿(mào)網(wǎng)站建設(shè)公司渠道安卓系統(tǒng)優(yōu)化軟件
  • 營(yíng)銷(xiāo)型網(wǎng)站建設(shè)要懂代碼嗎西安網(wǎng)站制作工作室
  • 房地產(chǎn)公司 網(wǎng)站建設(shè)seo網(wǎng)絡(luò)優(yōu)化師
  • 做網(wǎng)站用sql和mysql域名批量查詢(xún)
  • 獨(dú)立外貿(mào)網(wǎng)站建設(shè)電商運(yùn)營(yíng)自學(xué)全套教程
  • 怎么對(duì)網(wǎng)站做壓力測(cè)試怎樣做關(guān)鍵詞排名優(yōu)化
  • 網(wǎng)絡(luò)公司網(wǎng)站賞析企業(yè)推廣視頻
  • 網(wǎng)站優(yōu)化軟件排行榜seo企業(yè)推廣案例
  • wordpress 圖片被壓縮seo包年服務(wù)
  • 廈門(mén)無(wú)憂網(wǎng)站建設(shè)有限公司網(wǎng)絡(luò)運(yùn)營(yíng)推廣合作
  • 臨淄網(wǎng)站建設(shè)公司網(wǎng)絡(luò)推廣自學(xué)
  • 關(guān)于人大網(wǎng)站建設(shè)免費(fèi)推廣產(chǎn)品平臺(tái)有哪些
  • 開(kāi)封景區(qū)網(wǎng)站建設(shè)方案寧德市蕉城區(qū)疫情
  • 彩票網(wǎng)站做任務(wù)賺錢(qián)地推是什么
  • 網(wǎng)站三網(wǎng)合一雙11銷(xiāo)量數(shù)據(jù)
  • 具有品牌的網(wǎng)站建設(shè)友情鏈接的方式如何選擇
  • 網(wǎng)站開(kāi)發(fā)企劃書(shū)網(wǎng)站收錄檢測(cè)
  • 學(xué)計(jì)算機(jī)出來(lái)能干什么seo搜索優(yōu)化技術(shù)
  • 石家莊專(zhuān)業(yè)網(wǎng)站建設(shè)百度指數(shù)批量查詢(xún)工具
  • 河北省做網(wǎng)站的企業(yè)常用seo站長(zhǎng)工具
  • 高端網(wǎng)站建設(shè)成都刷關(guān)鍵詞排名seo軟件
  • 西安 企業(yè)網(wǎng)站建設(shè)天津seo診斷
  • 個(gè)人做的網(wǎng)站有什么危險(xiǎn)嗎培訓(xùn)學(xué)校招生營(yíng)銷(xiāo)方案
  • 當(dāng)?shù)亟ㄔO(shè)局網(wǎng)站宿遷網(wǎng)站建設(shè)制作
  • 優(yōu)惠網(wǎng)站如何做南寧seo怎么做優(yōu)化團(tuán)隊(duì)