低调(d-iao) 发表于 2023-9-11 03:19

【散装破文】如何有效率的去除软件广告(五)

本帖最后由 低调(d-iao) 于 2023-9-11 15:46 编辑


【前期教程】
【散装破文】如何有效率的去除软件广告(一)
【散装破文】如何有效率的去除软件广告(二)
【散装破文】如何有效率的去除软件广告(三)
【散装破文】如何有效率的去除软件广告(四)


    散装系列:是以日常实用小技巧所展开的系列

    通过前面几课,想必各位对去除广告已有了一定的了解。今天将换个玩法去演示。

    所有便利都源于生活,古时候,古人觉得步行太慢,就通过了马作为代步。现在更不用说了,已经越来越便利了。然而玩逆向也一样,都是为了便己便民,才衍生出各种技巧,有了各式各样的工具。

   那么在逆向破解过程,使用哪种方式则取决于开发者的逻辑规则。比如一款需要root才能使用的软件,加入了一些防止改包破解手段。这时候可以不需要改包破解。转而使用hook方式反而会更合适,不仅可以降低破解难度,且适用所有使用人群。因为它有了一个前提,就是使用这款软件的用户手机必然都已root,所以hook方式破解完全合适。

      然而对于一款不需要root就能使用的软件,如果选择hook方式,反而会受限于使用人群。这时候选择hook就不是一个好方案。但如果只是为了便己,那就是怎样方便怎样来吧。

      所以于人于事都好,永远都不会只有一个方法,一种手段。

   比如上一节课中,演示了免广告领取奖励,对于那款软件的规则是每次可领取12点能量,每十秒可以领一次。可是如果手动自己操作深入体验后,会发现每十秒点一次,持续重复久了会累。这时候如果能有一个自动领取的方法,是不是就会变得更好?这就是所谓的一切源于生活,唯有体验过后方能理解当中的需求。所以这里就会衍生出,如果能自动多好?那么是不是就可以找个自动化工具,让它自动重复点击就好了?结果如下图



   好了,说完了此章的铺垫后,开始进入主题。本次使用的软件是来自上一节课里一个回复求助,本来是不打算做的,因为处理方式和上节课大同小异。但是写这节课的目的是希望能让新手们明白一个道理。

   学习不是说你看完一篇文章,然后你找一款和文章无关的软件练习,才发现自己却无法胜任,接着跑来寻求帮助,这不是该有的学习态度。

   所谓学习是如果你知道自己没什么经验,对破解不了解,你首先该做就是跟着教学里演示的软件实际的走一遍,走前人走过的路,了解清楚怎么去处理,然后才再举一反三的去处理自己想要的软件。而不是看完教学却玩着自己想要的软件。

    至于学习不是说看完就表示你已掌握了,当中还包含着看懂,理解,吸收,实践,只有完成这些步骤,才说明你学会了掌握了。更不是说使用与教学无关的软件,让我们来给你分析一遍。

    同时也想告诉新手们,处理方式永远不仅限于一种。

   好了 开始讲解课题

    本章演示的这款软件可以通过做任务获取VIP天数,同时也可以通过观看激励广告获取VIP。



   每日观看激励广告任务如下
   -每天可以看十次激励广告。
   -每次观看完毕可获得一天会员。
   -每次观看间隔五分钟。

   从以上的分析过程可以知道,5分钟内只能点一次。说明每五分钟得来回点一次,十次就得花50分钟,这显然很不方便。并且时间由服务器控制,无法忽视冷却CD,所以即使弄成免广告领取奖励,也不是那么便己便民。因为还得去记住时间回来领。

    所以对于不同的问题,就要用不同的解决方法,而且此软件同时支持ios和android双端,那么有没有一种方式可以不需要去打理又能自动领取的呢?答案是有的,不仅可以解决5分钟来回领的繁琐,更能同时支持双端会员。那就是编写一份协议脚本,自动完成每日任务。

    协议脚本主要依然是模拟手动完成任务,只是解决了手动的繁琐。
   
   首选对于需要账号登陆的软件,第一个需要处理的就是登陆问题,凡是需要登陆的软件在登陆之后,服务器都会返回一个身份凭证,然后再接下来的使用过程,软件都是通过这个凭证来区分使用者的所有信息,一般称之为token。所以登陆的目的就是为了获得token,以让脚本可以继续进一步操作,如果没有token,软件就无法知道奖励将发放给谁。

    另外需要注意一点就是,有些软件并不支持多端登陆,当重新登陆将会导致上一枚token失效,所以对于这种则可以直接抓取登陆后的token写到脚本里,而不是重新在脚本上登陆。

   然而本次软件支持多端登陆,所以可以在脚本里模拟登陆操作。
   
   本此仅演示如何通过手机号登陆,对其他第三方登录并没有过多研究,这里不进行讲述。并且此软件无论使用哪种第三方登录,最终依然都需要绑定手机号。




      此软件并未对协议数据进行加密,所以不需要进行解密,如果遇到有加密的软件,还得学会如何进行解密。

      那么需要获取https的封包数据,就得对软件进行封包拦截。所以可以使用抓包工具进行抓包。但是抓包过程肯定也会拦截到软件里很多个无用的数据,然而又会有那些为己所用呢?所以这里则需要先整理好思路再进行操作。

      小熊油耗任务思路流程(按顺序)
   1. 登陆 (获取token)
   2. 当天时间 (用于脚本每日循环)
   3. 任务列表 (获取所有任务)
   4. 任务记录 (用于判断当日是否已完成)
   5. 执行任务 (由于此软件不会判断任务是否已完成,所以可以直接在不做任务前提下领取奖励)
   6. 获取任务完成时间 (为5分钟后再继续做准备)
   7. 记录执行次数 (每日10次奖励,已全部完成则等待下一天)

      当流程思路整理完毕后,可以很容易的发现,只需要在抓包过程获取1,3,5的https请求,就可以写出一个完整的脚本了。

      以下是所需的https请求和响应
   
