520Kelly 发表于 2016-5-5 16:37

某安卓渣福利软件的破解

某安卓渣福利软件的逆向与分析
仅作技术交流,强烈鄙视app作者的无良,拿免费视频卖钱真不要脸、
**** Hidden Message *****
准备工作:模拟器内一定要安装一个权限管理查看的工具,可以更好分析软件到底做了什么,这里我用的是x隐私
开始:首先在模拟器运行app然后用抓包软件看看程序做了什么,抓包软件附加模拟器进程就可以抓到app的包了

**** Hidden Message *****而这个mv,qiuwoo.com不能单独访问也就是说这个服务器 只单纯存放视频,然后在另外一个服务器直接给出播放地址
我们得出的结论就是并不是服务器不给真实视频地址,而是程序知道播放地址但是判断出你不是vip 所以不给你播放
那么我们之前测试的结果是 试看视频只能看一小部分 VIP视频基本不可看
所以我们要搞的话 就是搞这个app 找出判断VIP的部分就可以
另外一个思路就是自己弄出这个服务器所有的视频地址 然后不通过他的app播放也可以
我们直接搞app直接看看有没有什么可用的信息,将apk拉进安卓杀手

以上可发现这个app调用很多敏感权限导致杀毒软件报毒
所以在之前我叫大家用权限查看工具
也就是为了禁用那些没用权限防止他搞一些乱七八糟的事


这是他的支付窗口 我们可以理解为注册窗口
然后上面的smali的话启动smali为MainActivity.smali
支付的smali有三个分别是


最下面的不是,就上面三个是
用JD-gui打开 payactivity跟paybackactivity两个可以发现一些有用的东西

充值成功是我们要的,为什么?其实不难理解,我们来分析一下
首先这个程序不是注册码注册,不需要我们购买注册码,他唯一识别的方式应该就是读取手机设备信息比如iemi什么的
然后通过创建订单,直接支付钱给作者,就会提示成功
把支付成功 也就是注册信息写在本地,当我们下一次运行的时候就不会出现二次支付
我们抓包是没有抓到他联网判断vip 所以他肯定是本地验证所以我的思路就是搞他的充值

经过仔细查看源码的话 我们发现payactivity.smali才是真正的充值所在
至于那个paybackactivity 虽然大部分代码相同但是搞了以后没反应
但是假设app会调用那个smali代码进行充值的话 搞他也是有效果的
也许是程序别的地方会调用吧但是我们弹出的支付窗口是payactivity.smali
那么我们知道了关键smali 可以直接用安卓杀手去修改判断

这个判断直接用#注释掉等经过判断的时候不会跳去cond:0
会一直往下执行 就会出现充值成功的提示
当我们这样逆向以后,我们还要思考,这样做如果当程序没有调用payactivity的时候 如果是调用之前那个paybackactivity
那么我们这样逆向依然无效 这是最好的结局
最坏的结局是,如果你的手机安装了微信 同时里面又有钱,那么有可能会扣费
所以我们还要进行修改,破坏他扣费的程序
当然以下我没有经过试验 所以只是猜测
我们可以破坏创建订单String str = "http://" + g.a() + "/weiXin/requestPay.app?body=VIP&total_fee="+ h *100 + "&attach="+ this.i + "&appid=" + g.c();Toast.makeText(this, "获取订单中,请稍后”,0).show();
把这段代码中的其中一段 比如http://删除或者其他的,只要不是完整的链接 我想应该不会被支付成功的
又或者我们干脆直接把这些创建订单代码删除 直接留下充值成功的代码即可
这样的话就会比较麻烦 因为有可能程序会崩溃出错,
还有一种方法就是我们修改支付的金额,假如我们把
if (n == 38)    {      ((TextView)findViewById(2131034229)).setText("38元");   ((TextView)findViewById(2131034227)).setText("包月会员");    }    if (h == 58)    {   ((TextView)findViewById(2131034229)).setText("58元");   ((TextView)findViewById(2131034227)).setText("包年会员");
这里的n=38和n=58换掉 这样即使创建订单 但是我们支付的金额可以修改为0
这种思路也是可以的,但是最好不要去试验 除非你是土豪,在文章的开头我就说过 这个作者无良
卖这种根本没有亮点的免费视频,实在是不值。
逆向充值成功以后 我们发现app会在data文件夹写

<boolean name=”KF” value=”true”/>这句代码其实就是验证你是不是VIP的标志
但是假如我们手动添加代码 其实是没有任何效果的因为这个文件内容应该会被覆盖
我试过了 假如你没有经过那段支付成功的代码直接添加这段代码进xml
还是会弹出这个充值框框的
所以还有一种思路是 JokerST 提出的直接在启动窗口调用方法
直接在xml写入这段代码这样无论程序怎么写都是会员 也达到我们逆向的目的

思路的延伸:
其实到这里的话 还能延伸一些别的思路 干掉这个窗口其实也可以
但是可能会出现这个视频会自动停止播放的问题
假如说你想直接添加那段代码到xml不妨试试干掉修改xml内容的地方
你的内容才不会被程序覆盖掉,你的代码才能生效 反正所有KF=false都删除就行

app逆向的标志:KF=ture **** Hidden Message *****

文章尾部再次吐槽这种渣app,希望大家花钱也要花得物有所值 只想说一句这种app开了会员跟下一晚上的葫芦娃也没区别、还是种子强大你懂的!
感谢JokerST参与代码分析,文章首发于吾爱汇编论坛---Kelly

Shark恒 发表于 2016-5-5 18:12

格盘大大外面浪了1年,终于回家了{:5_193:}

Bu弃 发表于 2016-5-5 18:21

本帖最后由 Bu弃 于 2016-5-5 18:25 编辑

地板么。最后一句话亮了   这种app开了会员跟下一晚上的新闻联播也没区别

xiaoshagua 发表于 2016-5-5 18:27

学习了安卓逆向教程一直想学只是 一直没有教程非常感谢作者希望作者能多出些这类的

我是苍狼 发表于 2016-5-5 18:31

楼主啥情况?

千里丶 发表于 2016-5-5 18:36

格盘大大又回来了哦

流年兮相逢 发表于 2016-5-5 18:38

支持楼主

key、诺森 发表于 2016-5-5 19:04

大神就是大神 我膜拜

叶良辰和赵总 发表于 2016-5-5 19:13

格盘大大终于来了 {:5_116:}

ll988600 发表于 2016-5-5 19:16

...还不如下葫芦娃
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 某安卓渣福利软件的逆向