一次爆破/追码分析

①先看软件怎么用🤥

②拖OD反汇编下断找关键点

の先瞄一眼是啥写的 (DEV放心了😀)

🤔Ctrl+N看看有没有什么关键函数

GetDlgItem是用来获取子句柄

GetDlgItemText是C++中的函数,调用这个函数以获得与对话框中的控件相关的标题或文本。GetDlgItemText成员函数将文本拷贝到lpStr指向的位置并返回拷贝的字节的数目

然后在这下断点调试一下

在系统领空被断下来Alt+F9回到程序领空

有一行神秘的字符串,经过测试不是正确的注册码🙄

③爆破💥

继续往下单步跟踪,直到看到MessageBoxA,这里应该就是判断的重点,通过修改寄存器强行跳转

果然

④追码😇

按照平常的写验证的思路应该是获取字符串之后应该做一系列处理然后判断输入的 字符串 与 真正的注册码

是否相同👀 所以这些区域的代码就相对比较重要所以句句分析

🤤分析关键代码

通过分析主要发现是

0040130A —> 00401320 是将神秘(疑似真正的注册码)字符串 从一个地址移动到另一个地址(堆栈地址中)

memset 是在申请内存

strlen 获取 用户输入的字符串长度

重点分析地址😛

00401340 --> 0040138C 这个循环比较重要

00401340 --> 00401359 是对用户输入 字符串的长度处理

00401360 --> 00401378 通过对用户 输入的字符串 减去 14(十六进制) 与神秘字符串进行对比

到此可以得知正确注册码 就是神秘字符串的十六进制 加上 14(十六进制)

测试最后结果✌️

本文标题:一次爆破/追码分析

文章作者:IceFeng

发布时间:2019年10月03日 - 19:54:22

最后更新:2019年10月05日 - 22:34:20

原始链接:https://www.icefeng.cc/2019/Crack_1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束 ------
0%