您好,本站仅作演示所用,请勿下单付款!
商品分类

课时6:利用硬件断点快速分析某加壳APP的jni函数地址防追踪技巧

无法直接跟踪到, 主要因为, method 对象, 直接通过偏移去拿到对象后,通过地址去绑定, 这是一个策略. demo,

这种定位 安全性会高一一些, 可以绕过常规的地址.绑定追踪的一个方法. 不同的兼容安卓的版本和兼容性.

没有修改rom , API 那么就和官方的rom 的AOSP 保持一致.

课时1, 单条 svc call 的汇编指令的追踪的位置.

1, 知道svc call 的 发生位置.

知道位置后, 就和函数的hook 相同了. 难题, 怎么定位 svc call 在内存中的地址,

定位 App ,中的 SVC #0, 寄存器,

内存遍历, stalker , /unidbg/等等 扫描, svc syscall 的 内存的汇编指令的字节序列, 快速的定位出来所有的, 所有可能的, 也有可能漏掉, 漏掉情况, 后面再说.

使用 Frida 的 Memory API 定位内存中的 SVC 指令的两个方法.

1, 以模块起始地址为检索区间

问题, 针对加壳, 自定义 linker, 之类的 so 存在漏报

2, 以内存可以执行段为检索区间.

优势: 只要时机得当,就不会遗漏任何内存中的SVC syscall 指令.

init, init_array, JNI_OnLoad, 甚至是, 特定的JNI交互等等. 时机非常关键. 时机不对, 会漏掉,

如何找准时机,

init, init_array可以从Linker出发

JNI_OnLoad 可以从 dlsym定位

特定 JNI 交互,可以从 JniEnv 入手

既然过了, frida 的检测, 那么,可以找到 frida 检测发生的地方.

function scan(address: NativePointerValue, size: number | UInt64, pattern: string, callbacks: MemoryScanCallbacks): void;
syscall, 代表的是 字节序列,

通过 把 libc.so 基本库文件, 拿到本地, IDA反汇编后,的 关联的 c 源文件列表,就知道了它的用途.

类别文件示例功能简述
程序启动与初始化crtbegin_so.c, libc_init_common.cpp, __libc_init_main_thread.cpp初始化运行时环境、构造线程、注册构造器与析构器,启动主程序入口。
内存管理malloc_common.cpp, malloc_info.cpp, brk.cpp, mremap.cpp, ftruncate.cpp实现动态内存分配(malloc/free)、堆空间管理、内存映射、分配信息输出。
系统调用封装fork.cpp, exec.cpp, clone.cpp, open.cpp, readlink.cpp, ptrace.cpp包装内核系统调用,如创建进程、执行程序、文件操作、调试等。
线程与同步__cxa_thread_atexit_impl.cpp, thread_private.cpp, atomics_arm.c, semaphore.cpp实现线程私有析构钩子、线程局部存储、原子操作、信号量等同步机制。
信号处理sigaction.cpp, signal.cpp, sigqueue.cpp, __libc_current_sigrtmin.cpp提供完整的 POSIX 信号注册、发送、屏蔽与处理接口。
字符串与字符处理strchr.cpp, strnlen.c, strsignal.cpp, wchar.cpp, wctype.cpp实现 C 字符串函数和宽字符(Unicode)处理能力。
时间管理clock.cpp, clock_nanosleep.cpp, posix_timers.cpp, sys_time.cpp提供高精度计时、睡眠、POSIX 定时器与系统时间管理。
网络通信socket.cpp, accept.cpp, connect.cpp, arpa_inet.cpp, netdb.cpp, NetdClient.cpp实现套接字操作、IP 地址转换、与 Android 网络守护进程通信等。
系统信息与配置getauxval.cpp, getpagesize.cpp, sysconf.cpp, sysinfo.cpp, system_properties.cpp获取系统配置参数、内核属性、页大小、共享库辅助值等。
环境与路径管理environ.cpp, clearenv.cpp, getcwd.cpp, __bionic_get_shell_path.cpp管理环境变量、当前工作目录与系统路径。
调试与错误处理assert.cpp, abort.cpp, fortify.cpp, android_set_abort_message.cpp实现断言、程序终止、运行时保护(Fortify)、错误信息传递。
本地化支持locale.cpp, langinfo.cpp, nl_types.cpp, icu.cpp提供本地语言、区域信息支持,包括 ICU 支持。
文件与目录操作mkdir.cpp, rmdir.cpp, chmod.cpp, stat.cpp, access.cpp实现对文件与目录的创建、权限管理、属性读取等。
进程间通信(IPC)sys_msg.cpp, sys_sem.cpp, sys_shm.cpp, eventfd_read.cpp支持 Linux IPC,包括消息队列、信号量、共享内存、eventfd 等机制。
ARM 架构支持__aeabi.c, atexit_legacy.c, exidx_dynamic.c, libgcc_compat.c实现 ARM ABI 接口、异常表注册、兼容 GCC 运行时符号。

