海天一色001 发表于 2020-8-16 16:14

160个Crackme之045学习笔记

本帖最后由 海天一色001 于 2020-8-16 16:24 编辑

第45个CM程序,打开Dope2112.2.exe,点击Check按钮,弹出错误提示信息框;点击Info按钮,弹出About信息框。
      
第一步、查壳:

Delphi程序,无壳。
第二步、爆破:
几个专用的Delphi反编译工具无法正常加载,直接用OD载入:

和上一个程序一样,一大堆的call,不知道有什么用。
再用智能搜索字符串试一试,没找到错误提示框的内容;试试PE Explorer:

利用PE Explorer自带的反汇编器很轻松地找到了按钮事件及其地址,记下这个00421DC8。
回到OD中,Ctrl+G键来到00421DC8处下断,F9运行程序,输入Name/Serial=“52pojie/1234567890”,点击Check按钮,程序断下:
F8单步慢慢向下,注意信息栏、寄存器窗口和堆栈窗口的信息:

call 00411880应该是得到文本编辑框的内容,并存入栈中,将字符串长度存入eax中,
所以在00421DF2处的调用call 00411880后得到假码入栈中,此时eax=0xA;
在00421E00处调用call 00411880后得到Name入栈,此时eax=0x7;
call 00403364应该是单纯地得到文本长度,在00421E05处得到了Name字符串地址指针作为参数,在00421E08处调用这个call得到Name字符串的长度;

再向下,猜测00421E0D处判断Name字符串应不少于4个字符,少于则跳到00421E6B处失败,不少于则跳到00421E1E处得到Name字符串,
00421E21处再调用0043364处的call得到文本长度;
继续向下,如果Name为空,则跳过注册算法:
从00421E2A至00421E43处是具体的注册算法:

运行00421E43处的call 00405330后,将上面计算出的数值转换成10进制数值形式,压入栈中,此时可以看到栈窗口中情况:

严重怀疑这个数值就是真正的注册码,先试一试,弹出正确提示。

本想先爆破的,没想到先把注册码找到了。继续单步向下,

00421E48处得到真码,00421E4B处得到假码,
00421E4E处的call 00403474是关键call,作用是用来比较真假码;
00421E53处的跳是关键跳,如果关键call返回结果为零,继续向下弹出正确信息,如果不为零,则跳到错误信息框。
所以要爆破很简单了,将00421E53处指令nop掉,保存为Dope2112.2_nop.exe后打开,随意输入Name/Serial,点击Check按钮均弹出正确信息框来,说明爆破成功。
第三步、追码:
爆破时已知从00421E2A至00421E43处是具体的注册算法:

Name字符串长度加一作为循环次数,
分别取Name字符串前一位(通常为0)及Name字符串中每一位字符的ASC值,
逻辑左移9位(相当于乘以0x200),
累加后的值再加上0x37存入ebx中,
最后转换成10进制形式,即Name对应的注册码。
注册算法(VB)
Option Explicit
Private Sub Command1_Click()
Dim Name As String
Dim i As Integer
Dim Num, Serial As Double
    Name = Text1.Text
    If Len(Trim(Name)) < 4 Then
       MsgBox ("Name必须超过4位,如不符合要求,默认Name为“52pojie”,Serial为“326711”!")
       Text1.Text = "52pojie"
       Text2.Text = "326711"
       Exit Sub
    End If
    Serial = 55
    For i = 1 To Len(Name)
      Num = Asc(Mid(Name, i, 1))
      Num = Num * 512
      Serial = Serial + Num
    Next i
    Text2.Text = Serial
End Sub
附件,含CM原程序、爆破后的程序、注册机、OD的调试文件等。
百度链接:https://pan.baidu.com/s/1NEpyyUefbKcoJvMGG_9OmQ
提取码:p8dk。

skypojie51 发表于 2020-8-16 19:46

感谢分享

SharkCan 发表于 2020-8-16 23:44

谢谢楼主分享,先下载收藏了

lr957 发表于 2020-8-17 10:42

技术贴,不错,非常感谢!!!!

19183311119 发表于 2020-8-17 13:34

谢谢楼主分享

myapan 发表于 2020-8-17 13:48

不错的技术贴,谢谢分享。

byl20com 发表于 2020-8-18 10:15

很不错的的软件,值得分享

sun12345 发表于 2020-8-18 13:00

天天都没有你的段子好

__不说 发表于 2020-8-19 09:08

感谢分享!已经开始做前边的实验了

qcz00622 发表于 2020-8-19 10:13

谢谢大佬详细的解说步骤,比之前那个链接写的好!
页: [1] 2
查看完整版本: 160个Crackme之045学习笔记