验证码:

```code
post请求:
https://www.xiaoxiongyouhao.com/api/sms.php

header:
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 35
Host: www.xiaoxiongyouhao.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/4.9.3

postfield:
a=reqvcode&phone_number=18112345678

响应体:
{
"version": 1,
"status": 0,
"message": "成功。"
}

```



登陆:

```code
post请求:
https://www.xiaoxiongyouhao.com/api/auth2.php

header:
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 67
Host: www.xiaoxiongyouhao.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/4.9.3

postfield:
smsVerificationCode=1234&phoneNumber=188112345678&src=app&authType=6

响应体:
{
"version": 1,
"status": 0,
"message": "登录成功!",
"authToken": "827ccb0eea8a706c4c34a16891f84e7b"
}
```


任务列表:

```code
get请求:
https://www.xiaoxiongyouhao.com/api/vip/index.php?a=query_membership&os_name=android&auth_token=827ccb0eea8a706c4c34a16891f84e7b

header:
Cache-Control: no-cache
Host: www.xiaoxiongyouhao.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/4.9.3

响应体:
{
"version": 1,
"status": 0,
"message": "成功。",
"vip_state": 1,
"vip_fee_plans": [
    {
      "id": 111,
      "name": "一年VIP",
      "price_original_in_fen": 1999,
      "price_current_in_fen": 1999,
      "membership_days": 366,
      "promotion_ongoing": 0,
      "promotion_label": ""
    },
    {
      "id": 101,
      "name": "一月VIP",
      "price_original_in_fen": 199,
      "price_current_in_fen": 199,
      "membership_days": 31,
      "promotion_ongoing": 0,
      "promotion_label": ""
    },
    {
      "id": 113,
      "name": "三年VIP",
      "price_original_in_fen": 4999,
      "price_current_in_fen": 4999,
      "membership_days": 1096,
      "promotion_ongoing": 0,
      "promotion_label": ""
    }
],
"vip_free_tasks": [
    {
      "id": 213,
      "name": "看广告得1天免费VIP",
      "subtitle": "每5分钟可以领一次,每天最多10次",
      "membership_days": 1,
      "accomplished": 0
    },
    {
      "id": 211,
      "name": "新用户免费领取7天VIP",
      "subtitle": "注册不满1年的车友可领取1次",
      "membership_days": 7,
      "accomplished": 0
    },
    {
      "id": 214,
      "name": "绑定手机号领取15天VIP",
      "subtitle": "用手机号登陆或者绑定手机号后可领取",
      "membership_days": 15,
      "accomplished": 0
    },
    {
      "id": 215,
      "name": "分享微信朋友圈领取7天VIP",
      "subtitle": "每14天可以领取一次",
      "membership_days": 7,
      "accomplished": 0
    },
    {
      "id": 216,
      "name": "在应用商店评分领取7天VIP",
      "subtitle": "",
      "membership_days": 7,
      "accomplished": 0
    }
]
}

```



