逆向 xx音乐 aversionid
版本 7.2.0
版本 7.22.0
第一步,charles 抓包
目标字段 aversionid
加固平台
- com.stub.StubApp 360加固
- s.h.e.l.l.S 爱加密
- com.secneo.apkwrapper.ApplicationWrapper 梆梆加固
- com.tencent.StubShell.TxAppEntry 腾讯加固
第二步,通过adjx查看源码
7.2.0 没有加壳
7.22.0 加壳了[可以看出是爱加密的壳,再脱壳查看源码]
搜索关键字 aversionid 进入SecurityNative类
package com.xxx.security;
/* loaded from: classes9.dex */
public class SecurityNative {
public static native String decode(String str, String str2);
public static native String encode(String str, String str2);
static {
System.loadLibrary("mgsecurity");
}
}
进入后可以看到是native方法,so包的名字也知道了,我们去data/data/包名/lib 找这个so就好了,把他save as到桌面
第三步,huuk SecurityNatice encode方法
记录参数和结果用来测试
第四步,ida so分析
第五步,如何使用encode方法
- 第一种 hook相关函数
- 第二种 逆向so文件:使用IDA逆向so文件,需要定位到加密函数,还要看得懂汇编和C代码,工作量挺大。[c大神恢复吧]
- 第三种 调用so文件:通过反编译技术定位到签名函数,找到定义native方法的类,确定使用的so文件,
将so文件移植到自己的项目中。
第一种 在hook中使用反射
String aversionid = ReflectionUtil.invokeStaticMethod(
classLoader.loadClass("com.xxx.security.SecurityNative"),
"encode",
String.class,String.class,
"ccTWaprX2aWmTIgA",
"|||866146036729188||6af97d05472b1302|||1676615131438");
Log.e("xxx","aversionid:" + aversionid);
第三种 调用so文件
把so文件放入:[app\src\main\jniLibs\armeabi-v7a]
build.gradle 添加如下代码
defaultConfig {
ndk{
abiFilters "armeabi-v7a"
}
}
创建一个相同的类,[包名必须相同]
package com.xxxxx.security;
public class SecurityNative {
public static native String decode(String str, String str2);
public static native String encode(String str, String str2);
static {
System.loadLibrary("mgsecurity");
}
}
代码中调用
String aversionid = SecurityNative.encode("ccTWaprX2aWmTIgA", "|||866146036729188||6af97d05472b1302|||1676615131438");
Log.e("xxx","aversionid:" + aversionid);
第二种
- 可以把内容放入自己的c++文件中生成 so 使用
- 翻译成java代码使用