抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

无壳,64位

什么是WER:

Windows 错误报告 (WER) 是一种灵活的基于事件的反馈基础结构,旨在收集有关Windows可以检测、向 Microsoft 报告信息以及为用户提供任何可用解决方案的硬件和软件问题的相关信息。

参考:关于 WER - Win32 apps | Microsoft Docs

其关键函数如下:

1
2
3
DWORD WINAPI ApplicationRecoveryCallback(
 PVOID pvParameter //上下文信息在调用‎‎注册应用程序恢复回拨‎‎函数以注册恢复时指定。‎
);

‎应用程序定义的回调函数,用于在应用程序遇到未处理的异常或无响应时保存数据和应用程序状态信息。

参考:ApplicationRecoveryCallback callback function (Windows) | Microsoft Docs

1
2
3
4
HRESULT WerReportHang(
[in] HWND hwndHungApp, //‎处理未响应的窗口。
[in, optional] PCWSTR pwzHungApplicationName //要在挂起的报告 UI 中显示的无响应应用程序的名称。
);

返回值‎:‎返回S_OK函数是否能够在失败时启动报告或错误代码。请注意,S_OK并不一定意味着“无响应”报告已成功完成,而只是表示已启动。‎

参考:WerReportHang function (errorrep.h) - Win32 apps | Microsoft Docs

主要运行逻辑为:

1.在初始化注册ApplicationRecoveryCallback函数

2.在OnExit调用WerReportHang触发异常

3.运用ApplicationRecoveryCallback进行真正的逻辑处理。

本题OnExit函数就在main函数里面,调用WerReportHang就会关闭调试器,调试不起来

解题:

搜索关键函数,在import表里面找到,放在了一个dll里面

然后交叉引用找到:

这里的sub_14000F3B0就是我们要找的关键函数

也可以通过MessageBox函数来找。

1
2
3
data = [  0x05, 0x03, 0x55, 0x05, 0x04, 0x07, 0x5E, 0x54, 0x05, 0x07, 0x50, 0x02, 0x03, 0x53, 0x5F, 0x50, 0x53, 0x50, 0x53, 0x05, 0x55, 0x00, 0x54, 0x55, 0x57, 0x03, 0x05, 0x02, 0x52, 0x50, 0x51, 0x53]
for i in range(len(data)):
print(chr(data[i] ^ 102), end = "")

异或写脚本得到flag

评论