CrackMe 破解能力测试等级3的代码定位及算法解析(辛主持)

本文主要探讨了CrackMe等级3的破解过程,包括如何通过反汇编技术定位关键代码,并对其中的算法进行了深入解析。通过实例分析,详细介绍了 Serial 23529807203 的产生机制。
摘要由CSDN通过智能技术生成
 最近很忙,但是忙里偷闲,把CrackMe 3 搞定了,代码定位是个难题,没了字符串和敏感函数,代码定位成了问题,然后有内存校验,于是无法爆破,没关系,从头来。
OLLYDBG强的没边,Windows是消息驱动的(不懂的同学请恶补Windows编程知识),我们就对WindowsAPI调用进行监视,消息触发中断,没错,就是那个确定按钮,当单击该按钮肯定要进行序列号的计算,于是就拿到那个按钮的句柄,下消息触发202断点,随便输入点什么之后再F9,发现进入了系统函数的领空,之后再给 .text下断点,再F9,注册代码肯定在这附近。
以下是核心算法代码,函数被我重命名并且注释
.text:0040168A                 call    ?UpdateData@CWnd@@QAEHH@Z ; CWnd::UpdateData(int)
.text:0040168F                 lea     ecx, [esi+74h]
.text:00401692                 call    ds:??B?$CSimpleStringT@D$00@ATL@@QBEPBDXZ ; ATL::CSimpleStringT<char,1>::operator char const *(void)
.text:00401698                 lea     edx, [esp+20h]
.text:0040169C                 lea     esp, [esp+0]
.text:004016A0
.text:004016A0 NameCopy:                               ; CODE XREF: .text:004016A8j
.text:004016A0                 mov     cl, [eax]       ; 拷贝Name字符串到ESP+20H
.text:004016A2                 inc     eax             ; 取Name字符串的字符ANSI值
.text:004016A3                 mov     [edx], cl       ; Name字符串值给EDX指向内存,ESP+20H处
.text:004016A5                 inc     edx             ; 指向下一个
.text:004016A6                 test    cl, cl          ; 检测是否是最后
.text:004016A8                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值