算法注册机编写扫盲---第四课

算法注册机编写扫盲---第四课
原创作者:我要[DFCG]
=====================================================================

注:接第三课,我又来了,这次没有多余的话。来!就以实例接着来吧。 ^_^

某crackme算法分析

嘿嘿!去年年初的时候,我发过这个东 ,并做了动画教学破解并介绍了内存注册机的作法。这次还是用它,不过是算法注册机及算法的内容。对我本人来说,还是有点意义的。N 久没看过自己 的破文了,为了这第4课,又翻出来,哈,我啊,果然是菜的不行的那种! 就找软柿子下手。 ^_^
======================================================================

一、首先运行TRW2000指向step1.exe,然后隐藏。
二、启动step1.exe
三、输入注册名:woyao,注册码:7979,先 要点注册键。
三、按Ctrl+N激活TRW2000

  下断点命令: bpx hmemcpy → 设置万能断点

四、按F5返回,点击注册按钮,程序被拦截,下命令:

     bc* → 清除断点
      pmodule → 直接进入程序领空

五、现在再按F10键N下(找到金矿),到如下代码:

:004011B7 E8A4120000 call 00402460 ← 这里开始取注册名
:004011BC 59 pop ecx
:004011BD 8BC8 mov ecx, eax ← 注册名位数入ecx
:004011BF 83F904 cmp ecx, 00000004 ← 一定大于或等于4
:004011C2 7D14 jge 004011D8 ← 正确就跳到004011D8
:004011C4 6A10 push 00000010

* Possible StringData Ref from Data Obj ->/"ERROR/"
                                |
:004011C6 687CB14000 push 0040B17C

* Possible StringData Ref from Data Obj ->/"Your name must contain at least /"
                                         ->/"4 characters! ← ?@_@?
/
:004011CB 684CB14000 push 0040B14C
:004011D0 56 push esi

* Reference To: USER32.MessageBoxA, Ord:0000h
                                 |
:004011D1 E828900000 Call 0040A1FE
:004011D6 EB67 jmp 0040123F

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004011C2(C)
|
:004011D8 33D2 xor edx, edx ← edx清零
:004011DA 33C0 xor eax, eax ← eax清零
:004011DC 3BC8 cmp ecx, eax ← 比较eax,ecx
:004011DE 7E0D jle 004011ED ← 大于跳004011ED,结束运算
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004011EB(C)
:004011E0 33DB xor ebx, ebx ← ebx清零,下面的注意看了
:004011E2 8A5C05E4 mov bl, byte ptr [ebp+eax-1C] ← 注册名ASCII的16 进制值移入ebx低位
:004011E6 03D3 add edx, ebx
:004011E8 40 inc eax ← 累加计数器
:004011E9 3BC8 cmp ecx, eax ← 比较eax和ecx是否加完?
:004011EB 7FF3 jg 004011E0 ← 小于跳到004011E0继续加

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004011DE(C)
|
:004011ED 52 push edx

* Possible StringData Ref from Data Obj ->/"%d/"
                                 |
:004011EE 6882B14000 push 0040B182
:004011F3 8D45AC lea eax, dword ptr [ebp-54]
:004011F6 50 push eax
:004011F7 E8C0280000 call 00403ABC
:004011FC 83C40C add esp, 0000000C
:004011FF 8D55AC lea edx, dword ptr [ebp-54]
:00401202 52 push edx
:00401203 8D4DC8 lea ecx, dword ptr [ebp-38]
:00401206 51 push ecx
:00401207 E808120000 call 00402414 ← 关键call,注册 码比较处
:0040120C 83C408 add esp, 00000008
:0040120F 85C0 test eax, eax
:00401211 7517 jne 0040122A ← 不等就完蛋了! ? @_@ ?
:00401213 6830000400 push 00040030

* Possible StringData Ref from Data Obj ->/"You Did It!/"// ^_^
                                |
:00401218 68CEB14000 push 0040B1CE

算法总结:
    crackme算法超简单,注册码等于注册名ASCII的16进制值相加后的10进制值
算法举例:
    注册名:woyao
    注册码:119 + 111 + 121 + 97 + 111 = 559(十进制值)

VB注册机源码:

