app安全之安卓native层安全分析(七):unidbg自尝试某潮流app+dvmObject[]处理

Unidbg 问题汇总(一) 1.Long参数的传递 假设一个native函数中参数是long类型,比如这样 在编译成arm32的SO时,一定概率会被转成两个int. long a = 0x1000L → int a1 = 0,int a2 = 0x1000 在Unidbg主动调用时,一定要记得处理,否则会出问题.这是一个常见问题,JAVA层传入的时间戳,常常就是jlong. 处理办法有2 1是按照SO的情况,传给它两个int 2是按照传入诸如 long tm= 1621265630L;的标准写法,Unidbg自动帮我们分割成两个 阅读详情

前言

跟着龙哥搞了几次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的大佬,应该这么写:

 这么写就可以了。

DvmObject[] result = (DvmObject[]) vm.getObject(number.intValue()).getValue();

String sign = result[2].toString();

 

4.另一种调用

首先,我们都知道有,地址调用,符号调用,如下:

其实,根据我问的unidbg玩的6的大佬,还有另一种调用

这么写,代码量减少了很多。

但是有个问题就是,那个network类,需要在构造方法里定义一下:

另外,这个方法的签名,怎么拿到,用jadx的smali代码查看:

这里就直接有了,复制过去就可以用,注意最后的【;】也要带上。 

5.验证是否可用

试试刚才的两种调用的结果,能不能拿来请求,然后正常返回呢?

ok,两个都可以 ,说明主动调用,整个过程,很成功

结语

整个过程很轻松加愉快。除了最后的dvmObject数组的转换,其他没啥需要记录的。

app安全之安卓native层安全分析(八):unidbg补前置环境+IO重定向 SO逆向入门实战教程七:main_unidbg 重定向_白龙~的博客-优快云博客还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足。1.找不到该native方法引入的哪个so文件时,用hook_RegisterNative脚本分析2.执行结果发现不对返回空指针时,很大可能是逻辑问题,需要结合jnitrace分析3.报dirfd=-100,就是读取文件错误,需要指导程序到正确的路径4.补文件读取有两个方法。 阅读详情

相关推荐

Unidbg参数传递时一个常见的坑

一、问题描述 本篇描述一个常见且隐蔽的坑,新手很容易一头雾水。我写了个demo,里面包含两个方法。快来看看吧! JAVA代码 package com.roysue.test623; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

lilac的博客 7715

如何将实体转为 数组对象_java对象转成byte数组的3种方法

java对象转成byte数组,在使用netty进行通信协议传输的场景中是非常常见的。比如,协议有一些定好的协议头、classid,messageid等等信息,还有一个关键的内容是payload。不同的协议内容都会放到payload中,而这个payload往往就是一个byte数组。那么,如何方便的将一个java对象构造成一个byte数组呢?1 bytebuf填充我们以下面这个对象举例:public ...

weixin_34515452的博客 2715

使用Unidbg进行Hook和Patch

http://zhuoyue360.com/crack/75.html 什么是unidbg就不多说了,大家自行百度。 文章目录写个demo,搭架子Hookzzhookzz基本代码Hook实例1. 汇编子程序参数传递的调用约定2. 获取和修改参数.获取参数内容修改参数内容3.获取和修改返回结果Patch1.加改成减法方式一 writeByte方式二:keystore代码: 写个demo,搭架子 写个简单的加减法来给unidbg调用。 public native String add(int a,int b

Qiled的博客 7539

某团mtgsig2.3-unidbg

直接hook这个CommonCandyInterceptor.getRequestSignature会报错ClassNotFound,搜了一下好像是动态加载的原因,需要先找到classLoader,根据源码分析了一下大致的参数。main2(8) 获取设备指纹信息, 可以看出就是mtgsig里a7的值,这里的dfpid应该是服务器生成再下发给客户端的, 在文章。, 这个也是后续unidbg要做的事情, 进行初始化,这里的sAppKey可以在AndroidManifest里找到。这里也是作为a7的值。

qq_25953361的博客 5793

TCP+unidbg+Frida抓包采集

