大麥網搶票工具系列(一)

前言

《大麥網》都知道吧,就是那個被網友聲稱“大麥網你賣啥了?”票務平臺。近期有聽到朋友說《大麥網》的票很難搶,基本上都是說:“哎喲喂,被擠爆啦,請稍後重試!”,也不知道《大麥網》到底有沒有票!!!

言歸正傳,準備做個《大麥網》搶票的軟件,就是想證明下《大麥網》到底有沒有票(推廣公衆號)!!,做之前也從百度、Github裏面搜索過, Github裏面有幾個好用的Python搶票腳本,有興趣的可以去裏面搜索。此次做的搶票小工具是基於《大麥網》移動端接口的,直達《大麥網》服務器,沒有網頁元素,速度肯定棒。

這個系列的文章主要是偏教程方面,學習一些Hook、抓包、反編譯的知識。再者《大麥網》已經被阿里給收了,所以這是個阿里系的App,看完這個系統的文章對某寶、某豬、某貓App的逆向很有幫助。說了這麼多,先列出逆向時用到的工具軟件,以及主要用途:

  • Frida
  • Xposed
  • Apktool
  • Selenium
  • Root後的手機一臺

還有一些逆向過程中的難點:

  • Charles抓包
  • 生成Api簽名
  • 自動過人機校驗

大綱

爲了思路更加清晰,爲大家列出這個系列後面的一些文章相關內容:

  1. 基本工具使用、介紹
  2. 阿里網絡庫逆向分析、Charles抓包
  3. MTOP簽名參數分析、繞路
  4. 人機檢驗分析、繞路

Frida基本使用

使用Frida的目地是爲了hook應用關鍵方法,找到App的突破口如:日誌開關、ssl開關等關鍵方法或變量。Frida的安裝方式也非常簡單,只需要將frida-server上傳到手機裏面使用shell運行起來,然後就可以執行一些hook操作,篇幅有限就不一一講解了,只簡單介紹一下本系列文章中使用的一些命令,有興趣到查看具體使用文檔。

frida-server上傳到手機目錄:

$ adb root # might be required
$ adb push frida-server /data/local/tmp/ 
$ adb shell "chmod 755 /data/local/tmp/frida-server"
$ adb shell "/data/local/tmp/frida-server &"

查看系統運行進程:

$ frida-ps -U

打開需要hook的程序,並傳入hook腳本:

$ frida -U  -l src/index.js  -f cn.damai

這幾條命令下來,差不多就夠了,hook相關的點都在src/index.js裏面,後面再來講解需要hook的關鍵點。

Xposed基本使用

使用Xposed的目的是爲是數據簽名的,接過阿里系Api的都知道會有簽名這個步驟的。簽名算法就不去倒騰了,技術有限..., 但是可以繞過的麻,退而求其次。Xposed只需要會創建Module了了解幾個核心Api就可以啦。

引入Xposed依賴:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
  provided 'de.robv.android.xposed:api:82'
  provided 'de.robv.android.xposed:api:82:sources'
}

聲明你的模塊信息:

    <meta-data
        android:name="xposedmodule"
        android:value="true" />
    <meta-data
        android:name="xposeddescription"
        android:value="大麥網簽名" />
    <meta-data
        android:name="xposedminversion"
        android:value="53" />
        

實現模塊入口:

package com.xposed;

import de.robv.android.xposed.*;
import de.robv.android.xposed.callbacks.*;

public class HookToast implements IXposedHookLoadPackage
{
   @Override
   public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable
   {
      ....
   }
}

Selenium基本使用

使用Selenium主要是過人機校驗,Api調太多後端程序會檢測出是機器在訪問Api,所以爲了限制保護系統《大麥網》會彈出一個帶滑塊的網頁來辨別用戶身份,如果不處理就會限制訪問Api基本調用不了Api除非限制時間過了,才能正常訪問,引入Selenium就是模擬人爲行爲滑動完成人機校驗,告訴後端不是機器人在搶票。

添加Selenium依賴:

 <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
  </dependency>

設置WebDriver:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setExperimentalOption("excludeSwitches", Arrays.asList("enable-automation"));
chromeOptions.addArguments("--user-agent=" + String.format("Mozilla/5.0 App"));
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("--lang=zh-CN");

//            chromeOptions.setHeadless(true);
webDriver = new ChromeDriver(chromeOptions)  ;//new ChromeDriver(chromeOptions);

打開滑動網頁:


webDriver.get(httpUrl.toString());
new WebDriverWait(webDriver, 2).until(ExpectedConditions.textToBe(
        By.className("nc-lang-cnt"),
        "請按住滑塊,拖動到最右邊"
));

解鎖地址是動態的,後續再來說明地址的使用和操作。

總結

基本上使用Frida、Selenium、Xposed就能解決抓包、人機校驗、生成簽名這幾個關鍵問題了,後續再來講解具體的操作流程,以及逆向分析關鍵代碼。

最後歡迎大家關注我的公衆號,獲取最新《大麥網搶票工具》搶票工具的進展。

免責聲明:
本文章僅限用於學習和研究目的;不得將上述內容用於商業或者非法用途,否則,一切後果請讀者自負

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章