news 2026/9/2 21:45:58

《静态分析:GUI程序的明码比较》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《静态分析:GUI程序的明码比较》

首先在detect it easy中进行查壳

可以得到以下信息

  • 文件大小:81.50 KiB

  • 文件类型:PE32(32位Windows可执行文件)

  • 操作系统兼容性:Windows XP(但可能兼容更高版本)

  • 程序类型:GUI程序(非控制台程序)

  • 编译器:Microsoft Visual C/C++(版本 19.00.23026)

  • 链接器:Microsoft Linker(版本 14.00.23026)

  • 工具链:Microsoft Visual Studio 2015

  • 编译模式:LTCG(链接时代码优化)/ C++

  • 语言:C++

  • 包含PDB调试信息:是(有绝对路径PDB)

  • 调试数据位置

    • 偏移:0x00010044

    • 大小:0x65(101字节)

  • PDB版本:7.0

这是一个32位 GUI 程序(Windows XP 兼容),所以入口是WinMain(不是main)。

然后进入IDA中查看

WinMain直接调用了DialogBoxParamW,说明这是一个基于对话框的 GUI 程序。关键逻辑在DialogFunc这个对话框过程函数里。

在 IDA 的函数列表(Functions window)里找DialogFunc,或者按Ctrl + F搜索DialogFunc

如果没找到这个名字,可以:

  • 双击WinMain里的DialogFunc(IDA 会跳转过去)

  • 或者在汇编视图里看DialogBoxParamW的第四个参数(通常是 push 一个地址)

程序要求两个输入:

  1. String→ 从控件1001获取(应该是邮箱输入框)

  2. v11→ 从控件1002获取(应该是注册码/flag 输入框)

📧 邮箱验证条件:

if ( strstr(String, "@") && strstr(String, ".") && strstr(String, ".")[1] && strstr(String, "@")[1] != 46 )

要求:

  • 包含@

  • 包含.

  • .后面至少还有一个字符(防止以点结尾)

  • @后面的字符不能是.(防止@.出现)

只要邮箱格式大致正确即可,比如a@b.c就满足。

Flag的验证逻辑

if ( strlen(v11) == 16
&& v11[0] == 67 // 'C'
&& v11[15] == 88 // 'X'
&& v11[1] == 90 // 'Z'
&& v11[14] == 65 // 'A'
&& v11[2] == 57 // '9'
&& v11[13] == 98 // 'b'
&& v11[3] == 100 // 'd'
&& v11[12] == 55 // '7'
&& v11[4] == 109 // 'm'
&& v11[11] == 71 // 'G'
&& v11[5] == 113 // 'q'
&& v11[10] == 57 // '9'
&& v11[6] == 52 // '4'
&& v11[9] == 103 // 'g'
&& v11[7] == 99 // 'c'
&& v11[8] == 56 ) // '8'

当输入:

  • 邮箱:任意有效邮箱(如test@test.com

  • 注册码:CZ9dmq4c8g9G7bAX

然后就可以确定flag

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 12:58:06

Vue指令(4):v-model

v-model 作用 给表单元素使用,实现双向数据绑定,可以快速获取和设置表单元素内容 使用场景分析 上图第一张图为视图,第二张图为数据。两者实现双向数据绑定 (1)数据变化时,视图自动更新 (2…

作者头像 李华
网站建设 2026/9/1 3:34:42

【Halcon-2D测量】add_metrology_object_ellipse_measure 函数功能(用于向2D计量模型中添加椭圆/椭圆弧类型的计量对象)

HALCON算子 add_metrology_object_ellipse_measure 全解析 一、算子核心定位 add_metrology_object_ellipse_measure 是HALCON 2D Metrology(二维计量)模块的核心算子,核心功能是向2D计量模型中添加椭圆/椭圆弧类型的计量对象,并预先生成垂直于椭圆边界的矩形测量区域,同…

作者头像 李华
网站建设 2026/9/2 2:12:07

MySQL 进阶实验:数据库与数据表管理完全指南

继上一篇 MySQL 入门实验后,这一次我们聚焦数据库和数据表的核心管理操作。无论是数据库的创建与删除,还是数据表的结构设计、修改与维护,都是数据库开发中的高频基础技能。本文将通过实验实操,详细拆解 MySQL 中数据库与数据表的…

作者头像 李华
网站建设 2026/8/31 18:15:36

MySQL 视图实战:简化查询与数据安全管控指南

在 MySQL 数据库中,视图是基于查询结果构建的虚拟表 —— 它不存储实际数据,仅保存查询逻辑,却能大幅简化复杂查询、控制数据访问权限。无论是多表关联查询的简化,还是敏感数据的隐藏,视图都能发挥重要作用。本文结合实…

作者头像 李华
网站建设 2026/9/1 14:24:34

冥想第一千七百三十六天(1736)

1.周三,周四来补日记,今天晚上跑步40分钟,项目上特别的忙,最近这一阵子项目都忙的连口水都没时间喝。 2.感谢父母,感谢朋友,感谢家人,感谢不断进步的自己。

作者头像 李华