jadx查看java代码 查看Frame类 查看writeDate中String.format的格式: function hook_v1() { // frida -FU -l hook.js com.yuanrenxue.match2022 Java.perform(function() { var OooO00o = Java.use("o00OO.OooO00o"); OooO00o.OooO00o.implementation = function(

小龙在线 777

Fofa API高阶玩法:用Python批量获取漏洞资产(含OA系统扫描实战)

本文详细介绍了如何利用Python结合Fofa API实现自动化漏洞资产收集的高阶实战技巧。通过构建健壮的客户端、设计精准查询语法、实现多线程批量采集,并以OA系统漏洞扫描为例,演示了从资产发现、过滤验证到报告生成的全流程,旨在提升安全运维与应急响应的效率。

weixin_28607671的博客 498

unidbg第四讲 com.kanxue.test2.MainActivity

讲解例子 模拟调用so文件里的方法 针对看雪课程里的例子,https://bbs.pediy.com/thread-263345.htm 重点学习内容 DvmObject的两种创造方法 DvmObject<?> obj = ProxyDvmObject.createObject(vm, this); DvmObject obj = vm.resolveClass("com/kanxue/test2/MainActivity").newObject(null); ..

xubaoyong的专栏 902

告别玄学调参:手把手教你用LSTM-AutoEncoder为传感器数据做异常检测(实战篇)

本文详细介绍了LSTM-AutoEncoder在传感器数据异常检测中的工程化实践,包括数据预处理、模型架构设计和生产环境部署策略。通过结合LSTM的时间序列处理能力和AutoEncoder的特征提取优势,该方法能够有效识别温湿度、PM2.5等传感器数据的异常模式,适用于工业物联网和室内空气质量监测等场景。

weixin_29212429的博客 477

使用unidbg练习某品会的api_sign

使用unidbg练习某品会的api_sign # 查找签名位置 直接搜索可以定位到api_sign出现的位置,然后代码中,通过反射来调用native方法,最终在这里 # 抓包查看参数,主动调用,查看是否有坑 直接frida主动调用,没什么问题,参数全部出来 #java层主动调用 因为参数太多,主动调用试试参数放少一点,可以正常返回 看起来没问题,(也可以frida主动调用so层,成功才行,这里偷懒了) 上unidbg试试 # 上unidbg 直接复制以前代码...

wy9527的博客 1366

2.4G板载PCB IFA天线仿真设计

本文简单介绍下2.4GHz的板载PCB IFA天线的HFSS仿真与设计。

射频问问 (RFASK.NET) 是在"微波射频网(MWRF.NET)”系列原创技术专栏基础上升级打造的技术问答学习平台。 6012

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

385

app安全之安卓native层安全分析(二):unidbg+ida使用+过签名校验

SO入门实战教程二:calculateS_so _白龙~的博客-优快云博客还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足,哈哈。1.ida,按y修改JNIEnv,IDA 7.5之前,JNIEnv需要导入jni.h,7.5之后不需要导入jni.h文件2.ida,按g 输入地址跳转3.ida,按x,查看交叉引用4.ida,optional->generel,把这个改成4,可以查看架构模式,arm架构是固定4位,thumb架构是混合的。

app安全逆向、移动开发、tls/ja3、爬虫、反爬 3632

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 609

app安全之安卓native层安全分析(四):unidbg模拟调用

SO逆向入门实战教程四:mfw_so层逆向_白龙~的博客-优快云博客还是那句,我会借鉴龙哥的文章,以一个初学者的角度,加上自己的理解,把内容丰富一下,尽量做到不在龙哥的基础上画蛇添足,哈哈。第四部分没啥技术知识点,都是老套路。

app安全逆向、移动开发、tls/ja3、爬虫、反爬 1589

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 943

基于Spring Boot 3 + Vue 3 + Vite的现代化社区订餐系统设计与实现

本文将详细阐述系统的整体架构、数据库设计、核心功能模块(用户管理、餐厅管理、菜品浏览、购物车、订单管理)的实现细节,并提供关键代码示例。<el-input v-model="loginForm.password" type="password" placeholder="密码" prefix-icon="Lock" show-password />.requestMatchers("/api/auth/**", "/api/dishes/public/**").permitAll() // 公开接口。

2201_76125393的博客 468

Android 中Native方法是怎样调用的

1.  Power.java--> find corresponding native cfile(查找对应的具体用C实现的C文件)         android.os.Power.java -------- native file ---->.../jni/android_os_Power.c 2. in android_os_Power.c, you canfind: static JNINativeMethod method_table[]=   // Native functiontable{<b

混沌的博客 1万+

Python爬虫实战:利用Selenium与反反爬技术高效爬取企查查工商信息

本文将详细介绍如何使用Python最新爬虫技术(包括Selenium、Playwright、智能代理池等)爬取企查查工商信息数据。文章包含完整的代码实现、反反爬策略、数据解析与存储方案,以及法律合规性讨论,共计约8000字。企查查作为国内领先的企业信息查询平台,收录了超过2亿家企业的工商信息、司法信息、知识产权等数据。这些数据对于市场分析、商业决策等具有重要价值。法律边界提示禁止大规模爬取导致服务器过载不得绕过付费接口获取数据数据使用需遵守《个人信息保护法》商业用途需获得授权。

2201_76125261的博客 2236

Anti及检测(移动安全篇)

一些基础的检测,整理起来,方便日后使用: 各个hook工具的检测等

Codeooo 博客 8422

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

app安全之安卓native层安全分析(一):frida 与unidbg

这个专题是根据龙哥的unidbg博客的案例,核心部分会借鉴龙哥的unidbg,通过借鉴大佬的思路,完整的分析某个so层的加密参数各位朋友也可以直接读龙哥的博客,我只是用我的角度进一步加工一下SO入门实战教程一:OASIS_so学习路线_白龙~的博客-优快云博客unidbg 是一个基于 unicorn 的安全分析工具,可以实现黑盒调用安卓和 iOS 中的 so 文件unidbg是凯神写的一个开源的java项目。

app安全逆向、移动开发、tls/ja3、爬虫、反爬 2643

unidbg-补文件环境及标识(一)

【代码】unidbg-补文件环境及标识。

Codeooo 博客 9018

【安卓逆向】unidbg入门级案例-某航空app_hnairSign分析

今天要分析的是某航空app,版本号是8.19.0,分析的样本在文章底部会提供,这次我们要借用unidbg来辅助进行算法还原。有关unidbg的介绍笔者就不多重复了,大家可自行百度查询。老规矩,上来先抓个包。

菜鸡小白的成长记录 3070

DPL常用激活函数求导

括号内的看成1/g(x),然后使用符合函数求导!

MasterCayman的博客 334

Shopee算法分析 - Unidbg模拟执行

shopee的环境补起来相对容易, 唯一的难点在于 “异常的处理”, 当然, 这只是对于我来说的难点. 对于各位大佬来说, 这种应该是信手拈来的东西.接下来, 继续复现如画大佬的算法分析文章.

Qiled的博客 2802

攻防世界 黑客精神unidbg破解

首先用jadx打开apk文件,查看MainActivity可以发现,页面判断了MyApp.m这个类变量的值,并调用类work()这个函数,且当类变量m的值为0时会跳转到RegActivity注册页面RegActivity界面比较简单,就是把输入的sn传入MyApp.saveSN()函数,然后退出,可以看出关键都在MyApp这个类。所以我们继续查看MyApp这个类,发现类有三个native函数,所以需要进一步分析so文件。### 二、IDA PRO分析。...

Devil丶LY 1140

unidbg快速入门使用 so直接调用 ndk调试 unidbg实在太强大太方便辣

现在很多app都把核心加密放到了so层,如果是Java层主动调用ndk的形式运行的话,用unidbg直接调用会很方便 unidbg github地址 https://github.com/zhkl0228/unidbg 下载好后,用idea打开(需要预先配置好maven,这里不多说),最好上个机场,下载配置会快一点 全部搞定之后,到这个路径 (C:\Users\Administrator\Desktop\unidbg-master\unidbg-android\src\test\java\com\byt.

arr的博客 6617
上一篇: app安全之安卓native层安全分析(六):frida调试跟栈+unidbg补环境大动作
下一篇: app安全之安卓native层安全分析(八):unidbg补前置环境+IO重定向
geekbyte.
博客等级 码龄11年 308粉丝 75原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值