tang0229 发表于 2022-11-22 14:18

某东APP地址加密参数浅分析

第一次写博客 也是关于逆向方面的文章,首先将一些题外话,有很多人问我,我是小白我是新手,能不能也做到分析app的程度.。其实 世上无难事 ,只怕有心人。一年前我连python都不知道是什么东西,所有我相信技术是无门槛的,只是看坚持与否/

提示!本文章仅供学习交流,严禁用于任何商业用途以及非法用途!!! 如有侵权 请联系本文作者进行删除处理!

进入正题
1.首先使用Jadx 去分析 Jadx可以去Github上下载,新版的都很好用 ​
附:Jadx 下载地址

拖入京东APP进行反编译, 我已经提前抓过包了,抓包这里 不再过多的阐述


townNameName
hWKrX7LO0+740I5GGMmocw==f4NSVqYaKfDk/GX044TKhg==



这是我摘出来的两个加密参数,当然参数有很多,但加密的算法都是一样的,我们对这两个加密进行还原复现即可

尝试直接搜索特殊字段名字 “townName”





发现这里调用了名为 encrypt3DESECB 的方法 跟入分析!


    private String encrypt3DESECB(String str) {
      return PDUtils.encryptThreeDESECB(str, SharedPreferencesUtil.getBoolean("isDesCbc", false), "np!u5chin@adm!n1aaaaaaa2");
    }


非常清晰 调用方法传进去 3 个参数 第一个 参数就是 我们传入的明文地址信息 第三个参数是一个字符串 我们先记录一下这个字符串

"np!u5chin@adm!n1aaaaaaa2"

public class DesCbcCrypto {
    private static final String DES = "DESede";
    public static final byte[] IV_BYTES = {0, 0, 0, 0, 0, 0, 0, 0};
    private static final String PADDING = "DESede/CBC/PKCS5Padding";

    public static byte[] encrypt(byte[] bArr, byte[] bArr2, byte[] bArr3) throws Exception {
      if (bArr3 == null) {
            bArr3 = IV_BYTES;
      }
      SecretKey generateSecret = SecretKeyFactory.getInstance(DES).generateSecret(new DESedeKeySpec(bArr2));
      IvParameterSpec ivParameterSpec = new IvParameterSpec(bArr3);
      Cipher cipher = Cipher.getInstance(PADDING);
      cipher.init(1, generateSecret, ivParameterSpec);
      return cipher.doFinal(bArr);
    }



我们一直跟入函数 最后进入了这里 这里模式展示的非常清楚IV向量是一个8位的数组 在JS中可以作为HEX 00000000使用

那么 我觉得 应该无需再用FridaHOOK 再去判断 , 作为一个成熟的老鸟 应该有自己的判断 直接祭出工具解密试一下

1. 加密类型:3DES
2. 加密IV:00000000
3. 加密Key: np!u5chin@adm!n1aaaaaaa2
4. 加密模式:CBC
5. 加密填充:PKCS5




还原完毕!!!

结尾:也许讲的不是非常好 ,第一次发博客有所欠缺,而且也不知道阅读大众的平常实力,我只能按找自己的思路去展示和逆向分析这些东西,后面如果有人反馈说根本不知道为什么这么做,我会详细的使用Frida的HOOK 来进一步阐述这些问题

栓Q :如果对你有帮助,请帮我扣666

作者:沈听白






haishe 发表于 2022-11-22 18:43

感谢分享{:1_893:}·
个人建议可以丰富一下“跟入函数”这个步骤,这样可以让新人知道,是怎么从
private String encrypt3DESECB(String str) {
    return PDUtils.encryptThreeDESECB(str, SharedPreferencesUtil.getBoolean("isDesCbc", false), "np!u5chin@adm!n1aaaaaaa2");
}
到这个下面这个
public class DesCbcCrypto {
    private static final String DES = "DESede";
    public static final byte[] IV_BYTES = {0, 0, 0, 0, 0, 0, 0, 0};
    private static final String PADDING = "DESede/CBC/PKCS5Padding";

    public static byte[] encrypt(byte[] bArr, byte[] bArr2, byte[] bArr3) throws Exception {
      if (bArr3 == null) {
            bArr3 = IV_BYTES;
      }
      SecretKey generateSecret = SecretKeyFactory.getInstance(DES).generateSecret(new DESedeKeySpec(bArr2));
      IvParameterSpec ivParameterSpec = new IvParameterSpec(bArr3);
      Cipher cipher = Cipher.getInstance(PADDING);
      cipher.init(1, generateSecret, ivParameterSpec);
      return cipher.doFinal(bArr);
    }

Fgh745799516 发表于 2022-11-22 17:57

新人不明觉厉:lol

mirs 发表于 2022-11-22 19:16

没记错的话这个是下单的加密

侃遍天下无二人 发表于 2022-11-22 22:00

这个加密密钥设的有点意思,居然不随机生成一个

patagonia 发表于 2022-11-22 22:15


感谢分享{:1_893:}

fnckyon2014 发表于 2022-11-22 23:36

竟然是固定的key,不过想想好像也挺正常,要是动态就涉及key的传递了。

YI0IX 发表于 2022-11-22 23:49

感谢楼主分享.

surenyue 发表于 2022-11-23 00:57

fnckyon2014 发表于 2022-11-22 23:36
竟然是固定的key,不过想想好像也挺正常,要是动态就涉及key的传递了。

省时省力,防君子不防小人:lol

knight0531 发表于 2022-11-23 08:02

竟然用固定key,真没想到,东哥的app,应该是不差钱的那种....
页: [1] 2 3
查看完整版本: 某东APP地址加密参数浅分析