reverse-android-实战喜马拉雅-ollvm

news2024/10/7 12:21:47

 资料

1. apk: com.ximalaya.ting.android.apk. 2020年8月 可以使用

2. 

抓包分析

java层分析

so层分析

登录的算法so是在 liblogin_encrypt.so中。 32位的, 用 IDA打开,查看 静态的导出函数。

打开 一个

首先看到 IDA VIEW 是一个横向 比较多的分支, 可能就是被混淆过的。

我们先点击 TAB 进入 c语言的。

看到 FindClass(a,&unk_D010); 的参数是个 _偏移地址 的。 

点击进入偏移地址 查看函数或者数据, 也是密文。 基于以上3点, 判断混淆过了。

如果查看 这个加密 地址的数据, 可以 frida 去输出这个地址的 hexdump数据,可以看到解密的。

这样只能一个个解密看。

接下来通过 so dump 内存里面的 so, 完整的解密。

so dump 

function so_dump(so_name){
    console.log('so_name :',so_name+"\n");
    Java.perform(function(){

        var currentApplication = Java.use("android.app.ActivityThread").currentApplication();

        //so保存位置 /data/data/{package}/files/
        var dir = currentApplication.getApplicationContext().getFilesDir().getPath();

        send('dir: '+dir);

        var libso = Process.getModuleByName(so_name);
         
        send("[name]:"+ libso.name);
        send("[base]:"+ libso.base); //0x 地址
        send("[size]:"+ptr(libso.size)); // number
        send("so [path]:"+libso.path);

      
        // liblogin_encrypt.so_{baseaddr}_{sosize}
        let libname = libso.name+"_"+libso.base+"_"+ptr(libso.size)+".so";

        // 要输出so 保存的路径 
        var file_path = dir+"/"+libname
        send(' so dump file_path:'+file_path);

        var file = new File(file_path,"wb");
        if (file&& file!=null){
            Memory.protect(ptr(libso.base),libso.size,"rwx");
            var libso_buffer = ptr(libso.base).readByteArray(libso.size);

            file.write(libso_buffer);
            file.flush();
            file.close();
            send("[dump]: "+file_path);

        }


        function send(msg){
            console.log(msg+"\n");
        }
       
    })


}



//so_dump('liblogin_encrypt.so');
[Pixel 6::Ximalaya ]-> so_dump('liblogin_encrypt.so')
so_name : liblogin_encrypt.so

dir: /data/user/0/com.ximalaya.ting.android/files

[name]:liblogin_encrypt.so

[base]:0x98ac1000

[size]:0xe000

so [path]:/data/app/~~Cmz1GTeSFB27zA99PXlbkg==/com.ximalaya.ting.android-XtpyLCFbUg5tpXqybmHW6Q==/lib/arm/liblogin_encrypt.so

 so dump file_path:/data/user/0/com.ximalaya.ting.android/files/liblogin_encrypt.so_0x98ac1000_0xe000.so

[dump]: /data/user/0/com.ximalaya.ting.android/files/liblogin_encrypt.so_0x98ac1000_0xe000.so

复制到本地

cp /data/user/0/com.ximalaya.ting.android/files/liblogin_encrypt.so_0x98ac1000_0xe000.so /sdcard/

adb pull /sdcard/liblogin_encrypt.so_0x98ac1000_0xe000.so ./

本地再打开 新的so。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1836327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法金 | 一个强大的算法模型:t-SNE !!

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种用于降维和数据可视化的非线性算法。它被广泛应用于…

windows实现python串口编程

一、windows安装python Welcome to Python.org 根据windows是64位找到对应的版本下载 下载完后直接安装即可! 打开cmd查看python版本 $ python --version #查看版本 二、串口编程 1、安装pyserial库 pyserial是Python中的一个库,用于处理串口通信。 cmd…

JavaScript-拓展简单和引用数据类型

学习目标: 掌握拓展简单和引用数据类型 学习内容: 拓展-术语解释拓展-基本数据类型和引用数据类型 拓展-术语解释: 拓展-基本数据类型和引用数据类型: 简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型…

C++使用教程

目录 一、软件使用 二、C基础规则补充 关键字 整型取值范围 浮点型取值范围 字符型使用规则 字符串型使用规则 布尔类型 常用的转义移字符 三、数组、函数、指针、结构体补充 1.数组 2.函数 声明: 分文件编写: 值传递: 3.指…

【Spring Cloud应用框架】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

