Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >unidbg直接调用so文件内方法

unidbg直接调用so文件内方法

作者头像
小小咸鱼YwY
发布于 2021-09-22 02:06:35
发布于 2021-09-22 02:06:35
2.3K01
代码可运行
举报
文章被收录于专栏:python-爬虫python-爬虫
运行总次数:1
代码可运行

参考文档https://blog.csdn.net/weixin_43582101/article/details/108012579

1.环境安装

Maven https://www.jianshu.com/p/eddcc16dd9af

Jdk

2.unidbg的安装

unidbg下载链接: https://github.com/zhkl0228/unidbg

3.调用模板以及介绍

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.bytedance.frameworks.core.encrypt;

import com.github.unidbg.AndroidEmulator;
import com.github.unidbg.Module;
import com.github.unidbg.linux.android.AndroidEmulatorBuilder;
import com.github.unidbg.linux.android.AndroidResolver;
import com.github.unidbg.linux.android.dvm.DalvikModule;
import com.github.unidbg.linux.android.dvm.DvmClass;
import com.github.unidbg.linux.android.dvm.VM;
import com.github.unidbg.linux.android.dvm.array.ByteArray;
import com.github.unidbg.memory.Memory;
import com.github.unidbg.linux.android.dvm.DvmClass;
import java.util.Arrays;
import java.io.File;

