本人是破解小白,没有经过系统的逆向学习,一般依据心情去解一些题目,经验不算很多,感谢论坛一些大佬的解题思路,我目前就做出了两道Windows初级题,Python那个初级题我还做了好久才调试出来,写一下解题思路供大家参考。
本文使用工具主要是IDA Pro和Olldbg以及x64dbg,Cheat Engine还有豆包AI结合分析。
第一题:【2026春节】解题领红包之二 {Windows 初级题}
直接拖入IDA先进行静态分析,Shift+F12搜索字符串如下;点击Enter the password按CTRL+X查找交叉引用。
然后程序逻辑就出现了,让豆包分析一下这段汇编语言是什么作用:
密码验证逻辑全解析
我把这段汇编代码拆解成4 个核心步骤,从简单到复杂逐一说明:
步骤 1:密码长度的硬性要求(最优先)
call strlen ; 计算输入密码的长度
cmp eax, 1Fh ; 比较长度是否等于 0x1F (十六进制)
jz short loc_4CD34F ; 长度相等才会继续验证,不等则直接失败
0x1F 转换成十进制是 31
- 结论:密码长度必须是 31 位,这就是提示里说的 "length is key" 的核心含义,长度不对直接被淘汰。
步骤 2:字符合法性校验(隐含规则)
call sub_4016D0
test al, al
jz loc_4CD415 ; al=0 代表校验失败,跳转到错误分支
sub_4016D0 这个函数是字符合法性检查(结合上下文的 35h ; '5' 等线索),大概率是要求:
- 输入的字符只能是数字(0-9)
- 不允许字母、符号、空格等其他字符
步骤 3:核心数值计算规则(密码内容验证)
这是最关键的计算逻辑,我把汇编翻译成伪代码,你一看就懂:
// 初始化
int total = 0;
int index = 1; // 从1开始计数
char* input = 你输入的31位数字字符串;
// 遍历每一个字符(直到字符串结束)
while (*input != '\0') {
// 1. 取当前字符的ASCII值(比如字符'5'的ASCII是0x35=53)
int char_ascii = (unsigned char)*input;
// 2. 乘以当前的索引(第1位乘1,第2位乘2...第31位乘31)
int temp = char_ascii * index;
// 3. 累加到总和里
total += temp;
// 4. 索引+1,指针指向下一个字符
index++;
input++;
}
// 最终校验:总和必须等于 0xAEA5
if (total == 0xAEA5) {
验证成功;
} else {
验证失败;
}
步骤 4:最终校验值
cmp [ebp+Str], 0AEA5h
jz loc_4CD450 ; 等于0xAEA5则跳转到成功分支
先不说分析的对不对,拿出OD来进行打开进程搜索字符串在enter the password那里下断点,结合豆包分析的这里就是长度验证。由于我随便输入的密码所以这个长度验证是不通过的。
让它跳走继续分析字符串比较长度完后发现这里有一个call,
于是步入进去看一下
发现这里竟然有个test估计就是判断密码的函数call了,步过以后动态调试分析后就得出了flag:52pojie!!!_2026_Happy_new_year!,
第四题:解题领红包之四 {Windows 初级题}
Hint: Decompile me if you can!打开题后发现有这个提示,可是我根据AI的提示Decompile好久都没有成功反编译出源代码,只是解包了一下文件,后来就放弃这个思路了,写完这篇文章我去学习一下有没有大佬通过Decompile的方式来获取的flag,我以前从来没有接触过python编写的题目,后来发现这个程序执行后会有两个进程,一个是运行后的主进程,动态调试的时候要附加那个主进程。我这道题用的x64dbg调试出来的正确答案,这道题我尝试了n种方式,得到了一些这个题的某些信息,这个题存的是密文值,要在它解密时获取正确flag,好像有个hashlib的函数在里面被调用了,我没有深入研究,只是大概知道要用动态调试解密。
这里有两个进程,选后边那个进程进行调试,搜索flag,发现果然存的是密文,我想解密的时候要访问,干脆下一个访问断点来取flag。
打开x64dbg,这里也要附加标题为空的进程,这个才是主进程
上边还是用ce搜索flag找到flag的内存地址在x64dbg中下访问断点,
输入密码比对,会断下,查看调用堆栈对会发现有几个对密码敏感的操作
按Ctrl+F9执行到返回,让调用堆栈满满出栈在关键的地方步过执行。
最后在Decode+198处能查看到明文密码,最终得出flag。52p0j!3#2026*H4ppy-N3w-Y34r@@@
以上两题可能有运气成分,能动态调试出,但是中级题还是很吃力,还是需要继续学习。下边分析一下番外题,还是用cheat engine
这个通过对简单模式发模糊搜索会得到一个初始值是2.3125,开局x=y都是2.3125,搜索这个值进行锁定,小猫就不会动了,然后就围住小猫即可
锁定的时候取一半锁定即可,都锁定会可能会崩溃,通关后会有flag。
本文到此结束,我的思路平平无奇,有能帮到大家最好,希望后续还有这种活动,还是会积极参加的,在这次活动中我掌握了一些新题目的解题思路。还是要跟论坛的各位大佬进行学习