当前位置: 首页 > news >正文

《静态分析: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

http://www.cnnetsun.cn/news/138423.html

相关文章:

  • STM32定时器定时中断
  • 打破离散制造“内卷”:工业智能体(AI Agent)落地的五大核心原则
  • C语言 操作符 关系操作符 笔记
  • 2025年战略咨询在行业标准演进中的推动力
  • 【电商API接口】电商平台价格监控行业全景:数据驱动的定价革命
  • java计算机毕业设计蔬菜配送系统 生鲜直配平台的设计与实现 社区蔬菜一站式采购与配送管理系统
  • dubbo源码之一次RPC请求的生死之旅(基于Dubbo 2.7.8)
  • 基于SpringBoot+Vue的web城乡居民基本医疗信息管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 【完整源码+数据集+部署教程】手势与标志识别检测系统源码[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]
  • 03.统计学机器学习
  • [Poi2011]Lightning Conductor题解
  • 一文读懂大模型:收藏级教程,助你从入门到精通
  • Nginx云计算大数据——安装AND版本升级(普通升级+平滑升级+失败回滚)
  • GPT-5.2 实测数据流出:逻辑推理性能翻倍,大模型“幻觉”真的被终结了吗?
  • SQL SERVER——通过计划任务方式每月对配置数据、审计数据等进行备份
  • 前端——跨平台桌面应用开发实践
  • OpenAI 的反击!GPT-5.2 强行拉开代差,Gemini 3 和 Claude 4 还有机会吗?
  • 零售打工人加薪难?靠这张证,我在激烈竞争里站稳了脚跟
  • 基于springboot的多媒体素材库的开发与应用毕业论文+PPT(附源代码+演示视频)
  • 从离线语音到多模态智能体四博智联 AI 硬件整体解决方案全景解析
  • 我发现跨医院联合训练让诊断准确率飙升后来才知道是横向联邦学习在数据孤岛中的绝招
  • 性能压测工具:wrk
  • 论文引用标注工具排名2025:6大平台+自动规范推荐
  • Kotaemon AWS EC2部署实例:国际业务首选
  • 实在没货,简历(软件测试)咋写?
  • 网约车服务端线上流量巡检与测试验收技术
  • 公考日记7
  • 火电一次调频、自抗扰调频及群智能算法智能调频在MATLAB/Simulink中的应用
  • 科研实验室温湿度监控新范式:以太网 POE 技术全场景解决方案
  • RV1126 NO.57:ROCKX+RV1126人脸识别推流项目之读取人脸图片并把特征值保存到sqlite3数据库