原贴地址 http://zhaoxincheng.com/index.php/2020/07/27/%e7%a0%b4%e8%a7%a3%e6%9f%90%e4%ba%a4y%e5%8f%8bpapp%e7%9a%84vip/
就不放了,某交(y)友(p)app
Youpk
环信IM文档
hanbing&&r0ysue
拿到app就先拿到jadx中分析,发现这是36*加壳。
这是时候我们就要祭出脱壳神奇Youpk
Youpk的操作文档具体可以看Youpk的github,再次感谢Youpk。
我们在吧修复好的dex放在jadx中分析。
修复的很给力,也可以看出源代码基本没有混淆,这就更利于我们的分析了。
第一处
else if 里面的this.isVip
只有小于1才会进入,也就是提示让你开通会员。
第二处
这里可以看到this.isVip
大于1的话就会提示“开通会员了呢”
最后
其实只要进入到this.isVip
大于1那不就,,,,嘿嘿嘿
继续分析一下这个isVip是在哪里赋值呢。查找用例。。。。。
找到啦。。我们改下返回值
我们这里frida改一下。
献上代码
这里还会有个小问题,就是这块类没在内存加载的时候会报错,这时候点下某人的主页就好了。
看看效果。。。
发过去了。。。
但是我们需要一直用的话就要一个xposed的插件。
这里app采用的36加固,那我们就不能用常规的classloader进行hook,直接用36壳的classloader进行hook。
好了完美。。。私聊小姐姐(**)们
else if (this.isVip <= 1) {
new CommomDialog(this, R.style.dialog, true, "成为会员才能私聊哦!", new CommomDialog.OnCloseListener() {
/* class com.**.**.main.user.UserInfoActivity.AnonymousClass6 */
/* JADX WARN: Type inference failed for: r0v0, types: [android.content.Context, com.**.**.main.user.UserInfoActivity] */
@Override // com.**.**.widget.dialog.CommomDialog.OnCloseListener
public void onClick(Dialog dialog, boolean z) {
if (z) {
UserInfoActivity.this.startActivity(new Intent((Context) UserInfoActivity.this, MembersActivity.class));
dialog.dismiss();
}
}
}).setTitle("温馨提示").setPositiveButton("开通会员").show();
return;
if (this.isVip > 1) {
Intent intent = new Intent((Context) this, (Class<?>) ChatActivity.class);
intent.putExtra(UserCacheInfo.COLUMNNAME_USERIDIMID, this.user_id);
intent.putExtra("userId", this.user_imid);
startActivity(intent);
return;
}
new CommomDialog(this, R.style.dialog, true, "成为会员才能私聊哦!", new CommomDialog.OnCloseListener() {
/* class com.**.**.main.user.UserInfoActivity.AnonymousClass8 */
/* JADX WARN: Type inference failed for: r0v0, types: [android.content.Context, com.**.**.main.user.UserInfoActivity] */
@Override // com.u**.**.widget.dialog.CommomDialog.OnCloseListener
public void onClick(Dialog dialog, boolean z) {
if (z) {
UserInfoActivity.this.startActivity(new Intent((Context) UserInfoActivity.this, MembersActivity.class));
dialog.dismiss();
}
}
}).setTitle("温馨提示").setPositiveButton("开通会员").show();
return;
}
return;
Java.perform(function () {
var pre = Java.use("com.***.***.utils.UncleSharedPreferences");
pre.getInt.overload('android.content.Context', 'java.lang.String').implementation = function (a1, a2) {
return 2;
}
})
XposedHelpers.findAndHookMethod("com.stub.StubApp", loadPackageParam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
Context context = (Context) param.args[0];
ClassLoader classLoader = context.getClassLoader();
classLoaders = classLoader;
XposedHelpers.findAndHookMethod("com.***.***.utils.UncleSharedPreferences", classLoader, "getInt", Context.class, String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//设置返回值为2
param.setResult(2);
}
});
XposedHelpers.findAndHookMethod("com.***.***.utils.DateUtil", classLoader, "getDayDiff", Date.class, Date.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(0L);
}
});
}
});
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2020-7-29 11:01
被mb_aoooaosd编辑
,原因: