前言
在App攻防或CTF-Android中,App动态调式是必要学习技能之一,Java层的调试可以通过Frida快速获取到想要的数据,而Native层的数据通过Frida不太好获取,虽然Frida也可以,但是优先IDA调试更方便分析代码。接下来本文讲一下Native层的调试以及IDA&App的一些配置。
在IDA调试中最最最好使用真机,模拟器因为架构不同很难调试起来
无反调试
在这个App的So文件中,这里是最后判断输入字符串经过加密后是否与预期值一致。
经过粗略分析得知该加密是SM4,密钥是A11223574689900Z
,这里最担心的问题就是他有没有魔改这个加密,那么就需要我们直接拿到加密后的结果与标准的SM4加密结果对比一下就知道了。
首先把IDA调试服务文件推送到手机,该文件在IDA目录/dbgsrv下。
推送到手机后在终端启动该文件,使用root权限启动文件。
在开启一个终端设置一下端口转发
在while
这里下一个断点,设置IDA调试配置
app同样也需要设置一下,在app的AndroidManifest
配置文件中
在这个标签下我们添加两条属性:
android:debuggable="true"
android:extractNativeLibs="true
配置好之后在IDA中
此时就可以看到手机中运行的进程了,直接搜索我们需要调试的程序
启动程序后按一下F9后在App输入字符串,提示会提示
点Same就好,这个提示可能会在启动调试的时候弹出,反正不管在哪个时机弹出,点Same就好。
输入的是`AAAAAAAAAAAAAAAA`,我们去在线SM4加密看一下加密结果
D99BB5C7E3DBCE3590D54DB4756B78C8
D99BB5C7E3DBCE3590D54DB4756B78C8
显然是一个标准的SM4加密。那么直接对enc进行解密就好了
文末
下期会更新有反调试应该怎么做,如何绕过。
交流群
添加机器人wx,回复进群,即可获取进群链接。
原文始发于微信公众号(琴音安全):app攻防-IDA动态调试
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论