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

2024-06-19 00:36

本文主要是介绍reverse-android-实战喜马拉雅-ollvm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 资料

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)); // numbersend("so [path]:"+libso.path);// liblogin_encrypt.so_{baseaddr}_{sosize}let libname = libso.name+"_"+libso.base+"_"+ptr(libso.size)+".so";// 要输出so 保存的路径 var file_path = dir+"/"+libnamesend(' 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.sodir: /data/user/0/com.ximalaya.ting.android/files[name]:liblogin_encrypt.so[base]:0x98ac1000[size]:0xe000so [path]:/data/app/~~Cmz1GTeSFB27zA99PXlbkg==/com.ximalaya.ting.android-XtpyLCFbUg5tpXqybmHW6Q==/lib/arm/liblogin_encrypt.soso 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。

这篇关于reverse-android-实战喜马拉雅-ollvm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073508

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

Redis迷你版微信抢红包实战

《Redis迷你版微信抢红包实战》本文主要介绍了Redis迷你版微信抢红包实战... 目录1 思路分析1.1hCckRX 流程1.2 注意点①拆红包:二倍均值算法②发红包:list③抢红包&记录:hset2 代码实现2.1 拆红包splitRedPacket2.2 发红包sendRedPacket2.3 抢

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Spring Boot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)

《SpringBoot拦截器Interceptor与过滤器Filter深度解析(区别、实现与实战指南)》:本文主要介绍SpringBoot拦截器Interceptor与过滤器Filter深度解析... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr