-
问:这个报错是什么意思?adb: failed to install app/build/outputs/apk/debug/app-debug.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
答:说明这个apk是debug配置编译出来的,需要加上-r -t参数就可以安装了。adb install -r -t app/build/outputs/apk/debug/app-debug.apk 。 -r 是什么意思?覆盖安装。
-
问:装特定版本的objection、frida-tools、frida应该如何安装?
答:https://t.zsxq.com/0egtvtSqY
-
问:为什么用老版本frida,不用最新的?
答:1. 稳定性,老版本的frida搭配老版本的安卓比较稳定;2. 很多老代码也只能跑在那个老版本上。
-
问:最快的方法看当前app的包名和Activity
答:adb shell dumpsys window | grep mCurrentFocus
-
问:objection -g com.henley.safekeyboard.sample explore对应frida哪种模式?要在app启动时加载脚本怎样做?
答:进程不存在的时候,是spawn模式。进程存在的时候,是attach模式。objection explore有--startup-command和--startup-script分别知行objection命令和js脚本。
-
问:objection的launch activity、launch service有哪些应用场景
答:绕过业务逻辑比如手势密码、登录页面等
答:不带。在hook所有的方法里,加上”$init"即可。~/.pyenv/versions/3.8.0/lib/python3.8/site-packages/objection/agent.js的第9211行。
-
问:wallbreaker有四个API,classsearch、classdump、objectsearch、objectdump分别使用了frida或java的哪些api?
答:classsearch是Java.enumerateLoadedClasses再过滤类名;classdump是Java的反射,然后.value取值;objectsearch是Java.choose,objectdump是取得域名后.value取值。
-
问:如果frida hook一个类报找不到怎么办?
答:首先确保这个类肯定执行过了,比如你亲眼看到这个类运行后的效果了,比如某个Activity;然后枚举所有的classloader,在其中findclass,一定可以找到这个类。然后把classloader切过去,这样即可hook这个类了。详细可以参考r0tracer的源码。
问:Fart 脱壳后,打不开目标 Dex ,什么原因?
答: Dex 没有修复,如 360 的脱完壳后 Dex 的前几个字节都是被置 0 的, 这种需要我们找正常的 Dex 复制修复一下 magic header就可以了。
问:你在Hook APP时的一些常用思路吗? 比如要定位到APP 组装HTTP头信息的位置。 你都是怎样分析和Hook思路的呢?
答: 常用思路:抓包,确定关键字段,(有壳的脱壳),搜索关键字,定位关键类和函数,frida hook上(裂墙推荐objection,基于frida的快速逆向和hook工具,watch claas和watch method特别好用,不写一行代码,就可以hook关键函数,查看参数、调用栈和返回值),确定执行栈,hook把内容读取出来与抓包的结果进行比对,一模一样即定位到了关键函数。定位到关键函数之后,再看函数的内容,如何组装HTTP头部等等。总体是这个思路。
问:Frida 可以直接把 js 注入到 WebView 控件里吗?
答: 当然可以,Hook 它的 Web 返回,然后加个 jscode ,当然也可以不用 Frida ,挂个代理,拦截并替换成自己的 js 。
问:跨进程怎么调试?比如一个APP启动后会新创建一个进程(类似守护进程的那种),我想调试那个进程里的so,但是直接调试启动APP时,该进程还没有被触发,想了解这种是怎么处理的,原进程:包名,子进程:包名:xxx,需要调试的是后者
答: 可以使用 Frida 的子进程插桩 :Child gating 。为拥有create_script()方法的Session对象全新加入了enable_child_gating()和disable_child_gating()这两个方法,在不显示调用新API的情况下,Frida的机制还是会跟从前一样,我们需要手动调用enable_child_gating()方法来切换到子进程控制的模式。
原文始发于微信公众号(进击的HACK):面试题03套
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论