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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3461|回复: 30
收起左侧

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

  [复制链接]
低调(d-iao) 发表于 2023-9-11 03:19
本帖最后由 低调(d-iao) 于 2023-9-11 15:46 编辑


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


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

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

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

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

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

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

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

Shell_20230911-025300-273.png

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

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

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

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

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

     好了 开始讲解课题

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

Shell_20230911-025303-721.png

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

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

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

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

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

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

Shell_20230911-025301-629.png
Shell_20230911-025302-726.png

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

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

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

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

      以下是所需的https请求和响应
     
验证码:
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": "成功。"
}



登陆:
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"
}


任务列表:
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
    }
  ]
}



任务奖励:
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. 以此类推的执行完十次后就将当天的年月日作为定时,如果当天时间等于记录的时间或小于就不再执行,如果大于则开始执行任务。

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

Screenshot_2023-09-10-21-46-24-03_3f723663264a1cb4e1acb2a48fad315c.jpg
      

免费评分

参与人数 5吾爱币 +6 热心值 +4 收起 理由
云的彼岸918 + 2 + 1 感谢低调大佬耐心讲解!
random1 + 1 + 1 谢谢@Thanks!
雨落惊鸿, + 1 我很赞同!
debug_cat + 1 + 1 用心讨论,共获提升!
为之奈何? + 1 + 1 我很赞同!

查看全部评分

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

pdcba 发表于 2023-9-11 08:46
请问大佬 前三章可以发在52pj吗     mt论坛没有邀请码不能注册,看不到详细文章。谢谢!
ericzhao666 发表于 2023-11-16 14:49
是用安卓额外写了个app调用这些接口?还是用的什么脚本工具实现在原app里执行?形式没太看懂
rosewood 发表于 2023-9-11 06:25
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
支持分析教程
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-5-2 02:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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