app攻防-如何x挂小y搜题

admin 2024年10月28日13:17:44评论15 views字数 2952阅读9分50秒阅读模式

🌟 ❤️

作者:yueji0j1anke

首发于公号:剑客古月的安全屋

字数:1562

阅读时间:    5min

声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。合法渗透,本文章内容纯属虚构,如遇巧合,纯属意外

目录

  • 前言

  • OCR

  • adb     

  • Frida

  • 总结

0x01 前言

app攻防-如何x挂小y搜题

最近小x搜题挺火,网上各种方法漫天飞,于是笔者进行了搜集复现,觉得蛮有意思,于是写下了这篇文章

0x02 方法1: OCR自动识别

严格意义上来说,这不算黑客形式的做题方式,不过最近也在搞图像识别的一些模型,就顺带用用封装好的模型库,扩展一下知识面(咳咳)

OCR是将光学图像转换为机器可读文本的过程,在这个过程中需要截取图片、预处理、文字区域定位、字符分割、特征识别和提取

在脚本中,比较难实现的部分为数据预处理部分,以及如何去获取到相关图像。

在相关设想中,预计采用截图配合OCR识别图像,并输入相关大小处理函数进行绘画

这里先测试对应的识别区域,测试如下

import cv2
import numpy as np
import pyautogui

# 获取屏幕截图
image = pyautogui.screenshot()
image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)

# 提取需要识别的区域,调整 Y 轴范围
roi = image[350:470, 700:1200] # 更新 ROI 的 Y 轴范围,从 850 到 970

# 在原图上绘制 ROI,矩形的 Y 坐标也需要更新
cv2.rectangle(image, (700, 350), (1200, 470), (0, 255, 0), 2) # 绘制绿色矩形

# 显示原图和 ROI
cv2.imshow("Original Image", image)
cv2.imshow("Region of Interest", roi)

cv2.waitKey(0) # 等待按键
cv2.destroyAllWindows() # 关闭所有窗口

app攻防-如何x挂小y搜题

关键图像预处理

roi_gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
       roi_contrast = cv2.convertScaleAbs(roi_gray, alpha=2.0, beta=0)  # 增强对比度
       roi_blur = cv2.GaussianBlur(roi_contrast, (5, 5), 0)
       _, roi_thresh = cv2.threshold(roi_blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

但这个方法太慢了,玩了20多把就被对面k爆了,怎么能是黑客所为呢

0x03 方法2: adb配合自动识别

这个方法是顺带探索一下adb模拟安卓手势实现,引出后面的Frida。此方法理论上提速不了太多

大概逻辑是 在安卓截图传过来web端通过裁剪识别图片,比较大小,最后用adb直接滑屏

这个代码量就少了许多

核心代码如下

    for i, crop_area in enumerate(crop_areas, start=1):
       cropped_image = process_image(screenshot_path, crop_area)
       cropped_image_path = f"screenshot{i}.png"
       cropped_image.save(cropped_image_path)
       cropped_images.append(cropped_image_path)

app攻防-如何x挂小y搜题

0x04 方法3: Frida

身为深耕网络安全的从事者们怎么会轻易放弃更容易的方式呢!

让我们来尝试安卓逆向吧!

先尝试找到路由,这里用的webview去找到对应网页

app攻防-如何x挂小y搜题

app攻防-如何x挂小y搜题

app攻防-如何x挂小y搜题

但相关路径在逆向文件中找不到关键词,于是抓包看路由

app攻防-如何x挂小y搜题

打开我们的模拟器,转出dex文件反编译

搜索关键路由,追踪对应堆栈

用模拟器配合jadx逆向了一下,找了半天找到了加密函数

app攻防-如何x挂小y搜题

为native层的c方法,那我们直接找其java层引用

app攻防-如何x挂小y搜题

Frida直接hook加密函数拦截,修改参数即可,比如将试题统一修改为一份答案,随后进行提交即可

那现在的关键就是需要找到解密后的参数

我最初的想法是找到参数后修改加密进行提交即可,但有个老哥直接修改了时间参数进行提交,实现了0s提交,这里我将改良过后的代码放于此处

script = '''
function Hookr2B(){
   var r2 = Java.use("com.fenbi.android.leo.utils.r2");

   Java.perform(function(){
       r2.b.overload("[B").implementation = function (data) {
           console.log("_____begin_____");
           var String= Java.use("java.lang.String");
           var data_ori = data;
           data = Bytes2HexString(data);
           send(data);

           var new_data;
           var 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();

           var result = this["b"](new_data_2);
           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) {
           tmp = (255 + num + 1).toString(16);
      } else {
           tmp = num.toString(16);
      }
       if (tmp.length == 1) {
           tmp = "0" + tmp;
      }
       str += tmp;
  }
   return str;
}


setImmediate(Hookr2B);

这里就不放视频了,截止到目前为止该方法已失效,在笔者落笔该文章前,抓包修改也已彻底失效。

0x05 总结

从OCR到最后的Frida,大概忙里偷闲用了三天总结吧。不得不说小x逆出来的dex文件是真的多。

代码地址放于此处

https://github.com/jiankeguyue/Quikely-Xiaoyuan

原文始发于微信公众号(剑客古月的安全屋):app攻防-如何x挂小y搜题

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日13:17:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   app攻防-如何x挂小y搜题https://cn-sec.com/archives/3321793.html

发表评论

匿名网友 填写信息