Private Sub Command1_Click()
a = Text1.Text
For i = 1 To Len(a)
b = b + Asc(Mid$(a, i))
Next i
Text2.Text = b
End Sub

六、再来一个不久前的软件,算法分析已经有朋友写过了,这里不再从复,因为教程的目的是算法注册机的编写啊,来,看下面:

全国电话通 Ver1.09.01注册算法

算法总结如下:
   注册码=((机器码(转为十六进制)-3F9)/2D3+3F9)*2D3
   用户名可任意填写,因为它并不参与注册码的校验

输入的机器码设为a,列出算式:

 ( (a - 3F9) / 2D3 + 3F9) * 2D3

我的机器码:118866
我的注册码:853140

VB注册机源码见下面:

Private Sub Command1_Click()
strtmp = Text1.Text
a = Val(Text1.Text)
b = a - &H3F9
c = b / &H2D3 + &H3F9
d = c * &H2D3
Text2.Text = d
End Sub

七、为何源码要分几段来算的?回看算法总结,列出算式看看先,哦,原来与括号有所关连的。明白了!我要[DFCG]偷懒源码的“精华”在此。 !@#&%$ ^_^

八、因为我菜,所以学无精点,老想偷懒易用,哈,总算摸出一个规律与方法,这下不就全送上来了,大家有用就学,没用就在你以后上手时, 把我要[DFCG]的偷懒“精华”送回老家好了! ^_^

九、看得我头晕 的,你 家伙就没说正题,不是说过要教写简单crackMe的吗?看你急的,我在论坛上积分“负”的流油都不急,你急什么啊!?想起致“负”原因,哈,这里应该上你老学童一笔,你欠我的分数,赔我,要不就。。。

十、砖头、臭鸡蛋又来了?晕,不说就不说,打住。看下面源码:

CrackMe_DFCG源码

Private Sub Command1_Click()
Dim a, b, c, d, X As Integer
a = 22222
b = a + 33333
c = b * 1234
d = Val(Text1.Text)
If c = d Then
MsgBox "高手!我服你 @_@"
Else
MsgBox "哈!你比我 ^_^"
End If
End Sub

Private Sub Command2_Click()
      关于DFCG.Show
End Sub
===========================================

CrackMe_DFCG注册机源码

Private Sub Command1_Click()
strtmp = Text1.Text
a = 22222
b = a + 33333
c = b * 1234
Text1.Text = c
End Sub

十一、上面这个是 莱鸟级的CrackMe,简单之极的。没什么好说了,下面再来 进一步的CrackMe,这个东 在你输入正确 注册码后就会弹出新的工程窗口,呵呵,软件注册码输入正确是什么境况的! ^_^ 看下面:

pass_CrackMe窗口1源码:(Form1)
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
End
End Sub

pass_CrackMe窗口2源码:(Form2)
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
If Text1.Text = "woyao[DFCG]" Then
Form1.Show
Unload Form2
Else
Text1.Text = ""
Print MsgBox("“对不起!密码错误!”" + Chr(10) + Chr(10) + Chr(13) + "请您重新输入正确的密码!", 48, "哈!失败了 ^_^")
E nd If
End I
f
End Sub

十二、这次不给注册机源码,你自己来吧!反正与上面的差不多,只是过程我做了一点小改动而已,多试有益了。来吧,动手吧!

十三、随本课将提到的所有东 作为附件一起上来,要的就下载回去研究。后面的这个pass_CrackMe,我将完整的源码也打包一起在内,改一下它你就得到另一个功能的CrackMe,比方说,输入密码正确时,弹出一幅PLMM的图片之类的。

十四、到这里为止,本扫盲内容已讲的差不多了,下一课就作为总结再重复一下前几课的内容,并教大家做出你的个性化名片,好坏只在个人喜好,不过知道它的编写过程,如下的美工类工作就看你本人的所喜所好了! ^_^

十五、本篇原创作者--我要[DFCG],版权没有,人权我有 ^_^ 所以凡转此帖的友站及各路朋友兄弟们,必注明此文出自DFCG组织及我要[DFCG]原创为先决条件,否则谢绝转帖转载。网路本一家,但总不至于没个出处明示的吧!感谢你的阅读!


                                     我要[DFCG] 2003.12.12
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kyle-soft

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值