,那么Cookie.getQQ()这个代码则就相当的可疑, SystemInfoUtil.getAppVersionCode() + "", String arg1) { Cookie.Mkey = arg0; Cookie.QQ = arg1; }} 一个静态实体类, 下载次数: 245) 下载附件 2022-7-30 13:58 上传 16591604097922.jpg (358.13 KB,先看看这个写的非常漂亮的Encryption函数: public static String encryptText(String arg1) { return EncryptAndDecrypt.encryptText(arg1, ""); if(v5.length() = 10 (v5.contains("%"))) { String[] v5_1 = v5.split("%"); String v0 = v5_1[0]; String v5_2 = EncryptAndDecrypt.decryptDES(v5_1[1], 16589927417533.jpg (42.32 KB, 下载次数: 240) 下载附件 2022-7-30 13:58 上传 直接可以看到这个搜索结果了,直接删除config.json会重新初始化 3. 修复了更换下载目录时目录后缀不带‘/’导致目录访问报错的bug 4. 如果有其他问题可以github提issues。
吾爱破解论坛因你更精彩! hiplease + 1 + 1 谢谢@Thanks! wu92460607 + 1 + 1 谢谢@Thanks! djsz + 1 我很赞同! andacn + 1 + 1 我很赞同! viafromwwf + 1 + 1 谢谢@Thanks! zmy98 + 1 + 1 感谢发布原创作品,接下来就可以用这个算法生成数据去请求http数据了,得,。
搜索这个字符串,, 下载次数: 244) 下载附件 2022-7-30 13:58 上传 写在最后 - 总结 于是为了下载flac, 第一步 反射大师脱壳 对于类似于这种神奇的软件作者总会加个壳加加固保护一下源代码, String arg5) { if(!TextUtils.isEmpty(arg4) !TextUtils.isEmpty(arg5)) { int v1 = 0; StringBuilder v5 = new StringBuilder(EncryptAndDecrypt.encryptDES(arg4, v5_2);//v5_2就是密码,我们要批量下载这些音乐就需要逆向出这个迷之数据到底是什么东西,吾爱破解论坛因你更精彩! oecho + 1 我很赞同! cww18862144459 + 1 + 1 牛啊牛啊 HLG + 1 + 1 我很赞同!现在这样搞得垄断才有市场啊 YZXHZY + 1 + 1 谢谢@Thanks! 2218486635 + 1 + 1 我很赞同! 774258 + 1 鼓励转贴优秀软件安全工具和文档! qq63 + 1 + 1 感谢发布原创作品。
"DES"), String arg5) { if(!TextUtils.isEmpty(arg4) !TextUtils.isEmpty(arg5)) { int v1 = 0; StringBuilder v5 = new StringBuilder(EncryptAndDecrypt.encryptDES(arg4,直接看setCookie的交叉引用看看是从decryptAndSetCookie函数设置密码的: public static boolean decryptAndSetCookie(String arg5) { String v5 = arg5.replace("-", 0).trim(); } catch(Exception v5) { return v5.getMessage(); } } return null; } 到这里我们已经很清晰了,共获提升! jiazhibin1314 + 1 + 1 很喜欢 project0ne + 1 谢谢@Thanks! cscxqe + 1 + 1 感谢发布原创作品,里面是如何处理的: public static String encryptText(String arg4。
这个加密看起来像是一个接口签名防止被抓包调用接口,共获提升! 2333y + 1 谢谢@Thanks! abadc_666 + 1 + 1 用心讨论,坐了一年牢出来发现竟然有4.x的版本更新了, 只有下面的一个 接口关联他, SystemInfoUtil.getAppVersionName(),吾爱破解论坛因你更精彩! lmk021 + 1 + 1 谢谢@Thanks! 首席鉴淫师 + 2 + 1 我很赞同! 星星之夜 + 1 热心回复! 查看全部评分 , null); v10.setIp(EncryptAndDecrypt.encryptText(v10.getUid() + v10.getDeviceModel() + v10.getDeviceBrand() + v10.getSystemVersion() + v10.getAppVersion() + v10.getVersionCode(), 下载次数: 248) 下载附件 2022-7-30 13:58 上传 我们关注一下上图的/api/Download请求,一个朴实无华的http请求, Cookie.getQQ()); } public static String encryptText(String arg4。
tab一下看看,下面我们就开始先用python实现一下,看看加密如何,那么为了得到这个qqmusic的源数据,共获提升! qtfreet00 + 2 + 100 + 1 感谢发布原创作品, 不过在此之前我们还要看一下EncryptAndDecrypt.encryptText函数, 项目地址:点我访问项目地址 免费评分 参与人数 50 威望 +2 吾爱币 +142 热心值 +47 理由 codezhao + 1 热心回复! anydaicn + 1 + 1 谢谢@Thanks! dc201 + 1 + 1 感谢发布原创作品, 8)), 接口表获取音乐的高解析度下载地址/api/MusicLink/link 那么话不多说。
提高逆向成本,很有精神! 首先我们打开app开始下载高解析度音频, new SecretKeySpec(arg6.getBytes(),很好, String arg5)函数,有些好奇怎么实现的。
共获提升! kkskman + 1 我很赞同! yyff666 + 1 + 1 感谢发布原创作品, 跳转一下看看: public class Cookie { private static String Mkey; private static String QQ; public static String getMkey() { return Cookie.Mkey; } public static String getQQ() { return Cookie.QQ; } public static void setCookie(String arg0, 样本APK:QMD 1.7.2.apk https://wwb.lanzoub.com/iX5Lr08oc3be 写在前面 - Bugs修复 - 2022.08.12 已修复写入config文件时Windows提示GBK编码无法解码UTF-8编码的错误 第一次使用时缓存路径自动初始化为执行当前代码所在的路径,可以看出来其实就是几个字符串appand一起后加上密码des, "").replace("|",还加上了“QMD”作为密码前置字符串,我为了把我iMac上的mp3音质音乐替换为flac或者HiRes无损, null, v0.substring(0,吾爱破解论坛因你更精彩! 带俗 + 1 + 1 用心讨论。
16589915329732.jpg (274.21 KB。
return true; } return false; } 继续跟踪交叉引用: public boolean getCookie() { String v0 = new HttpManager("http://8.136.185.193/api/Cookies").postDataWithResult(new Gson().toJson(SystemInfoUtil.getDeviceInfo())); return TextUtils.isEmpty(v0) ? false : EncryptAndDecrypt.decryptAndSetCookie(v0); } 找到了, v5_2.substring(0,arg4则是String的原文,我直接写了一个python脚本, 8))); Random v4 = new Random(((long)Calendar.getInstance().get(5))); int v0 = v4.nextInt(4) + 1; while(v1 v0) { v5.insert(v4.nextInt(v5.length()), SystemInfoUtil.getDeviceBrand(),因为代码我本地测试并不严谨, 8))); Random v4 = new Random(((long)Calendar.getInstance().get(5))); int v0 = v4.nextInt(4) + 1; while(v1 v0) { v5.insert(v4.nextInt(v5.length()),共获提升! levelhan + 1 + 1 热心回复! Breathless2677 + 1 + 1 谢谢@Thanks! 18895411830 + 1 + 1 热心回复! gaosld + 1 + 1 谢谢@Thanks! alade1139322744 + 1 + 1 我很赞同! Lucrebon + 1 + 1 谢谢@Thanks! 62070F + 1 + 1 用心讨论,直接打开反射大师先来扒一层皮看看能不能看到里面,那么我们就可知道arg5是作为密码而存在的。
16589919873070.jpg (258.07 KB, 下载次数: 244) 下载附件 2022-7-30 13:58 上传 16591257371138.jpg (319.21 KB,请回帖或github提issues,2021年初还只有Jeb 3.24,偶然间在网上发现了这个app,那么我们就有必要看看这个提交的数据SystemInfoUtil.getDeviceInfo()到底是什么东西: public static final DeviceInfo getDeviceInfo() { DeviceInfo v10 = new DeviceInfo(SystemInfoUtil.getUID(),吾爱破解论坛因你更精彩! 懵懂的挖掘机 + 1 + 1 我很赞同! yuxs520 + 1 + 1 牛啊 junjia215 + 1 + 1 用心讨论, 8)); if(v5_2.length() 8) { v5_2 = v5_2 + "QMD"; } Cookie.setCookie(EncryptAndDecrypt.decryptDES(v0,于是做本篇分析文章。
下载次数: 250) 下载附件 2022-7-30 13:58 上传 到这里我们就用python写出了加密算法, SystemInfoUtil.getSystemVersion(), new IvParameterSpec(arg6.getBytes())); return Base64.encodeToString(v0.doFinal(arg5.getBytes()), String arg6) { if(arg5 != null arg6 != null) { try { Cipher v0 = Cipher.getInstance("DES/CBC/PKCS5Padding"); v0.init(1, 第二步 JEB静态分析 可喜可贺, ("QMD" + arg5).substring(0, new Object[0]); return v4_1;} v4=arg4,arg4则是一个String不足为惧, 这个包是用来获取QQ音乐的文件实际下载地址,我有种直觉这玩意应该也是加了固的, 下载次数: 248) 下载附件 2022-7-30 13:58 上传 libjiagu.so赫然在目,再无其他,吾爱破解论坛因你更精彩! exiahan + 1 + 1 用心讨论。
密码作为iv。
然后调用了一个setIp函数, SystemInfoUtil.getSystemModel(), 反射大师脱壳过程不再赘述,我们来看看这个请求: 一个迷之数据,但是这个接口居然是POST提交, 下载次数: 245) 下载附件 2022-7-30 13:58 上传 直接抓包看数据,看来是从这个接口获取的数据, 第三步 测试接口访问 16591588597095.jpg (338.54 KB,jeb直接打开导出的dex看函数,我们继续跟踪: public static String encryptDES(String arg5,看来不需要再去找其他的dex文件了,我们如何生成它,吾爱破解论坛因你更精彩! coco007 + 1 + 1 感谢发布原创作品,好,共获提升! superFlyMan + 1 热心回复! 朝闻道夕死可矣 + 1 + 1 感谢发布原创作品,本地测试使用正常但是可能在其他机器上会发生一些奇怪的现象,那么我们用python实现一下这个加密函数: 16591253982291.jpg (327.21 KB, "QMD" + arg5.substring(0,加密方式为des/cbc/pkcs5padding方式填充结果, "-"); ++v1; } return v5.toString(); } return ""; } 清晰地看到又调用了EncryptAndDecrypt.encryptDES函数, 16589918835312.jpg (336.43 KB,一个个去网上找文件, 下载次数: 247) 下载附件 2022-7-30 13:58 上传 关注以下函数: public String getMusicLink(String arg4) { String v4 = EncryptAndDecrypt.encryptText(arg4); String v4_1 = new HttpManager("http://8.136.185.193/api/MusicLink/link").postDataWithResult("\"" + v4 + "\""); Logger.e(v4_1, 逆向一个QMD QQ音乐源下载软件 这个Apk主要是用来下载QQ音乐的无损数字音频文件, "F*ckYou!"));//密码是F*ckYou!,果然打开zip文件一看: 16589910239841.png (155.55 KB,吾爱破解论坛因你更精彩! pengpai2022 + 1 + 1 我很赞同! Liu12152251 + 1 + 1 我很赞同! 右手写放弃 + 1 + 1 我很赞同! handhzc + 1 谢谢@Thanks! dalongwapj + 1 我很赞同! 落花时节又逢君 + 1 + 1 我很赞同! st790211 + 1 + 1 谢谢@Thanks! lyn2018 + 1 + 1 用心讨论,emmmm.... return v10; } 获取了设备的一些信息,由arg5参数分解而来,直接导出内存dex即可。
"-"); ++v1; } return v5.toString(); } return ""; } 他调用了encryptText(String arg4, 0x40。
