app逆向之安卓native层安全逆向分析(七):unidbg自尝试某潮流app+dvmObject[]处理
前言
跟着龙哥搞了几次unidbg了,这次也自己尝试用来分析下某潮流app了。
分析
1.抓包
先抓个包
我们要搞的就是这个sign-v1了。
2.调试找参数
jadx一顿分析,一搜:
搜出来还不少,往下翻,找找一些特征,很快找到这里
点进去
ok,用objection hook之后,发现不是这个方法,但是确实是这个方法所在的类的b方法:
然后调用了这个getsign,getsign就在下面
再来hook下这两个方法:
基本确定,就是这里了,抓包工具也对比就是这里:
3.ida查看:
打开ida看看,发现是静态绑定的
可以的,感觉很简单
调试
1.搭架子
首先搭一下架子,然后既然他不是动态注册的,那就可以不用设置调用jni_load了:
看着没毛病,直接调用吧
2.调用&补环境
废话不多说,直接拿着hook到的参数拿来调用:
看下,这个ach是啥,ok,看样子就是随机生成一个16位的字符串
补一下环境
继续看
原来就是把这几个加起来
补一下:
结果已经出来了。但是打印的是一个dvmobject对象。很奇怪了。再看看hook的结果:
其实是个有三个元素的字符串数组。所以他应该是对象
断点调试一下
结果这么写会报错:
强转string[]也不行,就很尴尬
3.结果修复
问了一下unidbg的大佬,应该这么写:
这么写就可以了。
1 2 | DvmObject[] result = (DvmObject[]) vm.getObject(number.intValue()).getValue(); String sign = result[ 2 ].toString(); |
4.另一种调用
首先,我们都知道有,地址调用,符号调用,如下:
其实,根据我问的unidbg玩的6的大佬,还有另一种调用
这么写,代码量减少了很多。
但是有个问题就是,那个network类,需要在构造方法里定义一下:
另外,这个方法的签名,怎么拿到,用jadx的smali代码查看:
这里就直接有了,复制过去就可以用,注意最后的【;】也要带上。
5.验证是否可用
试试刚才的两种调用的结果,能不能拿来请求,然后正常返回呢?
ok,两个都可以 ,说明主动调用,整个过程,很成功
结语
整个过程很轻松加愉快。除了最后的dvmObject数组的转换,其他没啥需要记录的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探