好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 l123456789jy 于 2018-8-14 13:18 编辑
一直没有找到合适的种子下载器,偶尔看到一个`匆匆下载器`,试了下解析成功率相当高,但是是要付费的,我这种穷逼,拿来的钱,所以就打算逆向下,看看
#### 第一步分析
- 打开APKTool,分析改APK,结果发现居然加密,是用梆梆加密的
- 关于如何破解梆梆加密请看我这篇文章[App“梆梆加固”破解](https://www.jianshu.com/p/955c0b1507c7 "App“梆梆加固”破解")
#### 第二部开始分析,关键代码
- 我们把源码dum出来之后,使用 dexjar,打开
![]()
- 源码全部看到啦
- 我们通过`ACTIVITY TOP`获取播放界面的完整类名,和路径
![]()
这里我么就看到了,他的包名,和当前Activity的完整路径,接下在我们就去找`AdvancedPlayActivity`这个类
- 然后我们根据他的提示语去搜索,找到关键代码
这个是游客登录的限制逻辑
![]()
这个是vip逻辑的限制
![]()
- 有了关键代买,我们就好办了,我们分析,他这个逻辑都是在一个叫做,`startPositionTimer` 方法里面被调用,我们只需要hook住这个方法,替换这个方法,替换成一个空实现不就ok了
```java
public class Man implements IXposedHookLoadPackage {
private static final String FILTER_PKGNAME = "com.congcong.dl.application";
private static final String BAI_DU_PKGNAME = "com.congcong.dl.application.widget.BDCloudVideoView";
private static final String AD_PKGNAME = "com.congcong.dl.application.cc.bar.AdvancedMediaController";
private static final String LOG_PKGNAME = "android.util.Log";
@Override
public void handleLoadPackage(final LoadPackageParam loadPackageParam) throws Throwable {
Log.e("handleLoadPackage", loadPackageParam.packageName);
if (FILTER_PKGNAME.equals(loadPackageParam.packageName)) {
//这里是为了解决app多dex进行hook的问题,Xposed默认是hook主dex
XposedHelpers
.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("handleLoadPackage", "afterHookedMethod");
final ClassLoader cl = ((Context) param.args[0]).getClassLoader();
XposedHelpers.findAndHookMethod("com.congcong.dl.application.cc.AdvancedPlayActivity", cl, "onCreate", Bundle.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Log.e("handleLoadPackage", "onCreate");
//获取当前hook的activity
final Activity thisObject = (Activity) param.thisObject;
Uri data = thisObject.getIntent().getData();
Log.e("handleLoadPackage",data.toString());
final Class<?> aClass = cl.loadClass(AD_PKGNAME);
//hook AdvancedMediaController 中 startPositionTimer方法并且替换为空实现
XposedHelpers.findAndHookMethod(aClass, "startPositionTimer",
new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam methodHookParam)
throws Throwable {
Toast.makeText(thisObject,"hook,成功!",Toast.LENGTH_SHORT).show();
Log.e("handleLoadPackage", "replaceHookedMethod");
return null;
}
});
}
});
}
});
}
}
}
```
应广大群众要求,想要使用下载功能,看了下,就把这功能实现了,思路很简单,就是hook他的vip,属性就可以了,然后替换他的登陆方法,放出源码
//================================================
final Class<?> aClass = cl.loadClass("com.congcong.dl.application.cc.ShowListActivityQ");
XposedHelpers.findAndHookMethod(aClass, "getlogin",
new XC_MethodReplacement() {
@Override
protected Object replaceHookedMethod(MethodHookParam methodHookParam)
throws Throwable {
Toast.makeText(((Activity) methodHookParam.thisObject),"hook,成功!",Toast.LENGTH_SHORT).show();
//通过查看源码发现他标记用户的vip标识是vip=1是0不是,所以动态修改他的属性就行了
XposedHelpers.setObjectField(methodHookParam.thisObject,"vip","1");
Log.e("handleLoadPackage", "replaceHookedMethod");
return null;
}
});
}
这样就可以无限制的看了,代码已经上传github[地址](https://github.com/l123456789jy/GradleTask "地址"),在xposted 里面搜索匆匆就可以使用该插件了,插件2.0已经可以使用下载功能了.(匆匆已经改名,估计作者也逛论坛,毕竟人家还要盈利的,思路给了,后续自己破解吧!) |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|