吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 21417|回复: 82
收起左侧

[Android 原创] 200人的Q群分享3次才能使用的简单破解

  [复制链接]
brujah 发表于 2020-6-2 15:43
本帖最后由 brujah 于 2020-6-2 15:50 编辑

目录

[TOC]

前言


最近拾起了我的破MI6想玩玩一些BT手游,于是乎找了一些“*奏网”的软件合集,不成想玩之前要分享他们团队的链接到200人的Q群3次才可以玩,我一个连QQ都没有的人,只能动起了不太好的心思...

鉴于论坛规则,我这里并不放出成品,请大家自行搜索下载,理论上思路正确,都可以搞定的。此篇重在分享QQ群引流的破解思路,软件中出现的广告、更新和弹窗引流并不在此篇讲解范围。

工欲善其事必先利其器


  • AndroidKiller_v1.3.1(Win端)
  • MT管理器2.9 and NP管理器2.7.4(Android端)
  • 能网上冲浪的浏览器

好戏开场了


1.安装应用并分析:

软件启动页

软件启动页

这里一共有三个按钮可点击:

  • 联系作者:点击后打开一个QQ客服对话框
  • 加入QQ群:点击后跳转至“犯罪组织”Q群
  • 确定:点击后跳转至QQ分享页

其实这个引流的逻辑并不完善,你可以通过切换QQ分享页或者分享至我的电脑完成3次分享,但毕竟我是个没有QQ的杀手...

如果看到这里你用的是电脑的话,那就用AndroidKiller_v1.3.1进行下一步。如果是Android手机的话就用MT管理器2.9 and NP管理器2.7.4进行下一步,为什么Android手机是两个类似的软件呢,因为我没有MT管理器的会员!如果你用的是Ios手机,那可以关闭教程了...

此篇以AndroidKiller_v1.3.1为主,事实上用MT等工具更简单...

2.用AndroidKiller打开并尝试搜索关键字

搜索本团队结果页

搜索本团队结果页

很遗憾,虽然一顿操作猛如虎,但是并没有什么卵用。这里要说明一下,虽然截图显示是搜索“本团队”三个字,但实际搜索前需要先点击左下角aA按钮,然后选择文本转Unicode后搜索。比如我们接下来搜索“分享”这两个字:

搜索分享结果页

搜索分享结果页

3.找到关键代码并通过Java反编译去理解

这里的smali_classes5\...\MainActivity.smali非常可疑,为什么呢可疑呢?因为我把所有搜索结果都点进去看了一遍,确定了这个是...

进入这个文件后通过方法列表跳转到onclick方法,为什么是这个方法,因为你是通过点击这个方法去分享并累计次数的:

方法页

方法页

我的习惯是找到关键点先通过java源码看看逻辑,因为smali我不会...

不知道是这个app的问题还是我AndroidKiller有问题,当我点击使用工具查看当前JAVA源码按钮时,会弹窗提醒我未找到对应的APK源码,请确认是否已丢失,所以我用NP管理器的Java反编译功能截个图给大家看看,查看Java源码的方法很多,巧的是我电脑都没有...tips:MT管理器的Java反编译需要会员才可使用。

反编译1

反编译1

这里可以看到一个远程服务器保存的txt文件,我们用能网上冲浪的浏览器打开looklook:

txt文本内容

txt文本内容

所以知道我们为什么搜不到关键字了么?人家用txt文本获取的...做了这么多年程序猿,我也属实是又增加了一些奇奇怪怪的知识...

反编译2

反编译2

反编译3

反编译3

通过反编译的源码,我们大致看出了整个逻辑是怎样的。首先是请求这个txt文件,然后将文件内容填充到当前Activity的组件中,当我们点击相应按钮后,根据填充内容进行判断后进入相应响应。而我们的重点在:

if(this.mShareCount > this.Info.getShareCount()){
        startActivity(new Intent(this, this.main));
        finish();
}

这个判断很显然告诉我们,只有当本地变量mShareCount大于txt文本变量getShareCount后,才可以正常进入软件。

所以我们的思路逐渐就清晰起来了:

  1. 找到这个判断
  2. 修改这个判断
  3. 编译和签名软件
  4. 愉快的享用

返回我们的smali代码界面的onClick方法处,完了,一堆看不懂的代码怎么办,没事,还记得Java代码中有个finish方法么,我们在onClick方法中找到这个调用,你可以通过Ctrl + F搜索或者凭借你多年的消消乐眼力硬找,不过我推荐用第一种方法...

finish

finish

到了这里还是没头绪,别着急,在Java源码中我们知道,finish方法前面只有一个 if判断,所以向上看,锁定第一个判断。在这里我推荐你用第二种方法,因为向上不会超过几行的...

...

if-le v0, v1, :cond_4

.line 44
new-instance v0, Landroid/content/Intent;

iget-object v1, p0, Lcom/Share/MainActivity;->main:Ljava/lang/Class;

invoke-direct {v0, p0, v1}, Landroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V

invoke-virtual {p0, v0}, Lcom/Share/MainActivity;->startActivity(Landroid/content/Intent;)V

.line 45
invoke-virtual {p0}, Lcom/Share/MainActivity;->finish()V

...

在往上的第7行(不包含finish这行)中,我们发现了if-le这个方法,在smali语法中,判断函数都是以if-x这种格式存在的,在这里你可以通过baidu/google/bing等搜索引擎查询if-le的作用,或者你可以用鼠标点击一下这个方法,AndroidKiller会提示你该方法的作用,我还是推荐第二种...