public class test {
    public static void main(String[] args) {
        AndroidEmulator emulator = AndroidEmulatorBuilder.for32Bit().setProcessName("com.fuck.you").build(); // 创建模拟器实例,要模拟32位或者64位,在这里区分
        final Memory memory = emulator.getMemory(); // 模拟器的内存操作接口
        memory.setLibraryResolver(new AndroidResolver(23)); // 设置系统类库解析
        VM vm = emulator.createDalvikVM(); // 创建Android虚拟机
        vm.setVerbose(true); // 设置是否打印Jni调用细节
        DalvikModule dm = vm.loadLibrary(new File("/Users/a3530/Desktop/unidbg-master/unidbg-android/target/test-classes/example_binaries/libttEncrypt_2.so"), false); // 加载libttEncrypt.so到unicorn虚拟内存,加载成功以后会默认调用init_array等函数
        dm.callJNI_OnLoad(emulator); // 手动执行JNI_OnLoad函数
        Module module = dm.getModule(); // 加载好的libttEncrypt.so对应为一个模块
        DvmClass TTEncryptUtils = vm.resolveClass("com/bytedance/frameworks/core/encrypt/TTEncryptUtils");  //java中方法
        System.out.println("开始");
        byte[] data = {31, -117, 8, 0, 40, 38, 55, 97, 2, -1, 21, -54, 77, 10, -128, 32, 16, 64, -31, -85, -60, -84, 91, 56, 26, 17, 93, 102, -112, 28, 76, -56, -97, -46, 32, 18, -17, -98, 109, -33, -5, 42, 120, 109, -35, 70, 69, 91, 88, 7, -56, -103, 116, 74, 116, 68, 11, -29, 0, 59, 107, -61, 87, -17, 21, 98, -30, 112, 27, 103, 126, -12, -68, -26, -108, 10, -95, 117, 66, -106, 3, 21, -25, -71, 15, -100, 21, 10, 49, 73, 33, 22, -60, -10, 1, -18, -112, -23, 113, 90, 0, 0, 0};
        System.out.println(convertByteToHexString(data));
        ByteArray result_list =TTEncryptUtils.callStaticJniMethodObject(emulator,"handleData([BI)[B",data,data.length);  //其中handleData([BI)[B是smail语法,方法名(入参数据类型1入参数据类型2)出参 [B数组 I数字
        System.out.println(result_list.getValue());  //看情况
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
c++反编译工具_pc下载软件
  昨天在逆向某App的时候,发现有个加密工具类中的native方法是用C语言编写的,隐藏在so文件中。某大佬推荐逆向工具unidbg,能在pc端直接调用so文件中的函数,最终成功解决了问题。
全栈程序员站长
2022/10/02
2.5K0
c++反编译工具_pc下载软件
爬虫工程师的unidbg入门教程
unidbg 是一个基于 unicorn 的逆向工具,可以黑盒调用安卓和 iOS 中的 so 文件。unidbg 是一个标准的 java 项目。
吾爱小白
2020/07/07
1.7K0
Crack App | 初试 Unidbg 环境搭建
这个项目是凯神的开源项目,用这个项目可以帮助你在脱离手机的情况下以Unidbg为中心去做模拟执行/ so 算法还原
咸鱼学Python
2022/01/18
2.1K0
Crack App | 初试 Unidbg 环境搭建
某车联网App 通讯协议加密分析(二) Unidbg手把手跑通
有一段时间没有写unidbg相关的文章了,这个样本挺合适,难度适中,还适当给你挖个小坑。所以后面是一个系列文章,包含 unidbg补环境,Trace Block 对比流程,Trace Code定位差异。掌握好这一系列套路,Native分析可以算入门了。
奋飞安全
2022/09/08
1.6K0
Unidbg调试so
在 Android逆向之ARM64静态分析 对ARM64汇编进行了介绍,网传ARMV9要出来了,难道又要重新学习ARMV9? 在Frida高级篇-免ROOT使用Frida(不修改源代码) 中对elf文
无情剑客
2021/08/24
2.3K0
unidbg使用笔记
通过list来存放每个参数,最后调用toArray()传入callFunction中,但是各种类型的参数在传入list之前需要进行包装
大A
2023/03/23
2.1K0
【APP逆向百例】某蜂窝逆向分析
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2025/02/17
2680
【APP逆向百例】某蜂窝逆向分析
unidbg调用so文件生成xgorgon
目前很多 App 的加密签名算法都在so文件中,强行逆向so的话可能会消耗大量时间和资源。
李玺
2021/11/22
3.4K0
unidbg调用so文件生成xgorgon
【愚公系列】2023年04月 攻防世界-MOBILE(Illusion)
Objection是一款移动设备运行时漏洞利用工具,该工具由Frida驱动,可以帮助研究人员访问移动端应用程序,并在无需越狱或root操作的情况下对移动端应用程序的安全进行评估检查。
愚公搬代码
2023/04/28
6080
【愚公系列】2023年04月 攻防世界-MOBILE(Illusion)
Crack App | yrx App 对抗赛第二、第三题加密签名对抗
昨天整了个珍惜逆向的团购,当了一晚上的客服,结果还是很多人错过拍大腿了,算了算了 还是老老实实写文章吧
咸鱼学Python
2022/06/24
5280
Crack App | yrx App 对抗赛第二、第三题加密签名对抗
某车联网App 通讯协议加密分析(三) Trace Block
之前我们已经用unidbg跑通了libencrypt.so,那么如何判断跑出来的结果是对是错?再如何纠正unidbg跑错误的流程,是我们今天的目标。
奋飞安全
2022/09/13
9470
RASP的安全攻防研究实践
随着Web应用攻击手段变得复杂,基于请求特征的防护手段,已经不能满足企业安全防护需求。在2012年的时候,Gartner引入了“Runtime application self-protection”一词,简称为RASP,属于一种新型应用安全保护技术,它将防护功能“ 注入”到应用程序中,与应用程序融为一体,使应用程序具备自我防护能力,当应用程序遭受到实际攻击伤害时,能实时检测和阻断安全攻击,而不需要进行人工干预。
黑白天安全
2023/01/31
2.6K0
RASP的安全攻防研究实践
第十届信息安全国赛 Web MISC writeup
周末花了一整天的打国赛技能赛的线上赛,去年比赛没能进入线下,当时就是因为感觉选手之间py太严重,今年没想到又遇到了这样的问题,所幸的是,今年运气比较好,做出来的题目比较多,所以py没有太过影响到我们。
LoRexxar
2023/02/21
5030
第十届信息安全国赛 Web MISC writeup
Netty5学习笔记(3) ---Protobuf序列化
1.protocol buff是一种协议,是谷歌推出的一种序列化协议;Java序列化协议也是一种协议
挽风
2021/04/13
2810
RADARE2+FRIDA=R2FRIDA Best Dynamic Debugging Tool (Weibo Crack)
然后用frida-ls-devices工具获取 usb device id ;接着用frida-ps -U | grep xhs获取完整包名
吾爱小白
2020/07/07
1.8K0
用netty 3的channelbuffer来重写序列化类
我们都知道用java来序列化一个对象,需要用到ObjectOutputSteam来把对象写进一个字节流ByteOutputStream,然后把字节流转成字节数组。用ObjectInputSteam来反序列化,获取一个字节流,再读出对象。类似代码如下。
算法之名
2019/08/20
4680
一个动态SO文件自解密的修复
题目来源 文章中已经有非常详细的解析,这边我写一下自己操作的过程,并探索了几个自己感兴趣的地方。
大A
2023/02/14
2.4K0
一个动态SO文件自解密的修复
快速入门系列--WebAPI--04在老版本MVC4下的调整
WebAPI是建立在MVC和WCF的基础上的,原来微软老是喜欢封装的很多,这次终于愿意将http编程模型的相关细节暴露给我们了。在之前的介绍中,基本上都基于.NET 4.5之后版本,其System.Net.Http程序集非常的丰富,而老版本的则相对较弱。在WebAPI v1.0(和ASP.NET MVC4在一起的版本)很多的类和接口并不存在,同时对Task异步编程(ApiController默认提供异步执行方法)的支持还有一些欠缺(缺少不少方便的扩展方法),在使用时会有一些需要注意的地方,由于一些老的项目用
用户1216676
2018/01/24
1.2K0
Android | 关于 OOM 的那些事
Android 系统对每个app都会有一个最大的内存限制,如果超出这个限制,就会抛出 OOM,也就是Out Of Memory 。本质上是抛出的一个异常,一般是在内存超出限制之后抛出的。最为常见的 OOM 就是内存泄露(大量的对象无法被释放)导致的 OOM,或者说是需要的内存大小大于可分配的内存大小,例如加载一张非常大的图片,就可能出现 OOM。
345
2023/05/26
1.9K0
Android | 关于 OOM 的那些事
Android新增LED设备--从底层到上层理解安卓架构
为了更好的理解安卓的层次关系,本文在RK3399的安卓系统上增加LED灯的外设,并使用APP打开关闭LED灯。以这样一个最简单的实例,来演示从上层到底层的调用过程。首先从最底层的kernel层开始。
Jasonangel
2021/08/26
3.1K0
Android新增LED设备--从底层到上层理解安卓架构
相关推荐
c++反编译工具_pc下载软件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验