您的位置:首页精文荟萃破解文章 → 一个CrackMe的破解以及注册机的制作

一个CrackMe的破解以及注册机的制作

时间:2004/10/15 0:57:00来源:本站整理作者:蓝点我要评论(0)

  自从研究CCG的CrackMe之后 便开始对CrackMe这个东西很感兴趣,所以跑到DDXia前辈的主页上逛了一圈准备借鉴
一下别人的优秀思想,完善一下自己正在酝酿中的CrackMe,太难的破不了,太简单的又没有意思,找了一个中等难度的东西Down了下来,回来一看,正好适合写偏教程给初学者讲讲 ^_^ 说不定以后FCG的考试也要用CrackMe了呢

这个东西的注册方法很普遍 就是Name/SN的格式 先进入注册窗口 输入姓名:NYDoll 注册码:38383838 运行TRW下断点BPX HMEMCPY 然后回到程序点击注册按钮,被TRW栏下,清除断点BC * 输入PMODULE到程序领空 然后要按一阵F10之后来到这里:

:004479A6 837DF400                cmp dword ptr [ebp-0C], 00000000
:004479AA 0F8428020000            je 00447BD8
:004479B0 8BB338030000            mov esi, dword ptr [ebx+00000338]
:004479B6 807E0500                cmp byte ptr [esi+05], 00
:004479BA 0F8420010000            je 00447AE0

//省略一部分代码

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004479BA(C)
|
:00447AE0 33F6                    xor esi, esi
:00447AE2 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447AE5 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447AEB E868BDFDFF              call 00423858
:00447AF0 8B45F4                  mov eax, dword ptr [ebp-0C]
:00447AF3 E83CBFFBFF              call 00403A34 
:00447AF8 85C0                    test eax, eax
:00447AFA 7E4B                    jle 00447B47
:00447AFC 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447AFF 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447B05 E84EBDFDFF              call 00423858
:00447B0A 8B45F4                  mov eax, dword ptr [ebp-0C] //载入用户名
:00447B0D E822BFFBFF              call 00403A34
:00447B12 8BF8                    mov edi, eax //得到用户名的字符数
:00447B14 85FF                    test edi, edi //比较用户名是否为空
:00447B16 7C2F                    jl 00447B47 //跳走就死翘翘了 :(
:00447B18 47                      inc edi
:00447B19 C745F800000000          mov [ebp-08], 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00447B45(C)
|
:00447B20 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447B23 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447B29 E82ABDFDFF              call 00423858
:00447B2E 8B45F4                  mov eax, dword ptr [ebp-0C] //载入用户名
:00447B31 8B55F8                  mov edx, dword ptr [ebp-08] //记录循环次数
:00447B34 0FB64410FF              movzx eax, byte ptr [eax+edx-01] //将用户名的第一位以ASCII码形式存到EAX,第一次循环值为零。
:00447B39 03F0                    add esi, eax    //与上一次循环后得到的累加值相加
:00447B3B 03B314030000            add esi, dword ptr [ebx+00000314] //当前字符的十进制值加上11111
:00447B41 FF45F8                  inc [ebp-08]
:00447B44 4F                      dec edi //计数器
:00447B45 75D9                    jne 00447B20 //用户名全部计算完毕则跳走

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00447AFA(C), :00447B16(C)
|
:00447B47 8D55FC                  lea edx, dword ptr [ebp-04]
:00447B4A 8BC6                    mov eax, esi //将累加值压入EAX寄存器
:00447B4C E857FBFBFF              call 004076A8
:00447B51 FFB30C030000            push dword ptr [ebx+0000030C]
:00447B57 FF75FC                  push [ebp-04]
:00447B5A FFB310030000            push dword ptr [ebx+00000310]
:00447B60 8D45FC                  lea eax, dword ptr [ebp-04]
:00447B63 BA03000000              mov edx, 00000003
:00447B68 E887BFFBFF              call 00403AF4
:00447B6D 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447B70 8B83D8020000            mov eax, dword ptr [ebx+000002D8]
:00447B76 E8DDBCFDFF              call 00423858
:00447B7B 8B55F4                  mov edx, dword ptr [ebp-0C] //EDX中为我输入的注册码
:00447B7E 8B45FC                  mov eax, dword ptr [ebp-04] //EAX中为刚才循环完后的累加值
:00447B81 E8BEBFFBFF              call 00403B44
:00447B86 7528                    jne 00447BB0  //如果不相等就死了 :(

//到此为止,整个CrackMe的算法已经完全弄明白了,为了使大家加深印象我再综合的复诉一边:
//举例说明NYDoll是如何产生出正确的注册码78339的
//(1)依次去NYDoll中的字符,并将它以ASCII码的形式保存
//(2)ASCII码的值加上11111,再保存起来
//(3)若用户名没有取完则循环,第二次ASCII码值加上11111的结果和第一次的累加值相加
//(4)若第一次循环,则累加值为11111
//即注册过程的中间数据为:11111+(78+11111)+(89+11111)+(68+11111)+(111+11111)+(108+11111)+(108+11111)
//结果等于78339即为正确的注册码了


                                            By 娃娃(NYDoll)
今天太困了 明天贴注册机! Bye For Now



标 题:加上一个VB的注册机 (5千字)
发信人:NYDoll
时 间:2001-8-17 10:23:26
详细信息:


一个CrackMe的破解以及注册机的制作

    自从研究CCG的CrackMe之后 便开始对CrackMe这个东西很感兴趣,所以跑到DDXia前辈的主页上逛了一圈准备借鉴
一下别人的优秀思想,完善一下自己正在酝酿中的CrackMe,太难的破不了,太简单的又没有意思,找了一个中等难度的东西Down了下来,回来一看,正好适合写偏教程给初学者讲讲 ^_^ 说不定以后FCG的考试也要用CrackMe了呢