if-le vA, vB, :cond** 如果vA小于等于vB则跳转到:cond**

你肯定会疑惑,明明Java反编译的代码中是大于号 >怎么在这里变成了小于等于 <=,是不是还得往上找,这里我们再往上看看smali的代码:

...

invoke-virtual {v1}, Lcom/Share/model/AppInfo;->getShareCount()I

move-result v1

if-le v0, v1, :cond_4

.line 44
new-instance v0, Landroid/content/Intent;

...

通过鼠标点击我们得知move-result v1这个函数的意思是移动上一次方法调用的返回值给v1,那上一次调用的方法是什么呢?我们再往上看一行...

没错,我们看到了getShareCount()这个方法,这个方法顾名思义,就是从txt文本中获取需要分享的总次数的,目前设定的是3次,也就是说v1 = 3

v1我们知道是几了以后,那么v0用屁股都知道了,肯定是本地变量,用于存储分享了几次的计数器,那肯定是从0开始的。

所以0肯定小于等于3,那么if-le v0, v1成立,跳转:cond_4处,然而我们并不希望跳转到别的代码处,因为我的屁股告诉我,等式下面才是成功代码的关键...

my ass says:

if-eq vA, vB, :cond** 如果vA等于vB则跳转到:cond**

4.修改smali代码并编译签名输出

我们将if-le改成if-eq让等式不成立不跳转,继续执行下面的成功代码即可...

编译

编译

本次分享到此结束,我这个人比较懒,一般都是要用什么就研究什么,有没有下期就看大家的意见了...

免费评分

参与人数 18吾爱币 +12 热心值 +16 收起 理由
童子晴 + 1 我很赞同!
生如夏花之维霸 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Likey + 1 这种我一般是分享到电脑或者文件助手....
FFF全部成为F + 1 进我的收藏夹吃灰吧~
生有涯知无涯 + 1 我很赞同!
佩格瓦拉 + 1 我很赞同!
西枫游戏 + 1 + 1 热心回复!
xhl2017 + 1 是个大佬,我也是点一下跳转qq再回去就可以了,或者分享我的电脑。
yewei123 + 1 我很赞同!
掘金小刀 + 1 我很赞同!
nut1999 + 1 + 1 用心讨论,共获提升!
q24655 + 1 + 1 我很赞同!
luoxiandun + 1 + 1 我很赞同!
111aq + 1 谢谢@Thanks!
仙鬼同拥 + 1 但是一般有这个弹窗的,基本上都是360加固,求一键脱
乄落日乀 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
苏浩 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
GenW + 4 + 1 分析的很专业,在AndroidManifest.xml里删除.main上入口应该也可行

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

颠覆1 发表于 2020-6-2 15:56
我都是到了qq界面选个群,然后不点击发送,返回就增加次数了
 楼主| brujah 发表于 2020-6-2 16:01
颠覆1 发表于 2020-6-2 15:56
我都是到了qq界面选个群,然后不点击发送,返回就增加次数了

我看了下qq的接口,这样确实算分享了,qq分享页在选群后就有成功返回值了,但是有程序里还有时间校验。其实还有个简单的办法就是利用HttpCanary去静态注入这个txt文件,文件中的“open”就是控制是否需要分享的开关,为“Ture”时所有软件都需要分享,为“False”时所有软件不需要分享。
std186 发表于 2020-6-2 15:57
mali00000000 发表于 2020-6-2 16:02
没这么麻烦,我直接发送给文件小助手就可以零。啦啦啦
 楼主| brujah 发表于 2020-6-2 16:03
std186 发表于 2020-6-2 15:57
程序猿确实厉害

程序猿的“屁股”更厉害
 楼主| brujah 发表于 2020-6-2 16:05
mali00000000 发表于 2020-6-2 16:02
没这么麻烦,我直接发送给文件小助手就可以零。啦啦啦

以前确实可以,现在的app已经开始判断是否是我的电脑或文件小助手了,比如我案例的这个app分享至非群目标会提示必须分享200人的群并且不计数。
 楼主| brujah 发表于 2020-6-2 16:12
本帖最后由 brujah 于 2020-6-2 16:16 编辑

@Gentlewang
确实可以通过AndroidManifest.xml文件,找到com.Share.MainActivity,并将节点下的intent-filter移动到com.project.videoplay.MainActivity节点下。但因为这个app不好截图,所以没有在此讲解这个点...
批注 2020-06-02 161601.png

点评

正好近期在写关于去除弹窗类的帖子,届时引用你们这些专业分析的帖子进去做索引,发给坛友们。  详情 回复 发表于 2020-6-2 16:20
Antony丶 发表于 2020-6-2 16:15
brujah 发表于 2020-6-2 16:05
以前确实可以,现在的app已经开始判断是否是我的电脑或文件小助手了,比如我案例的这个app分享至非群目标 ...

分享到自己的群也可以IDE
GenW 发表于 2020-6-2 16:20
brujah 发表于 2020-6-2 16:12
@Gentlewang
确实可以通过AndroidManifest.xml文件,找到com.Share.MainActivity,并将节点下的intent-fi ...

正好近期在写关于去除弹窗类的帖子,届时引用你们这些专业分析的帖子进去做索引,发给坛友们。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-20 13:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表