RK3588/算能/Nvidia智能盒子:[AI智慧油站」,以安全为基,赋能精准经营

2021年9月,山东省应急管理厅印发了关于《全省危险化学品安全生产信息化建设与应用工作方案(2021-2022 年)》的通知,要求全省范围内加快推进危险化学品安全生产信息化、智能化建设与应用工作,建设完善全省危险化学品安全…

从老花眼开始

三年前,博主的的火眼金睛开始老花了,表现就是看近处看不清了。人眼对可视距离的标准可以定义为:看手机为近距离,看电脑为中距离,看电视为中距离,看红绿灯为远距离。老花眼就是戴近视眼镜直接看手机看不清了…

【ARM-Linux篇】POSIX消息队列

System V消息队列POSIX 消息队列主 要 函 数#include <sys/msg.h> int msgget(key_t key, int oflag) int msgsnd(int msqid, const void * ptr, size_t length, int flag) ssize_t msgrcv (int msqid, void *ptr, size_t length, long type, int flag) int msgctl(int m…

AI智能盒子助力中钢天源设备工厂升级安全防护

中钢集团安徽天源科技股份有限公司成立于2002年3月27日,是中央企业中国中钢股份有限公司控股的上市公司&#xff0c;主导产品为永磁铁氧体器件、钕铁硼器件、四氧化三锰、锶铁氧体预烧料及各类磁选机等。 在中钢天源智能化升级过程中&#xff0c;采用并定制开发一系列厂区安全…

聊聊系统架构之负载均衡优化实践

一、写在前面 最近在进行线上监控检查时&#xff0c;我遇到了两个超出预期的案例。首先&#xff0c;网关层的监控数据与应用实际监控数据存在不一致性&#xff0c;尤其是max有较大的差异&#xff0c;详见如下图。其次在某个应用中&#xff0c;通过httpclient请求某域名时发现只…

【Spine学习12】之 事件帧

1、新建事件帧&#xff1a; 2、选择第8s的攻击帧&#xff0c;点击第一步新建的attack事件帧前面的钥匙 这样每次动作到8s的时候会自动跳出事件帧提示 这个文字实际动画不会显示 事件是动画过程中所发生情况的触发器。 给程序员识别的

漏洞复现之CVE-2012-1823(PHP-CGI远程代码执行)

关于CGI知识点 CGI模式下的参数&#xff1a; -c 指定php.ini文件的位置 -n 不要加载php.ini文件 -d 指定配置项 -b 启动fastcgi进程 -s 显示文件源码 -T 执行指定次该文件 -h和-&#xff1f; 显示帮助题目如下图&#xff0c;没有什么发现 目录扫描一下 dirsearch -u http://4…

​【数据结构与算法】冒泡排序:简单易懂的排序算法解析

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、冒泡排序原理 &#x1f343;基本思想&#xff1a; &#x1f343;算法…

基于SpringBoot+Vue企业会议室预定管理系统设计和实现

基于SpringBootVue企业会议室预定管理系统设计和实现 &#x1f345; 作者主页 网顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 …

猫头虎 分享已解决Bug || `Uncaught ReferenceError: x is not defined`✨

猫头虎 分享已解决Bug || Uncaught ReferenceError: x is not defined&#x1f680;✨ 摘要 ✨&#x1f4a1; 大家好&#xff0c;我是猫头虎&#xff0c;一名全栈软件工程师&#xff0c;同时也是一位科技自媒体博主。今天我要和大家分享一些前端开发过程中常见的Bug以及详细的…

STM32 proteus + STM32Cubemx仿真教程(第五课ADC光敏电阻采样教程)

文章目录 前言一、ADC概念二、光敏电阻的概念1. 光敏电阻的工作原理2. 光敏电阻的特性3. 光敏电阻的应用4. 光敏电阻的电路设计5. 实际使用中的注意事项总结 三、STM32Cubemx创建工程四、proteus仿真电路图五、代码编写1. HAL_ADC_Start 函数原型参数返回值功能描述示例 2. HAL…

重学java 73.设计模式

本想送你一本沉思录&#xff0c;可该迷途知返的人是我 —— 24.6.18 设计模式 设计模式(Design pattern)&#xff0c;是一套被反复使用、经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了可重用代码、保证代码可靠性、程序的重用性,稳定性。 1995 年&#x…

PHP学习笔记--初学

笔录&#xff1a;我是从黑马里面找的资料学习的&#xff0c;如果有人看我的笔记话&#xff0c;建议去看黑马程序课程&#xff0c;更详细一些。 目录 php定义&#xff0c;平台支持&#xff1a; 静态网站&#xff1a; 动态网站&#xff1a; 服务器概念&#xff1a; IP的概念…

电脑版微信修改信息提示音的方法,Resource Hacker修改EXE信息

微信默认的提示音大家都是一样的&#xff0c;在人多的情况下&#xff0c;不容易分辨是不是自己的微信有消息&#xff0c;很不方便&#xff0c;所以飞飞会把微信的消息提示音换了&#xff0c;手机微信换通知铃声还是很简单的&#xff0c;今天着重和你们分享下电脑版微信如何修改…

探索C嘎嘎的奇妙世界:第十四关---STL(string的模拟实现)

1. string类的模拟实现 1.1 经典的string类问题 上一关已经对string类进行了简单的介绍&#xff0c;大家只要能够正常使用即可。在面试中&#xff0c;面试官总喜欢让学生自己来模拟实现string类&#xff0c;最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数…