摘要: 记录一下如何用 pywin32 加载 exe 的资源。 import win32api import win32con import os import subprocess def load_resource(filename): password = '' hModule = win32api. 阅读全文
posted @ 2025-12-12 21:36 矛盾空间 阅读(4) 评论(0) 推荐(0)
摘要: 先用 DIE 检查,是汇编写的 exe 程序 把中间的一大段数据转成数据,是 base64 编码。Shift + E 导出,把换行删掉 明显是 png 图片 stegsolve 查看图片,没有多余的数据。但是在 RGB 的 panel 0 上方明显和其他地方不一致,猜测 LSB 隐写 感觉开头像 D 阅读全文
posted @ 2025-12-02 02:09 矛盾空间 阅读(8) 评论(0) 推荐(0)
摘要: 在 C++ 标准 RTTI(dynamic_cast / typeid)普及之前,MFC就通过 DECLARE_DYNAMIC,IMPLEMENT_DYNAMIC 等宏实现了一套 RTTI。 CRuntimeClass 是核心部分,用于描述每个 class 信息。每个继承 CObject 的 cla 阅读全文
posted @ 2025-12-01 23:48 矛盾空间 阅读(7) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2025-10-30 01:37 矛盾空间 阅读(0) 评论(0) 推荐(0)
摘要: main 分析 main 函数。创建一个新线程,它的参数是主线程的句柄。主线程检查输入是否正确,如果错误执行 if 里面的内容,如果正确执行 sub_1400093B0()。 把字符串串算出来,方便理解程序。顺便把其他函数重命名一下 StartAddress StartAddress 里面前两个函数 阅读全文
posted @ 2025-10-25 14:35 矛盾空间 阅读(13) 评论(0) 推荐(0)
摘要: 用 DIE 打开,是一个 dll 用 ida 打开,简单分析一下,是一个记录键盘按键的程序。里面的每个虚拟键码都有一个函数返回字符串 那么 flag 在哪里呢?看到左边函数窗口里看到有一个 DialogFunc,按 X 查找交叉引用,最后找到按下 "m" 对应的函数 执行 sub_10001240 阅读全文
posted @ 2025-10-02 20:16 矛盾空间 阅读(31) 评论(0) 推荐(0)
摘要: 一个程序的入口不是 main(),而是 mainCRTStartup()。在 MSVC 编译器中,mainCRTStartup() 调用 __scrt_common_main(),由这个函数最终调用 main()。 由于使用了 __forceinline,__scrt_common_main 一般会 阅读全文
posted @ 2025-09-28 21:49 矛盾空间 阅读(16) 评论(0) 推荐(0)
摘要: 是无壳 Unity 程序,直接动调。 直接用 x64dbg 调试会有问题 (具体为什么我也不清楚),用 scyllahide 插件隐藏调试器即可。 随便输入一个flag,它会弹出一个错误提示窗口,我们可以从这个窗口入手。 创建一个窗口,一般会用 CreateWindowEx MessageBox 等 阅读全文
posted @ 2025-09-28 16:58 矛盾空间 阅读(11) 评论(0) 推荐(0)
摘要: 从 js 中看出,先把输入的 flag 存到 wasm 的内存为 0 的位置,然后调用 vault.wasm 导出的 unlock() 函数判断 用 wabt 把 wasm 转成 c 文件,再用 gcc 编译成二进制文件(仅编译,不链接),这样就可以拖到 ida 里分析了 wasm2c vault. 阅读全文
posted @ 2025-09-28 12:38 矛盾空间 阅读(34) 评论(0) 推荐(0)