1.最近听说这个叫开发助手的app挺好用的,下载之后,发现好多功能需要进行付费才能使用,这哪能忍?
2.先让我探探它的深浅,使用np管理器先看看加没加壳,发现使用了360加固
3.本来还想直接用np管理器直接改代码重打包的,没想到用了360加固难办喽,难办?那就别办了,掀桌子了,先给它脱个壳,这里我直接用frida-dexdump脱壳了
4.脱完壳之后,直接丢jadx里面进行反编译,大概这样吧
5.接下来就该分析一下了,这里我直接上算法助手,让我看看它这个窗口是怎么调用的
6.双击跳转过来,直接查看一下代码,然后我们直接写frida脚本,上frida调用一下试试。
7.脚本详情
Java.perform(function () {
console.log("启动");
let o00Oo0 = Java.use("o0000oo0.o00Oo0");
o00Oo0["onStart"].implementation = function () {
console.log(`o00Oo0.onStart is called`);
this["onStart"]();
};
});
8.使用frida脚本注入一下,发现成功调用了,说明出付费弹窗的时候,确实调用这个地方了。
9.但是后面经过测试,发现非付费功能,也会调用这个参数,说明这个方法是用来处理弹窗的,我们往上追看是谁调用了它,结果发现,没有人调用它,它是系统自动调用的,这是一个生命周期方法。
10.那接下来怎么办呢?正当我一筹莫展之际,我想到了,既然它需要付费激活,肯定会和服务端进行通信,所以,让我们抓个包试试,小黄鸟启动!!
11.在上述的包中,我们可以看到我们输入了激活码1234567890,响应回来的是激活码长度是不对的,我们看看相关的关键字首先是域名codekk.com,其次是路径/common/v,以及一些其他的特征,我们拿着这些特征点去搜索一下。
12.运气不错,只有一处,我们去看看相关代码,和请求报文参数正好对应的上,说明就是调用了这个地方。
13.之前发现响应包报错激活码长度不够,经过不断尝试,终于把在第32位时,不再报错激活码长度不够而且发现响应包code返回1而不是之前的11
14.我们在代码里再继续找找,发现这个地方的代码跳转过去和响应包的内容可以对应上。
15.这里的code和message和响应包正好对应上,我们尝试去hook一下,看看会不会触发此处。
16.脚本详情
Java.perform(function () {
console.log("启动");
let OooO0O0 = Java.use("o00000Oo.OooO0O0");
OooO0O0["getCode"].implementation = function () {
console.log(`OooO0O0.getCode is called`);
let result = this["getCode"]();
console.log(`OooO0O0.getCode result=${result}`);
return result;
};
});
17.启动脚本,发现确实触发此处代码了
18.我们前面发现,激活码错误时,code返回1,我们大胆猜测,是不是当code返回0时就表示激活成功呢?这里我们直接把脚本里的return的结果直接返回为0试试。
Java.perform(function () {
console.log("启动");
let OooO0O0 = Java.use("o00000Oo.OooO0O0");
OooO0O0["getCode"].implementation = function () {
console.log(`OooO0O0.getCode is called`);
let result = this["getCode"]();
console.log(`OooO0O0.getCode result=${result}`);
return 0;
};
});
19.使用脚本注入后,我们输入1234567890,发现成功激活,现在我们可以使用专业版工具了。
20.app及所用工具的相关地址及链接,请自行搜索。
原文始发于微信公众号(Flower Sec):开发助手破解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论