【逆向工程-新手向|LE手游助手 手工逆向分析:反调试机制与关键检测点解析】 此文章归类为:逆向工程。
LE 新版手游助手分析文档(QuickAssistant 2.0.1.1) 一、目标软件与研究背景 软件信息
本次分析 已取得原作者明确授权,仅用于学习、研究与技术交流,不涉及任何商业用途,也不会提供或传播可执行程序、补丁或破解成品。
研究目的
分析异常退出、蓝屏、反调试行为 理解用户态 (R3) 与内核态 (R0) 交互、驱动检测、反分析机制 对比原版 QtScrcpy / LE 助手,定位二次开发新增逻辑
项目概述 对一款商业化Android投屏工具(QuickAssistant 2.0.1.1)进行了完整的逆向工程分析,该软件集成了多层安全验证机制,包括时间授权、反调试、硬件指纹和驱动级保护。
软件展示:
分析之后: 无需登录正常使用所有功能
技术挑战 多层防护体系 :应用层、系统API层、内核驱动层协同防护动态检测机制 :运行时环境监控与异常行为检测复杂验证逻辑 :时间授权、硬件绑定、调试环境的多维验证反分析技术 :多种反调试、反逆向技术的组合应用关键技术分析 验证机制架构分析 识别并分析了基于Qt框架的时间授权验证系统 解析了用户态-内核态通信模型(DeviceIoControl/Nt API) 揭示了硬件指纹采集与验证的完整流程 安全防护技术研究 Windows NT Native API在安全防护中的应用(NtSetInformationThread等) 多线程环境下的实时监控与检测机制 异常处理链的干扰与保护技术 系统级交互分析 驱动通信协议与IOCTL控制码解析 进程间通信(管道/共享内存)的安全实现 系统服务调用的监控与拦截点分析 分析方法与工具链 静态分析 :IDA Pro二进制分析,PE结构解析动态调试 :x64dbg/Cheat Engine运行时分析系统监控 :Process Monitor/API Monitor系统调用跟踪技术成果 完整的安全架构图 :绘制了从应用层到驱动层的防护体系关键技术实现文档 :详细记录了各验证点的实现原理分析方法论总结 :形成了针对多层防护软件的分析流程
能力体现 逆向工程能力 :复杂商业软件的完整逆向分析系统安全理解 :Windows安全机制的深度掌握架构分析能力 :多层安全防护体系的分析与理解问题解决能力 :系统性分析方法的建立与应用技术栈应用 Windows系统编程(NT API、驱动通信) 二进制逆向分析(x86/x64汇编、PE格式) 调试技术(用户态/内核态调试) 安全机制(反调试、代码保护、验证体系)
二、初期现象总结(问题导向) 1️⃣ 调试异常与蓝屏 检测常用调试器模块 R3 ↔ R0 驱动交互 执行特权相关操作 → 系统崩溃 2️⃣ 程序行为异常 ntdll!NtTerminateProcesskernel32!ExitProcess三、静态分析(IDA Pro) 1️⃣ 导入表与关键 API DeviceIoControlNtSetInformationThreadNtCreateFileNtDeviceIoControlFileFindWindow2️⃣ 反调试 API / 字符串 反调试APINtSetInformationThread → ThreadHideFromDebugger 关键字符串示例:"noUsbDebugMode" API 检测: IsDebuggerPresentCheckRemoteDebuggerPresentNtQueryInformationProcess(ProcessDebugPort / ProcessDebugFlags / ProcessDebugObjectHandle)FindWindow("OLLYDBG")、WinDbgFrameClassCreateToolhelp32Snapshot → 枚举 x64dbg、IDA、CheatEngine 等GetThreadContext → Dr0–Dr3、Dr6、Dr7EXCEPTION_SINGLE_STEP内存不可执行(NX) 人为制造 0xC0000005 3️⃣ 驱动 / 设备交互线索 \\.\pipe\libwdi-installer\\.\pipe\crashpad_%lu_\\.\libusb0-%04ulibusb、USB 枚举、Crashpad 日志收集 自定义驱动或安装器存在 NtDeviceIoControlFile 调用: 四、运行时与线程分析 1️⃣ 用户态线程 ntdll!RtlUserThreadStartkernel32!BaseThreadInitThunkntdll!KiUserExceptionDispatcherEXCEPTION_SINGLE_STEPEXCEPTION_ACCESS_VIOLATIONNX 执行异常 2️⃣ Qt 生命周期 QApplication::exec()布局字符串:QLayout: Attempting to add QLayout "%ls" 五、动态行为分析(火绒剑观察) 驱动不存在 / 调试被发现 → 程序自杀 (ExitProcess) # WMIC可能收集的信息类型
WMIC_QUERIES = {
"bios": "wmic bios get SerialNumber", # BIOS序列号
"baseboard": "wmic baseboard get Product,SerialNumber", # 主板信息
"cpu": "wmic cpu get ProcessorId", # CPU ID
"diskdrive": "wmic diskdrive get SerialNumber", # 硬盘序列号
"os": "wmic os get SerialNumber", # Windows序列号
"nic": "wmic nic get MACAddress", # 网卡MAC
"computersystem": "wmic computersystem get UUID" # 系统UUID
}
# 这些信息组合生成硬件指纹,用于授权绑定 六、对比分析 Qt 主流程一致 新增反调逻辑 / WMIC / 驱动交互为二次开发新增 "This software is completely open source" → 行为不一致七、试用时间与卡密登录校验分析 1️⃣ 关键对象与字段 层次
对象 / 字段
用途
管理层
TrialManager
, trialTime
, endtime
存储试用状态、时间字段
判定层
UserController::overstepTrialTime
判断是否过期
结果层
"Account has expired"
, "Left trial time: %1 minutes"
, "Remaining trial time: {}"
UI / 日志显示 / 状态消费
2️⃣ 调试 / 修改建议 QDateTime::currentDateTime()QDateTime::currentSecsSinceEpoch()QElapsedTimerstd::chrono给这些函数下断 回溯调用栈 定位谁在读取“当前时间” 可直接修改 UserController::overstepTrialTime 返回值 尝试修改不同参数查看运行结果 此处很巧的是验证时间与登录状态耦合性很高,均在这个函数内;无需再进行单独分析是否登录 八、阶段性总结 反调试机制多层 API 检测、线程隐藏、异常干扰 驱动通信 + WMIC 环境指纹 非壳化,而是“堆量型反调试” 试用时间判断点 TrialManager → UserController::overstepTrialTime → UI/日志核心逻辑可通过修改返回值或拦截时间 API 控制 九、实战建议(逆向 / 调试) 断点策略 条件断点:overstepTrialTime() 返回值 / 试用时间字段 时间 API:QDateTime、std::chrono、QElapsedTimer 线程分析 确认线程 ID / 调用栈 断在后台线程也能捕获逻辑 返回值拦截 动态行为监控
更多 【逆向工程-新手向|LE手游助手 手工逆向分析:反调试机制与关键检测点解析】 相关视频教程: www.yxfzedu.com