安卓逆向学习②

对某APP8逆向学习记录简单记录(二)

1.简单记录一下一些学习过程

来源:aHR0cHM6Ly9hcHA4LnNjcmFwZS5jZW50ZXIv
目的:考虑经常性的忘记一些学习资料和文件,故在网络上记录一下。
这是一个练习平台的相关题目。

2.结果:

 app8和app5 基本一致,并没有太多混淆,主要在so层逻辑。
 结果与 [对某APP5逆向学习记录简单记录(一)](https://editor.csdn.net/md/?articleId=131749157)
相同不再赘述。

3.网页代码分析:

抓包分析,与前一篇类似不再赘述。
无加固。
这里重点讲讲不同之处。
反编译之后定位如下:
在这里插入图片描述
这里可以看出传入了一个列表参数其实就是’/api/movie’,以及一个整型的偏移量
点击调用函数,跳转到如下页面:
在这里插入图片描述
可以看出这是一个navaite 层处理的方法,也就是通常so文件处理。

在解压的文件中lib 文件下可以看到,某ibnative.so文件
通过ida 工具打开即可(注意32还是64位的)。
在打开的页面直接ctrl+f 搜索NativeUtils,在这里插入图片描述
搜索一条结果,点击查看,看不懂!f5编译为类C语言。
在这里插入图片描述
计算逻辑都在这个页面。

此次 进行native 进行处理
    public class Encrypt {
    public static String encrypt(List<String> strings, int offset) {
        return NativeUtils.encrypt(TextUtils.join("", strings), offset);
        }
    }
    对encrypt  方法进行了隐藏(so层)
    public class NativeUtils {
    public static native String encrypt(String str, int i);
    static {
        System.loadLibrary("native");
        }
    }
     #在lib 文件夹中 找到 xibnative.so文件, 通过ida 通过打开 , 简单对该逻辑进行梳理。

     v4 = a1;
    v5 = a3;  // 原始路径 /api/movie
    v6 = a4; // offset
    sub_F6D0(&v22); // 创建新数组v22
     系列操作
      sub_F6E6(&v22, &v21);
      a3 赋值给v22
    // 下面 将xfdLnciVh4FxQbri 赋值给v22
     std::__ndk1::basic_string<char,std::__ndk1::char_traits<char>,std::__ndk1::allocator<char>>::basic_string<decltype(nullptr)>(&v20,"xfdLnciVh4FxQbri");
    v8 = time(0); // v8 为当前时间错
    sub_F758(&v22, &v18); v18 添加到v22
    join(&v16, &v22, 44);  v22 通过44(ascii的’,‘) 拼接存入 v16
    sha1(&v17, &v16);  // sha1 计算存入 v17
     sub_F6D0(&v15); // 新建数据 v15
  sub_F758(&v15, &v17); // 将v17 添加到数组v15
  sub_F758(&v15, &v18); // 将v18 添加到数组v15
      join(&v14, &v15, 44); // 通过44(',')拼接 数组 v15 存储到v14
      basic_string(&v12, &v14); 将v14 存储到v12
      b64encode(&v13, &v12); 对v12进行base64编码 然后存储到v13
      后续做一些char数组转换和删除操作,返回处理后的 v11

      2. 将so流程改写为python

大概分析流程如上。
分析流程结束!

4.总结:

	整体难度一般,适合练习。
	接下来还会对其他相关的app,重点分析过程做一些记录,尽量不再出现源码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值