第一次写博客 也是关于逆向方面的文章,首先将一些题外话,有很多人问我,我是小白我是新手,能不能也做到分析app的程度.。其实 世上无难事 ,只怕有心人。一年前我连python都不知道是什么东西,所有我相信技术是无门槛的,只是看坚持与否/
提示!本文章仅供学习交流,严禁用于任何商业用途以及非法用途!!! 如有侵权 请联系本文作者进行删除处理!
进入正题
1.首先使用Jadx 去分析 Jadx可以去Github上下载,新版的都很好用 ​
附:Jadx 下载地址
拖入京东APP进行反编译, 我已经提前抓过包了,抓包这里 不再过多的阐述
townName | Name | hWKrX7LO0+740I5GGMmocw== | f4NSVqYaKfDk/GX044TKhg== |
这是我摘出来的两个加密参数,当然参数有很多,但加密的算法都是一样的,我们对这两个加密进行还原复现即可
尝试直接搜索特殊字段名字 “townName”
发现这里调用了名为 encrypt3DESECB 的方法 跟入分析!
[Java] 纯文本查看 复制代码 private String encrypt3DESECB(String str) {
return PDUtils.encryptThreeDESECB(str, SharedPreferencesUtil.getBoolean("isDesCbc", false), "np!u5chin@adm!n1aaaaaaa2");
}
非常清晰 调用方法传进去 3 个参数 第一个 参数就是 我们传入的明文地址信息 第三个参数是一个字符串 我们先记录一下这个字符串
"np!u5chin@adm!n1aaaaaaa2"
[Java] 纯文本查看 复制代码 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
作者:沈听白
|