这个东西的注册方法很普遍 就是Name/SN的格式 先进入注册窗口 输入姓名:NYDoll 注册码:38383838 运行TRW下断点BPX HMEMCPY 然后回到程序点击注册按钮,被TRW栏下,清除断点BC * 输入PMODULE到程序领空 然后要按一阵F10之后来到这里:

:004479A6 837DF400                cmp dword ptr [ebp-0C], 00000000
:004479AA 0F8428020000            je 00447BD8
:004479B0 8BB338030000            mov esi, dword ptr [ebx+00000338]
:004479B6 807E0500                cmp byte ptr [esi+05], 00
:004479BA 0F8420010000            je 00447AE0

//省略一部分代码

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004479BA(C)
|
:00447AE0 33F6                    xor esi, esi
:00447AE2 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447AE5 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447AEB E868BDFDFF              call 00423858
:00447AF0 8B45F4                  mov eax, dword ptr [ebp-0C]
:00447AF3 E83CBFFBFF              call 00403A34 
:00447AF8 85C0                    test eax, eax
:00447AFA 7E4B                    jle 00447B47
:00447AFC 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447AFF 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447B05 E84EBDFDFF              call 00423858
:00447B0A 8B45F4                  mov eax, dword ptr [ebp-0C] //载入用户名
:00447B0D E822BFFBFF              call 00403A34
:00447B12 8BF8                    mov edi, eax //得到用户名的字符数
:00447B14 85FF                    test edi, edi //比较用户名是否为空
:00447B16 7C2F                    jl 00447B47 //跳走就死翘翘了 :(
:00447B18 47                      inc edi
:00447B19 C745F800000000          mov [ebp-08], 00000000

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00447B45(C)
|
:00447B20 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447B23 8B83D4020000            mov eax, dword ptr [ebx+000002D4]
:00447B29 E82ABDFDFF              call 00423858
:00447B2E 8B45F4                  mov eax, dword ptr [ebp-0C] //载入用户名
:00447B31 8B55F8                  mov edx, dword ptr [ebp-08] //记录循环次数
:00447B34 0FB64410FF              movzx eax, byte ptr [eax+edx-01] //将用户名的第一位以ASCII码形式存到EAX,第一次循环值为零。
:00447B39 03F0                    add esi, eax    //与上一次循环后得到的累加值相加
:00447B3B 03B314030000            add esi, dword ptr [ebx+00000314] //当前字符的十进制值加上11111
:00447B41 FF45F8                  inc [ebp-08]
:00447B44 4F                      dec edi //计数器
:00447B45 75D9                    jne 00447B20 //用户名全部计算完毕则跳走

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00447AFA(C), :00447B16(C)
|
:00447B47 8D55FC                  lea edx, dword ptr [ebp-04]
:00447B4A 8BC6                    mov eax, esi //将累加值压入EAX寄存器
:00447B4C E857FBFBFF              call 004076A8
:00447B51 FFB30C030000            push dword ptr [ebx+0000030C]
:00447B57 FF75FC                  push [ebp-04]
:00447B5A FFB310030000            push dword ptr [ebx+00000310]
:00447B60 8D45FC                  lea eax, dword ptr [ebp-04]
:00447B63 BA03000000              mov edx, 00000003
:00447B68 E887BFFBFF              call 00403AF4
:00447B6D 8D55F4                  lea edx, dword ptr [ebp-0C]
:00447B70 8B83D8020000            mov eax, dword ptr [ebx+000002D8]
:00447B76 E8DDBCFDFF              call 00423858
:00447B7B 8B55F4                  mov edx, dword ptr [ebp-0C] //EDX中为我输入的注册码
:00447B7E 8B45FC                  mov eax, dword ptr [ebp-04] //EAX中为刚才循环完后的累加值
:00447B81 E8BEBFFBFF              call 00403B44
:00447B86 7528                    jne 00447BB0  //如果不相等就死了 :(

//到此为止,整个CrackMe的算法已经完全弄明白了,为了使大家加深印象我再综合的复诉一边:
//举例说明NYDoll是如何产生出正确的注册码78339的
//(1)依次去NYDoll中的字符,并将它以ASCII码的形式保存
//(2)ASCII码的值加上11111,再保存起来
//(3)若用户名没有取完则循环,第二次ASCII码值加上11111的结果和第一次的累加值相加
//(4)若第一次循环,则累加值为11111
//即注册过程的中间数据为:11111+(78+11111)+(89+11111)+(68+11111)+(111+11111)+(108+11111)+(108+11111)
//结果等于78339即为正确的注册码了

接下来我们来看看要如何编写一个注册机,TC没有图形界面

Private Sub Text1_Change()
Dim c_num, aa, i As Integer  '定义变量
Dim a, b, c, d, e            '定义变量
c_num = Len(Trim(Text1.Text))  'c_num指注册名的字符个数
    If c_num = 0 Then        '若用户名一栏为空则提示
      MsgBox ("Enter Your Name First!")    '提示信息
      Else
      For i = 1 To c_num    '若填写完毕则开始循环运算
      a = Mid(Text1, i, 1)        'a指现在取的一个字符
      c = Asc(a)            '将用户名依次转换为ASCII码形式
      If i = 1 Then
      d = c + 11111 + 11111    '第一次循环累计值为11111
      Else
      d = c + 11111    '用户名的每位的ASCII码值加上11111
      End If
      e = e + d    '将累加值存入变量 E 中
      Next i
      Text2.Text = e    '循环完成后 E中存放的就是真正的注册码了
      End If
End Sub

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程