ssage[‘payload’] = message[‘payload’].replace(‘”packed_trust_id”: “xxxxxxxxxxx”‘, ‘”packed_trust_id”: “”‘)
message[‘payload’] = message[‘payload’].replace(‘”trust_id”: “”‘, ‘”trust_id”: “xxxxxxxxxxx”‘)
# 手機連接模擬器或真機
device = frida.get_device_manager().enumerate_devices()[-1]
# 打開應(yīng)用
session = device.attach(“com.example.app”)
# 加載 JavaScript 腳本
with open(‘script.js’, ‘r’, encoding=’utf-8′) as f:
script = session.create_script(f.read())
# 監(jiān)聽消息
script.on(“message”, on_message)
# 加載 JavaScript 腳本
script.load()
“`
2. 攔截網(wǎng)絡(luò)請求
我們可以通過一些中間件來攔截應(yīng)用內(nèi)的網(wǎng)絡(luò)請求,從而實現(xiàn)去除應(yīng)用內(nèi)的廣告,這種方法通用性強,但實現(xiàn)起來比較復(fù)雜,需要了解一些網(wǎng)絡(luò)協(xié)議和相關(guān)技術(shù),下面是 Python 中攔截 HTTP 請求的一個例子:
“`python
import mitmproxy.http
def request(flow: mitmproxy.http.HTTPFlow):
# 判斷該請求是否為廣告請求
if ‘https://ad.xx.com/api’ in flow.request.url:
# 如果是,則將響應(yīng)體修改為 JSON 格式的字符串 {“code”: 0}
flow.response.text = ‘{“code”: 0}’
def response(flow: mitmproxy.http.HTTPFlow):
# 判斷該響應(yīng)是否為廣告響應(yīng)
if ‘https://ad.xx.com/api’ in flow.request.APPurl:
# 如果是,則將響應(yīng)體修改為 JSON 格式的字符串 {“code”: 0}
flow.response.text = ‘{“code”: 0}’
“`
3. 修改系統(tǒng)文件
我們可以通過修改 Android 系統(tǒng)中的 hosts 文件來實現(xiàn)屏蔽廣告的效果,這種方法簡單易行,但需要獲取 ROOT 權(quán)限,下面是一個 Python 實現(xiàn) hosts 文件修改的腳本:
“`python
import os
# 添加廣告域名到 hosts 文件中
def append_hosts():
os.system(‘su’)
os.system(‘echo “127.0.0.1 ad.xx.com” >> /etc/hosts’)
# 刪除廣告域名記錄
def remove_hosts():
os.system(‘su’)
os.system(‘sed -i “/127\.0\.0\APP開發(fā).1 ad\.xx\.com$/d” /etc/hosts’)
“`
以上就是三種屏蔽啟動廣告的方法,不過這些方法都可能會影響到應(yīng)用的運行,尤其是修改系統(tǒng)文件的方法,需要慎重使用。此外,對于一些付費應(yīng)用,存在去除廣告的行為是不道德的,因為開發(fā)者只有通過廣告才能獲得收益,我們應(yīng)該尊重其付出的勞動成果。