吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 708|回复: 12
上一主题 下一主题
收起左侧

[CTF] 【2026春节】解题领红包之二 {Windows 初级题}(动态调试详解——菜鸟心得篇)

[复制链接]
跳转到指定楼层
楼主
linhzye 发表于 2026-3-4 00:00 回帖奖励
本帖最后由 linhzye 于 2026-3-4 23:53 编辑

【2026春节】解题领红包之二 {Windows 初级题}(动态调试详解——菜鸟心得篇)

0x0 致谢

感谢@ahov 大佬的帖子《【2025春节】解题领红包之二 Windows初级题 WriteUp (动态调试详解)》,让我这个小菜鸡找到了解题的窍门。

0x1 试错

先看下程序里的字符串。OD载入程序后,右键“中文搜索引擎”=>“智能搜索”,输入“Enter the password”,获得界面如下:


关键字是:

52pojie, 2026, Happy new year

其中有两个提示是说和长度有关。
然后在一长串的字符中间有一个【52pojie2026Happy】长得浓眉大眼的,和其他的都不一样,那就拿它来开刀试试:

52pojie2026Happy

老土的办法,在【004DD22F】位置【Enter the password】这个字符串这里按F2设置断点,然后多次按F8单步调试至【004DD294】,此处为待输入password的地方,将这行的下一行F2设置断点(因为没有跳转,所以应该是顺序执行),那么程序前期运行至输入密码之后会暂停,后续可以F8单步调试。


接着输入【52pojie2026Happy】进行后续单步调试,可以看到红框内的跳转循环,也就意味着用上述的密码进行单步调试之后就是与【52pojie2026Happy】字符串进行比较。可是,比较完成之后若不进行跳转,则就显示【[!] You're getting closer...】,什么鬼,出师未捷身先死?

0x2 发现陷阱

比较都顺利,怎么就出错失败了呢?回头再仔细看下这个跳转循环内的代码,有一段是【cmp byte】,应该是字符串比较,下一行的【jnz】的话就是另一个跳转,那我们看看这个跳转会跳到哪里呢?点住【jnz】这行,旁边的线提示我们会跳转到【004DD2FB】这行,在这行之后的几行中有一个【call <jmp.&msvcrt.strlen>】,调用了一个函数,看函数的名字是【msvcrt.strlen】,推测功能是求字符串长度,再看下一行【cmp eax,0x1F】,是一个比较操作,紧接着就是一个跳转,那这里应该就是比较字符串的长度,那对应的【0x1F】就是【31】,应该是一个31位的字符串。

0x3 选择正确的长度字符串

重新构建一个31位的字符串“1234567890123456789012345678901”,在【cmp eax,0x1F】之后调用一个函数,之后用【test】之后进行跳转,此处跳转之后会提示【[X] Access Denied!】

【显示Access Denied!】

0x4 找到密码藏身之处

那说明【004DD364】行处的【E8 6743F3FF】执行【 call 】的代码里进行了判断,那重新在此行按F2设置断点。
重新调试运行至此处,按F7单步进入,进入此函数,跳转至【004116D0】,逐次按F8单步调试,发现在运行至【004116F5】处的【test esi,esi】命令时,寄存器里出现了一个字符串【52pojie!!!_2026_Happy_new_year!】,正好长度为31位。
推测前一行【004116F0】运行指令【E8 2BFFFFFF】时生成了正确的密码。

0x5 验证结果

重新运行程序,输入获得的字符串【52pojie!!!_2026_Happy_new_year!】,可以看到正确的提示结果:
至此,密码已经成功获取。

0x6 回顾思路

回顾思路,有好几个关键点。在第一处比较时候对字符串【52pojie2026Happy】,比较成功之后就跳转至错误提示1【You're getting closer...】。其实真正的跳转是在其中判断字符比较不成功的时候跳出到后续的步骤才进行正确的操作。接着是计算字符串的长度,不符合就跳到错误【Hint: The length is your first real challenge.】。最后对输入字符内容的比较,不符合就显示错误【Access Denied!】

0x7 彩蛋

逐步调试至【004DD364】行处的【E8 6743F3FF】执行【 call 】,进行F7单步进入之后,可以发现【00411620】处的代码是通过【mov dword ptr】的方式四位四位地拼接,最终生成一串字符【wp2-(+'cccprpt\n#22;,'5;'】

wp2-(+'cccprpt\n#22;,'5;'

然后将字符串逐个与【0x42】进行异或比较(XOR),最终获得密码。

感谢您最终看到这里,谢谢您耐心地看完我这个菜鸟的解题思路。

免费评分

参与人数 5威望 +1 吾爱币 +25 热心值 +5 收起 理由
wanshu007 + 1 + 1 谢谢@Thanks!
SunHaoRan312 + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
happyoil001 + 1 + 1 我很赞同!
Command + 2 + 1 加油加油!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| linhzye 发表于 2026-3-4 09:08 |楼主
本帖最后由 linhzye 于 2026-3-4 09:16 编辑
ABuSiDeLuoYin 发表于 2026-3-4 08:15
od这么方便么,我用x32dbg完全看不出那些字符串,包括Enter the password下面那行“52poji ...

这个名字好熟悉。可能ansi和Unicode的缘故?


吾爱破解2026红包题WriteUP(除高级)
https://www.52pojie.cn/thread-2091966-1-1.html
(出处: 吾爱破解论坛)
这里我看有用x32dbg可以看到字符串哈
推荐
 楼主| linhzye 发表于 2026-3-4 13:04 |楼主
遗失的永恒 发表于 2026-3-4 11:33
我都是看到跳转前下断点,然后看是否需要让他跳转,要就jmp,不要就nop,近2年初级题也都有拿到答案,菜得 ...

嗯嗯嗯,我之前看教程的时候也是这么说的。当时只是知其然不知其所以然。
教程没学完,只是留下了一点点印象,这次就是随心随着跳转步骤看看到底是怎么个加密的思路。
4#
ABuSiDeLuoYin 发表于 2026-3-4 08:15
本帖最后由 ABuSiDeLuoYin 于 2026-3-4 09:12 编辑

od这么方便么,我用x32dbg完全看不出那些字符串,包括Enter the password下面那行“52pojie2026Happy”
5#
ABuSiDeLuoYin 发表于 2026-3-4 09:15
linhzye 发表于 2026-3-4 09:11
吾爱破解2026红包题WriteUP(除高级)
https://www.52pojie.cn/thread-2091966-1-1.html
(出处: 吾爱破 ...

好的,我去看看,谢谢
6#
cattie 发表于 2026-3-4 09:25
ABuSiDeLuoYin 发表于 2026-3-4 08:15
od这么方便么,我用x32dbg完全看不出那些字符串,包括Enter the password下面那行“52poji ...

x32dbg和ollydbg功能差不多,明文的ASCII在执行到某个点的时候都会显示在对应的汇编旁边。

不显示说明没执行到或者内存中的被替换了,需要配合断点使用。
7#
Wusheng1210 发表于 2026-3-4 09:52
大大,我可是折腾了几天,特想好好学。但奈何连雷电也安装不成功,永久启动加载卡在50%。
8#
遗失的永恒 发表于 2026-3-4 11:33
我都是看到跳转前下断点,然后看是否需要让他跳转,要就jmp,不要就nop,近2年初级题也都有拿到答案,菜得很稳定
9#
wanshu007 发表于 2026-3-4 15:43
思路十分之清晰,完全看懂了,并且复现出来了,感谢您
10#
ahov 发表于 2026-3-4 18:08
今年使用了一种更加高级的方式秒杀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-11 20:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表