面试题03套

admin 2024年10月28日13:52:59评论21 views字数 2031阅读6分46秒阅读模式
  • 问:这个报错是什么意思?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套

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日13:52:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面试题03套http://cn-sec.com/archives/3317405.html

发表评论

匿名网友 填写信息