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)); // 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。

相关推荐

  1. ANDROID OLLVM 混淆配置

    2024-06-19 03:42:02       10 阅读
  2. reverse_iterator实现

    2024-06-19 03:42:02       15 阅读
  3. go语言利用反射实现reverse函数

    2024-06-19 03:42:02       32 阅读
  4. 喜马拉雅后端一面

    2024-06-19 03:42:02       24 阅读
  5. 喜马拉雅xm音频解码

    2024-06-19 03:42:02       10 阅读
  6. 喜马拉雅项目调整

    2024-06-19 03:42:02       5 阅读
  7. Leetcode 344. Reverse String

    2024-06-19 03:42:02       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-19 03:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-19 03:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-19 03:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-19 03:42:02       18 阅读

热门阅读

  1. 部署YUM仓库及NFS共享服务

    2024-06-19 03:42:02       6 阅读
  2. LeetCode-day08-881. 救生艇

    2024-06-19 03:42:02       8 阅读
  3. linux hosts配置 ip映射

    2024-06-19 03:42:02       7 阅读
  4. Web前端中的jQuery:深度解析与应用探索

    2024-06-19 03:42:02       8 阅读
  5. typescript-泛型

    2024-06-19 03:42:02       5 阅读
  6. Python 3.13 有什么新变化

    2024-06-19 03:42:02       5 阅读