课时 16 , 3w 班,

day16,

这里就是对 jni_Onload, 执行前的时机, 进行一个hook

确保我们能够hook上他们.

day17

func_type: DT_INIT 
so_name: libnative-lib.so 
so_path: /data/app/com.frida.fridadetection-13oEjyEBgSSw4T_e3gl1OQ==/lib/arm64/libnative-lib.so 
func_offset: 0x21b8
func_type: function 
so_name: libnative-lib.so 
so_path: /data/app/com.frida.fridadetection-13oEjyEBgSSw4T_e3gl1OQ==/lib/arm64/libnative-lib.so 
func_offset: 0x21bc
func_type: function 
so_name: libnative-lib.so 
so_path: /data/app/com.frida.fridadetection-13oEjyEBgSSw4T_e3gl1OQ==/lib/arm64/libnative-lib.so 
func_offset: 0x21c0
find a svc syscall->{"address":"0x76c998c088","name":"0x1088","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998c088  01 00 00 d4 a0 03 1c f8 ad 03 5c b8 ed 1f 00 b9  ..........\.....
76c998c098  ad 05 00 71 ed 17 00 b9 c1 01 00 54 01 00 00 14  ...q.......T....
76c998c0a8  a8 43 5f 38 e9 17 40 f9 2a 05 00 91 ea 17 00 f9  .C_8..@.*.......
76c998c0b8  28 01 00 39 a8 43 5f 38 08 29 00 71 e8 13 00 b9  (..9.C_8.).q....
76c998c0c8  61 00 00 54 01 00 00 14 10 00 00 14 0a 00 00 14  a..T............
76c998c0d8  e8 1f 40 b9 a8 00 00 35 01 00 00 14 e8 03 1f 2a  ..@....5.......*
76c998c0e8  e8 37 00 b9 0f 00 00 14 08 00 80 12 e8 37 00 b9  .7...........7..
76c998c0f8  0c 00 00 14 01 00 00 14 e8 23 40 b9 08 05 00 11  .........#@.....
76c998c108  e8 23 00 b9 bd ff ff 17 e8 17 40 f9 e9 03 1f 2a  .#........@....*
76c998c118  09 01 00 39 e9 23 40 b9 e9 37 00 b9 01 00 00 14  ...9.#@..7......
76c998c128  e8 37 40 b9 49 d0 3b d5 29 15 40 f9 aa 83 5f f8  .7@.I.;.).@..._.
76c998c138  29 01 0a eb e8 0f 00 b9 e9 03 00 f9 c1 00 00 54  )..............T
76c998c148  01 00 00 14 e0 0f 40 b9 fd 7b 4a a9 ff c3 02 91  ......@..{J.....
76c998c158  c0 03 5f d6 d9 fe ff 97 ff c3 00 d1 fd 7b 02 a9  .._..........{..
76c998c168  fd 83 00 91 08 00 00 b0 08 91 0c 91 e2 03 7e b2  ..............~.
76c998c178  e0 0b 00 f9 e0 0b 40 f9 e0 07 00 f9 e0 07 40 f9  ......@.......@.
find a svc syscall->{"address":"0x76c998c444","name":"0x1444","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998c444  01 00 00 d4 e0 57 00 f9 e8 57 40 f9 ec 03 08 2a  .....W...W@....*
76c998c454  ec 77 00 b9 ec 77 40 b9 8c 05 00 71 ec 43 00 b9  .w...w@....q.C..
76c998c464  cb 15 00 54 01 00 00 14 01 00 00 14 e0 77 40 b9  ...T.........w@.
76c998c474  e1 83 05 91 e2 03 17 32 d5 fe ff 97 00 04 00 71  .......2.......q
76c998c484  e0 3f 00 b9 8b 14 00 54 01 00 00 14 e8 83 05 91  .?.....T........
76c998c494  e9 27 40 f9 28 01 00 f9 08 00 00 b0 08 0d 0d 91  .'@.(...........
76c998c4a4  e8 73 00 f9 28 01 40 f9 ea 73 40 f9 28 09 00 f9  .s..(.@..s@.(...
76c998c4b4  2a 05 00 f9 20 09 40 f9 21 05 40 f9 14 fe ff 97  *... .@.!.@.....
76c998c4c4  60 03 00 b4 01 00 00 14 e8 83 05 91 e9 27 40 f9  `............'@.
76c998c4d4  28 11 00 f9 08 00 00 b0 08 25 0d 91 28 0d 00 f9  (........%..(...
76c998c4e4  28 11 40 f9 2a 0d 40 f9 28 19 00 f9 2a 15 00 f9  (.@.*.@.(...*...
76c998c4f4  20 19 40 f9 21 15 40 f9 05 fe ff 97 80 01 00 b5   .@.!.@.........
76c998c504  01 00 00 14 01 00 00 b0 21 b0 0d 91 02 00 00 b0  ........!.......
76c998c514  42 18 0f 91 03 00 00 b0 63 d8 0d 91 e0 07 1f 32  B.......c......2
76c998c524  ef fd ff 97 e0 3b 00 b9 01 00 00 14 00 e4 00 6f  .....;.........o
76c998c534  e8 2b 40 f9 00 3d 80 3d 00 39 80 3d 00 35 80 3d  .+@..=.=.9.=.5.=
find a svc syscall->{"address":"0x76c998c810","name":"0x1810","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998c810  01 00 00 d4 a0 03 1c f8 a8 03 5c f8 e8 23 00 f9  ..........\..#..
76c998c820  e8 23 40 f9 08 05 00 f1 e8 17 00 f9 60 01 00 54  .#@.........`..T
76c998c830  01 00 00 14 e8 1f 40 f9 a8 00 00 b5 01 00 00 14  ......@.........
76c998c840  08 00 80 92 e8 33 00 f9 20 00 00 14 e8 1f 40 f9  .....3.. .....@.
76c998c850  e8 33 00 f9 1d 00 00 14 a8 43 5f 38 08 29 00 71  .3.......C_8.).q
76c998c860  e8 27 00 b9 a1 00 00 54 01 00 00 14 e8 1f 40 f9  .'.....T......@.
76c998c870  e8 33 00 f9 15 00 00 14 a8 43 5f 38 e9 2b 40 f9  .3.......C_8.+@.
76c998c880  2a 05 00 91 ea 2b 00 f9 28 01 00 39 e9 1f 40 f9  *....+..(..9..@.
76c998c890  29 05 00 91 e9 1f 00 f9 01 00 00 14 e8 1f 40 f9  ).............@.
76c998c8a0  e9 4f 40 b9 29 05 00 71 ea 03 09 2a 08 01 0a eb  .O@.)..q...*....
76c998c8b0  e8 0f 00 f9 6b f7 ff 54 01 00 00 14 e8 1f 40 f9  ....k..T......@.
76c998c8c0  e8 33 00 f9 01 00 00 14 e8 33 40 f9 49 d0 3b d5  .3.......3@.I.;.
76c998c8d0  29 15 40 f9 aa 83 5f f8 29 01 0a eb e8 0b 00 f9  ).@..._.).......
76c998c8e0  e9 07 00 f9 c1 00 00 54 01 00 00 14 e0 0b 40 f9  .......T......@.
76c998c8f0  fd 7b 4d a9 ff 83 03 91 c0 03 5f d6 f1 fc ff 97  .{M......._.....
76c998c900  fc 0f 1e f8 fd 7b 01 a9 fd 43 00 91 ff 83 0c d1  .....{...C......
find a svc syscall->{"address":"0x76c998caa4","name":"0x1aa4","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998caa4  01 00 00 d4 e0 4f 00 f9 e8 4f 40 f9 e9 03 08 2a  .....O...O@....*
76c998cab4  e9 57 00 b9 e9 57 40 b9 29 09 00 34 01 00 00 14  .W...W@.)..4....
76c998cac4  00 e4 00 6f e8 23 40 f9 00 3d 80 3d 00 39 80 3d  ...o.#@..=.=.9.=
76c998cad4  00 35 80 3d 00 31 80 3d 00 2d 80 3d 00 29 80 3d  .5.=.1.=.-.=.).=
76c998cae4  00 25 80 3d 00 21 80 3d 00 1d 80 3d 00 19 80 3d  .%.=.!.=...=...=
76c998caf4  00 15 80 3d 00 11 80 3d 00 0d 80 3d 00 09 80 3d  ...=...=...=...=
76c998cb04  00 05 80 3d 00 01 80 3d e0 57 40 b9 e9 43 04 91  ...=...=.W@..C..
76c998cb14  e2 03 18 32 e1 03 09 aa e9 13 00 f9 0e ff ff 97  ...2............
76c998cb24  08 00 00 f0 08 0d 40 f9 e9 13 40 f9 e1 1f 40 f9  ......@...@...@.
76c998cb34  29 00 00 f9 e8 6b 00 f9 28 00 40 f9 fe 6b 40 f9  )....k..(.@..k@.
76c998cb44  28 08 00 f9 3e 04 00 f9 28 08 40 f9 21 04 40 f9  (...>...(.@.!.@.
76c998cb54  e0 0f 00 f9 e0 03 08 aa 6d fc ff 97 20 02 00 b5  ........m... ...
76c998cb64  01 00 00 14 08 00 00 f0 08 11 40 f9 e9 43 04 91  ..........@..C..
76c998cb74  ea 1f 40 f9 49 11 00 f9 48 0d 00 f9 48 11 40 f9  ..@.I...H...H.@.
76c998cb84  49 0d 40 f9 48 19 00 f9 49 15 00 f9 40 19 40 f9  I.@.H...I...@.@.
76c998cb94  41 15 40 f9 5e fc ff 97 a0 01 00 b4 01 00 00 14  A.@.^...........
find a svc syscall->{"address":"0x76c998cde8","name":"0x1de8","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998cde8  01 00 00 d4 e0 3f 00 f9 08 00 00 f0 08 19 40 f9  .....?........@.
76c998cdf8  e9 5f 00 f9 e8 5b 00 f9 e8 5f 40 f9 e9 5b 40 f9  ._...[..._@..[@.
76c998ce08  e8 67 00 f9 e9 63 00 f9 e0 67 40 f9 e1 63 40 f9  .g...c...g@..c@.
76c998ce18  be fb ff 97 e0 02 00 b4 01 00 00 14 01 00 00 b0  ................
76c998ce28  21 0c 0d 91 02 00 00 b0 42 04 10 91 e8 07 1f 32  !.......B......2
76c998ce38  e3 43 09 91 e0 03 08 2a e8 1b 00 b9 a7 fb ff 97  .C.....*........
76c998ce48  01 00 00 b0 21 b0 0d 91 02 00 00 b0 42 18 0f 91  ....!.......B...
76c998ce58  03 00 00 b0 63 60 10 91 e8 1b 40 b9 e0 17 00 b9  ....c`....@.....
76c998ce68  e0 03 08 2a 9d fb ff 97 e0 13 00 b9 01 00 00 14  ...*............
76c998ce78  01 00 00 14 7c ff ff 17 01 00 00 14 e0 1f 40 f9  ....|.........@.
76c998ce88  7a fb ff 97 5e d0 3b d5 de 17 40 f9 a8 83 5e f8  z...^.;...@...^.
76c998ce98  c8 03 08 eb e0 0f 00 b9 e8 03 00 f9 c1 00 00 54  ...............T
76c998cea8  01 00 00 14 ff 83 0d 91 fd 7b 41 a9 fc 07 42 f8  .........{A...B.
76c998ceb8  c0 03 5f d6 81 fb ff 97 ff 83 01 d1 fd 7b 05 a9  .._..........{..
76c998cec8  fd 43 01 91 48 d0 3b d5 08 15 40 f9 a8 83 1f f8  .C..H.;...@.....
76c998ced8  e8 03 1f aa a8 03 1f f8 a8 83 1e f8 e9 03 1f 32  ...............2  // 在arm64 下面是 4个字节对齐的,这里是不正确的, 肯定是不正确的.0x26e5 所以,我们这里可以把他们排除掉
find a svc syscall->{"address":"0x76c998d6e5","name":"0x26e5","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998d6e5  01 00 00 d4 f8 ff ff 70 00 00 00 00 4c 0c 1d 10  .......p....L...
76c998d6f5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 6c  ...............l
76c998d705  01 00 00 24 f9 ff ff 7c 00 00 00 00 4c 0c 1d 10  ...$...|....L...
76c998d715  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 8c  ................
76c998d725  01 00 00 80 f9 ff ff 40 00 00 00 00 48 0c 1d 10  .......@....H...
76c998d735  9e 02 9d 04 00 00 00 00 00 00 00 14 00 00 00 ac  ................
76c998d745  01 00 00 a0 f9 ff ff d0 00 00 00 00 44 0e 20 00  ............D. .
76c998d755  00 00 00 14 00 00 00 c4 01 00 00 58 fa ff ff 04  ...........X....
76c998d765  00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 dc  ................
76c998d775  01 00 00 44 fa ff ff 04 00 00 00 00 00 00 00 00  ...D............
76c998d785  00 00 00 14 00 00 00 f4 01 00 00 30 fa ff ff 04  ...........0....
76c998d795  00 00 00 00 00 00 00 00 00 00 00 1c 00 00 00 0c  ................
76c998d7a5  02 00 00 1c fa ff ff 9c 00 00 00 00 4c 0c 1d 10  ............L...
76c998d7b5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 2c  ...............,
76c998d7c5  02 00 00 98 fa ff ff 4c 00 00 00 00 4c 0c 1d 10  .......L....L...
76c998d7d5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 4c  ...............L    // 在arm64 下面是 4个字节对齐的,这里是不正确的, 肯定是不正确的.0x36e5 所以,我们这里可以把他们排除掉
find a svc syscall->{"address":"0x76c998e6e5","name":"0x36e5","moduleName":"libnative-lib.so","fileName":"","lineNumber":0}
             0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
76c998e6e5  01 00 00 d4 f8 ff ff 70 00 00 00 00 4c 0c 1d 10  .......p....L...
76c998e6f5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 6c  ...............l
76c998e705  01 00 00 24 f9 ff ff 7c 00 00 00 00 4c 0c 1d 10  ...$...|....L...
76c998e715  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 8c  ................
76c998e725  01 00 00 80 f9 ff ff 40 00 00 00 00 48 0c 1d 10  .......@....H...
76c998e735  9e 02 9d 04 00 00 00 00 00 00 00 14 00 00 00 ac  ................
76c998e745  01 00 00 a0 f9 ff ff d0 00 00 00 00 44 0e 20 00  ............D. .
76c998e755  00 00 00 14 00 00 00 c4 01 00 00 58 fa ff ff 04  ...........X....
76c998e765  00 00 00 00 00 00 00 00 00 00 00 14 00 00 00 dc  ................
76c998e775  01 00 00 44 fa ff ff 04 00 00 00 00 00 00 00 00  ...D............
76c998e785  00 00 00 14 00 00 00 f4 01 00 00 30 fa ff ff 04  ...........0....
76c998e795  00 00 00 00 00 00 00 00 00 00 00 1c 00 00 00 0c  ................
76c998e7a5  02 00 00 1c fa ff ff 9c 00 00 00 00 4c 0c 1d 10  ............L...
76c998e7b5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 2c  ...............,
76c998e7c5  02 00 00 98 fa ff ff 4c 00 00 00 00 4c 0c 1d 10  .......L....L...
76c998e7d5  9e 02 9d 04 00 00 00 00 00 00 00 1c 00 00 00 4c  ...............L
search svc syscall over

我们只是关心打开过的文件, 和 readlink at , 解析.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

888-888-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部