实战记录
最近总是睡不着,天天失眠,于是下载了一款助眠app,音乐很好听,可是也不便宜,于是开整。
mt看一下基本情况,有壳
使用了fridadexdump没成功,又没脱壳机,只能借助一下在线工具脱壳
脱完壳没法反编译,这里使用np修复一下
开始分析,个人习惯直接先上r0tracer分析堆栈,根据功能点去分析
选个白噪音听听,没开会员只能试听,那思路就来了,如果找到破解会员的入口,首先就知道哪里会判断你是不是会员,比如这里,非会员只能试听,过一段时间后非会员就不能听。
那可能存在的判断点就在进入付费页面前,或者点击付费项目时。这里过一段时间后,点击任何音乐都会弹窗,那就trace一下看看点击后发生了什么
再看一下对应的源码,和之前说的对应上了,大概猜测就是先判断是不是会员,如果不是看一下试听时间有没有结束。
如果没脱壳的话可以直接使用objection获取实例
那么这里就很容易看出,common.b.i0()很可能是判断是否为会员的方法
看到代码也是沉默了,应该直接来isvip大法的,不过熟悉一下思路总不是坏事。
hook一下看看是否可行
function hook_vip(){
let b = Java.use("xxx.sleep.common.b");
b["i0"].implementation = function () {
console.log(`b.i0 is called`);
let result = this["i0"]();
console.log(`b.i0 result=${result}`);
return true;
};
}
可以听了
接下来修改源码,然后重打包。
这里使用np去除签名
有两个大小一样的dex使用mt打开会自动去重,然后删掉空白的,最后再将脱完壳的dex重命名加入
最后结果如下
最后再进行一个签名就可以安装了,打开看看
都可以听了,没有试听或者弹窗提示。
在hook的时候可能还有弹窗,直接修改源码后就没有了,可能那个弹窗的时机特别早,不是很好hook。
后续会继续分析该软件的加密算法,道阻且长。
注:仅做技术交流。
条件允许还是买个mt会员,不然mt np换来换去挺麻烦的。