任务奖励:

```code
get请求:
https://www.xiaoxiongyouhao.com/api/vip/index.php?a=accomplish_free_task&os_name=android&task_id=213&auth_token=827ccb0eea8a706c4c34a16891f84e7b

header:
Cache-Control: no-cache
Host: www.xiaoxiongyouhao.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/4.9.3

响应体:
{
"version": 1,
"status": 0,
"message": "成功。",
"vip_state": 2,
"vip_valid_till_date": "2023年09月03日"
}

```



   至于编程方面这里就不提供代码了,毕竟各有各熟悉的编程语言,这里仅说明脚本制作过程,具体就让你们自己编写整合。如果需要双端通用,可以使用web编写,云端挂机。

   1. 新建两个文本框和两个按钮。
   2. 文本框分别作为手机号和验证码输入。
   3. 按钮分别是发送验证码和登陆。
   4.当发送验证码按钮触发的时候,则调用验证码发送请求。
   5. 接着通过判断响应包的status是否为0则发送成功。
   6. 这里对发送成功和失败做一个处理,比如成功则提示发送成功,失败则提示发送失败。
   7. 当成功输入验证码并完成输入后点击登陆则触发登陆请求。
   8. 同样的检测status是否返回0,是则获取authToken,否则做错误的处理。
   9. 然后将authToken保存到配置文件里,以在挂机过程使用。
    10. 当authToken得到之后就进行读取,并开始定时任务。
    11. 首先需要判断的是是否有当前已完成了任务的记录,这里可以用当天日期作为判断,如有则当天不再执行,否则将进行下一步。
    12. 获取所有任务的列表,所以执行任务请求。
    13. 同样判断status是否为0,是则获取成功,否则自动重新发起。
    14. 接着再循环获取任务列表里的每个任务,其他任务可以按正常方式完成。唯独每日十次的任务。可以通过其ID来区分。如果id等于213 并且accomplished等于0 ,则发送领取奖励。
    15. 接着判断响应包的status是否为0,是则记录当日已执行的次数,并记下当前时间戳。
(这里时间戳,有10位,有13位,具体看自己怎么实现。如果是10位,则将当前时间加上300)
    16. 接着再以accomplished作为判断继续执行其他任务。
    17.完成一轮后,并将定时时间改为当前已+300后的时间戳。
    18. 以此类推的执行完十次后就将当天的年月日作为定时,如果当天时间等于记录的时间或小于就不再执行,如果大于则开始执行任务。

    好了,到这里教学也接近尾声了,自己动手写一遍才清楚,毕竟一步一脚印。最后放上一张脚本图。


      

pdcba 发表于 2023-9-11 08:46

请问大佬 前三章可以发在52pj吗   mt论坛没有邀请码不能注册,看不到详细文章。谢谢!

ericzhao666 发表于 2023-11-16 14:49

是用安卓额外写了个app调用这些接口?还是用的什么脚本工具实现在原app里执行?形式没太看懂

rosewood 发表于 2023-9-11 06:25

学习了,感谢大佬{:1_893:}

zz1181 发表于 2023-9-11 07:29

好长啊,厉害

andyle 发表于 2023-9-11 07:58

感谢分享,做个记号

mokson 发表于 2023-9-11 08:07

之(一) ~ 之(四),能分享一下吗?

ccclxy 发表于 2023-9-11 08:13

不明觉厉,虽然看不太懂,但是觉得很厉害!

xyq166358 发表于 2023-9-11 08:33

不懂,但佩服

spawn_fly 发表于 2023-9-11 08:33

非常感谢!!!

如风闲云 发表于 2023-9-11 08:40

马克一下 业余时间学习一下

弑者 发表于 2023-9-11 08:41

支持分析教程
页: [1] 2 3 4
查看完整版本: 【散装破文】如何有效率的去除软件广告(五)