axhlzy / FridaDebugger

Single-step debugging of native code using frida, stalker, and semaphore
56 stars 17 forks source link

traceFunction函数报错Error: expected a pointer和b断点断不下函数 #1

Open thouger opened 2 months ago

thouger commented 2 months ago

我自己写了个测试 apk,用的静态注册方法,开线程 5 秒后执行 test 函数,函数内容简单写了 1+333,这是我的 apk,zip 后缀改成 apk apk-debug.zip

尝试使用traceFunction,看起来和readme 的例子差不多,但是最后指针报错

(base) thouger :: Documents/code/FridaDebugger ‹main*› » frida -U -f com.zzkko -l _agent.js                                                                                                                     1 ↵
     ____
    / _  |   Frida 16.2.1 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://frida.re/docs/home/
   . . . .
   . . . .   Connected to MI 6 (id=edc95003)
Spawned `com.zzkko`. Resuming main thread!
[MI 6::com.zzkko ]-> traceFunction(Module.findBaseAddress("libnativeLib.so").add(0xcfc))
INIT QBDI VM -> Stack: 0x7b53dd6040 | SP: 0x7b53de0040
[MI 6::com.zzkko ]->
called 0x7ae9cafc9c | args => 0x7b55936680 0x7ae9ca9ec4 0xde803b58 0x0
VM START | CALL -> 0x7ae9cafc9c | at 09:19:45 AM
VM STOP | RET => [object Promise]
Error: expected a pointer

借着尝试,无任何反应,函数是延迟五秒执行的

[MI 6::com.zzkko ]-> b(Module.findBaseAddress("libnativeLib.so").add(0xcfc))
[MI 6::com.zzkko ]-> b(Module.findBaseAddress("libnativeLib.so").add(0xcfc))
[MI 6::com.zzkko ]->
[MI 6::com.zzkko ]->
axhlzy commented 2 months ago

https://github.com/axhlzy/FridaDebugger/blob/main/agent/breakpoint/breakpoint.ts#L30 具体的原因是因为stalker翻译过来的汇编指定不一定能和原指令对应上,这个我暂时也没有什么特别好的解决想法,这个项目初衷就是提供这么一个想法而已,实际落地使用还差得多,不过退一步的话考虑调试stalker翻译出来的汇编也可以的

截图中能正常调试在于他们之间有指令完全映射关系,中途是忽略了一些stalker中间指令的

thouger commented 1 month ago

意思是stalker翻译过来的汇编和原指令对不上,导致我定下的地址0xcfc未必是我看反编译时经过的地址是吗?我之前对过几下有些指令都和ida的匹配的,0xcfc这个地址有点忘记了