小猿口算作弊

“”"
使用Frida对小猿口算进行hook,当PK结束时,获取上传回服务器的包,并且修改完成时间
鸣谢原作者:GitHub|Hawcett
仓库:https://github.com/Hawcett/XiaoYuanKouSuan_Frida_hook/
源码:https://github.com/Hawcett/XiaoYuanKouSuan_Frida_hook/blob/main/xyks.py
使用说明:

  1. 预先工作:
    1.1 安装MuMu模拟器/Python
    1.2 配置ADB,打开MuMu模拟器的Root权限
    1.3 安装Python库:pip install frida frida-ps
    1.3 安装安卓端的frida-server,在https://github.com/frida/frida/releases下载,使用ADB安装到/data/local/tmp/
    sh adb connect <YOUR_DEVICE_IP>:<YOUR_DEVICE_PORT> adb root adb push /path/to/frida-server /data/local/tmp/ adb shell su chmod 777 /data/local/tmp/frida-server
  2. 使用
    2.1 启动frida-server
    sh adb connect <YOUR_DEVICE_IP> <YOUR_DEVICE_PORT> adb root adb shell su ./data/local/tmp/frida-server
    2.2 修改xyks.pyTIME_MS值,要多少自己改,单位:毫秒
    2.3 先启动小猿口算,运行本脚本,另开一个命令行窗口,执行:
    sh python xyks.py
    2.4 在小猿口算PK中正常做题,完成后回,秒数会被修改
    “”"

TIME_MS = 1000 # 需要多少时间自己改

import json
import frida
import binascii

sc = ‘’’
function Hookr2B(){
Java.perform(function(){
let r2 = Java.use(“com.fenbi.android.leo.utils.r2”);
console.log(“XYKS r2 函数已钩住”)
r2.b.overload(“[B”).implementation = function (data) {
var String= Java.use(“java.lang.String”);
let data_ori = data
data = Bytes2HexString(data)
send(data)
let new_data
let new_data_2
var instance
recv(function (received_json_object) {
new_data = received_json_object.my_data
instance = String.$new(new_data);
new_data_2 = instance.getBytes()
}).wait();
let result = this"b";
console.log(‘参数劫持完成,即将Return’)
return result;
};
});
}
function Bytes2HexString(arrBytes) {
var str = “”;
for (var i = 0; i < arrBytes.length; i++) {
var tmp;
var num = arrBytes[i];
if (num < 0) {
//此处填坑,当byte因为符合位导致数值为负时候,需要对数据进行处理
tmp = (255 + num + 1).toString(16);
} else {
tmp = num.toString(16);
}
if (tmp.length == 1) {
tmp = “0” + tmp;
}
str += tmp;
}
return str;
}
setImmediate(Hookr2B);
‘’’

def str_to_hex_binascii(input_str):
# 将字符串编码为字节
byte_data = input_str.encode(‘utf-8’)
# 转换为十六进制
hex_output = binascii.hexlify(byte_data)
return hex_output.decode(‘utf-8’)

def my_message_handler(message, payload):
print(payload)
bytes_obj = bytes.fromhex(message[‘payload’])
string = bytes_obj.decode(‘utf-8’)
json_data = json.loads(string)
print(‘原始花费时间:’, json_data[‘costTime’])
json_data[‘costTime’] = TIME_MS
print(‘现在花费时间:’, json_data[‘costTime’])
data = json.dumps(json_data)

script.post({'type': 'send', 'my_data': data})

if name == ‘main’:
manager = frida.get_device_manager()
device = manager.get_usb_device()
session = device.attach(‘小猿口算’)
script = session.create_script(sc)
script.on(“message”, my_message_handler)
script.load()
input() # 保持程序运行

来源于https://github.com/Hawcett/XiaoYuanKouSuan_Frida_hook

口算自动答题脚本通常是指利用自动化工具,如Python、Selenium等编写的一种程序,用于模拟用户操作来完成小搜题这类在线学习平台上口算题目的自动作答。这种脚本的基本结构可能会包括以下几个步骤: 1. **环境准备**:安装必要的库,例如selenium(用于浏览器控制)、requests(处理HTTP请求)和BeautifulSoup(解析HTML内容)。 ```python from selenium import webdriver import requests from bs4 import BeautifulSoup ``` 2. **启动浏览器**:通过webdriver启动一个浏览器实例,比如Chrome或Firefox。 ```python driver = webdriver.Chrome() driver.get("http://example.com/xiaoyuankousuan") ``` 3. **定位元素**:找到题目输入框、选择按钮或提交按钮等关键元素。 ```python input_field = driver.find_element_by_id("question_input") submit_button = driver.find_element_by_id("submit") ``` 4. **识别题目**:如果页面允许,通过屏幕截图或 OCR 技术识别题目内容。 5. **计算答案**:根据识别的题目,编写算法计算答案。 6. **填充答案**:将计算出的答案填入到答题区域。 ```python input_field.send_keys(answer) ``` 7. **提交答案**:点击提交按钮。 8. **循环处理**:对于连续的题目,重复上述步骤直到所有题目完成。 注意:编写这样的脚本需要遵守网站的使用协议,并尊重版权和教育公平原则,不应用于作弊或不当用途。同时,由于网站的安全策略可能会变化,这个脚本需要定期更新以适应新的网页布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值