当前位置: 首页 > news >正文

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。

相关文章:

  • 【Java】已解决java.lang.NullPointerException异常
  • VBA学习(10):按名称批量将图片插入到表格中
  • Android-app自动更新总结(已适配9-0)(1)
  • DP动态规划(下)
  • 【产品经理】订单处理8-智能分仓
  • 面向对象的程序设计:对象数组,对象指针书后习题——第九章(P295)第九题
  • SpringBoot配置第三方专业缓存框架j2cache
  • 游戏心理学Day18
  • Ps:脚本与动作
  • miniconda安装教程以及pip换源【Windows版本】
  • 删除名为 `XXXX` 的 conda 环境的命令
  • LLM 理论知识
  • Linux中的进程控制
  • 农业领域科技查新点提炼方法附案例!
  • uniapp原生插件开发实战——Android打开文件到自己的app
  • 【Leetcode】101. 对称二叉树
  • .pyc 想到的一些问题
  • angular2 简述
  • Angularjs之国际化
  • AWS实战 - 利用IAM对S3做访问控制
  • Codepen 每日精选(2018-3-25)
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • emacs初体验
  • flask接收请求并推入栈
  • hadoop集群管理系统搭建规划说明
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java知识点总结(JavaIO-打印流)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • JS学习笔记——闭包
  • leetcode讲解--894. All Possible Full Binary Trees
  • nodejs调试方法
  • node和express搭建代理服务器(源码)
  • spring boot下thymeleaf全局静态变量配置
  • tab.js分享及浏览器兼容性问题汇总
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Vue组件定义
  • win10下安装mysql5.7
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 配置 PM2 实现代码自动发布
  • 思考 CSS 架构
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 详解移动APP与web APP的区别
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 转载:[译] 内容加速黑科技趣谈
  • kubernetes资源对象--ingress
  • Spring Batch JSON 支持
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (06)金属布线——为半导体注入生命的连接
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (C语言)球球大作战
  • (c语言+数据结构链表)项目:贪吃蛇
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)