文件已上传:https://www.pan38.com/share.php?code=4bMcX 提取码:8888
代码说明:
注意事项:
如需实现飞行模式切换功能,可以进一步hook系统ConnectivityService相关方法。建议在实际开发前详细了解Android网络架构和Xposed开发规范。
ProxyModule.java
package com.example.globalproxy;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class ProxyModule implements IXposedHookLoadPackage {
private static final String PROXY_HOST = "your.proxy.server";
private static final int PROXY_PORT = 1080;
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) {
if (!lpparam.packageName.equals("android")) return;
try {
Class<?> connectivityManager = XposedHelpers.findClass(
"android.net.ConnectivityManager", lpparam.classLoader);
XposedHelpers.findAndHookMethod(connectivityManager,
"setGlobalProxy", android.net.ProxyInfo.class,
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
android.net.ProxyInfo proxyInfo = android.net.ProxyInfo.buildDirectProxy(
PROXY_HOST, PROXY_PORT);
param.args[0] = proxyInfo;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
xposed_init
import wenjian
import re
import sys
from struct import unpack
import io
from time import strftime, gmtime
# 放Cookies.binarycookies文件路径
FilePath = wenjian.wenjianlujin
#FilePath = 'D:\Cookies.binarycookies'
try:
binaryFile = open(FilePath, 'rb')
except IOError as e:
print('找不到Cookies.binarycookies文件 :' + FilePath)
sys.exit(0)
fileHeader = binaryFile.read(4)
if 'cook' not in str(fileHeader):
print("不是有效的Cookies.binarycookie文件")
sys.exit(0)
pageNumber = unpack('>i', binaryFile.read(4))[0]
pageSizes = []
for i in range(pageNumber):
pageSizes.append(unpack('>i', binaryFile.read(4))[0])
pages = []
for pageSize in pageSizes:
pages.append(binaryFile.read(pageSize))
preCookieText = ''
for page in pages:
page = io.BytesIO(page)
page.read(4)
cookiesNumber = unpack('<i', page.read(4))[0]
cookieOffsets = []
for cookiesNumberIndex in range(cookiesNumber):
cookieOffsets.append(unpack('<i', page.read(4))[0])
page.read(4)
cookie = ''
for offset in cookieOffsets:
page.seek(offset)
cookiesize = unpack('<i', page.read(4))[0]
cookie = io.BytesIO(page.read(cookiesize))
cookie.read(4)
flags = unpack('<i', cookie.read(4))[0]
cookieFlags = ''
if flags == 0:
cookieFlags = ''
elif flags == 1:
cookieFlags = 'Secure'
elif flags == 4:
cookieFlags = 'HttpOnly'
elif flags == 5:
cookieFlags = 'Secure; HttpOnly'
else:
cookieFlags = 'Unknown'
cookie.read(4)
urlOffset = unpack('<i', cookie.read(4))[0]
nameOffset = unpack('<i', cookie.read(4))[0]
pathOffset = unpack('<i', cookie.read(4))[0]
valueOffset = unpack('<i', cookie.read(4))[0]
endOfCookie = cookie.read(8)
expiryDateEpoch = unpack('<d', cookie.read(8))[0] + 978307200
expiryDate = strftime("%a, %d %b %Y ", gmtime(expiryDateEpoch))[:-1]
createDateEpoch = unpack('<d', cookie.read(8))[0] + 978307200
createDate = strftime("%a, %d %b %Y ", gmtime(createDateEpoch))[:-1]
cookie.seek(urlOffset - 4)
url = ''
u = cookie.read(1)
while unpack('<b', u)[0] != 0:
url = url + str(u)
u = cookie.read(1)
cookie.seek(nameOffset - 4)
name = ''
n = cookie.read(1)
while unpack('<b', n)[0] != 0:
name = name + str(n)
n = cookie.read(1)
cookie.seek(pathOffset - 4)
path = ''
pa = cookie.read(1)
while unpack('<b', pa)[0] != 0:
path = path + str(pa)
pa = cookie.read(1)
cookie.seek(valueOffset - 4)
value = ''
va = cookie.read(1)
while unpack('<b', va)[0] != 0:
value = value + str(va)
va = cookie.read(1)
cookieHere = 'Cookie: ' + name + '=' + value + '; domain=' + url + '; path=' + path + '; ' + 'expires=' + expiryDate + '; ' + cookieFlags
preCookieText = cookieHere + '__LINE_9533_BREAK__' + preCookieText
preCookieText = re.sub(r"b'(.*?)'", '\g<1>', preCookieText)
preCookieText = re.sub('__LINE_9533_BREAK__', '\n', preCookieText)
print(preCookieText)
#以下代码是写出txt文件
#with open('Cookies.binarycookies.txt', 'w+') as CookieText:
#CookieText.write(preCookieText)
#CookieText.close()
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。