首页
社区
课程
招聘
[原创]samisgod 兄弟的 修改版本 CrkLv3 sp1 高手莫飘进 简单的算法
发表于: 2007-7-22 23:49 5588

[原创]samisgod 兄弟的 修改版本 CrkLv3 sp1 高手莫飘进 简单的算法

2007-7-22 23:49
5588
写给新手,虽然简单,高手不屑细写,但我不是高手,我愿意详细点分析给菜鸟们。大家一起进步吧。。。我发表的时候,也没注意到已有破文,但是版本不一样了,那个算法改了。即然这样尴尬,我就修改一下破文,精简一下。。。

下载
447K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3q4A6M7U0N6Q4x3X3g2U0L8W2)9J5c8V1y4J5K9@1I4$3x3%4y4H3x3g2)9J5k6i4u0S2M7W2)9J5y4X3&6T1M7%4m8Q4x3@1u0Q4x3U0k6F1j5Y4y4H3i4K6y4n7i4@1f1@1i4@1t1&6i4K6W2r3i4@1f1#2i4K6S2r3i4@1q4r3i4@1f1@1i4@1u0n7i4@1p5#2i4@1f1#2i4K6W2o6i4@1p5^5i4@1f1&6i4K6V1&6i4K6R3@1i4@1f1@1i4@1u0n7i4@1t1$3i4@1f1@1i4@1t1^5i4@1q4p5i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1^5i4@1u0p5i4@1u0p5

下年我们组合参加CRACKME比赛吧

也许对你使用VB有启发,地址:

http://bbs.pediy.com/attachment.php?attachmentid=5867&d=1179841323

拿到程序后,发现是我最喜欢的VB语言,作者说自校验加壳,呵呵~~管他什么壳,先用OD脱之~~

50688字节(脱壳后,但是未优化,优化后可以更小)

脱到上面的那个地址就OK了,后来用PEID检测原来是ASPack的压缩壳

PEID:ASPack 2.12 -> Alexey Solodovnikov

CTRL+G 到 “401100”,你将看到浮点数值:25600(表示设定的标准校验值)

004010F4     /975A4000      dd      脱壳.00405A97
004010F8     |CD5A4000      dd      脱壳.00405ACD
004010FC     |9F5A4000      dd      脱壳.00405A9F
00401100   . |000000000000D>dq      float 25600.00000000000
00401108     |07            db      07
00401109     |00            db      00
0040110A     |08            db      08
0040110B     |00            db      00

25600字节进行对比

50688(脱壳后,但是未优化,优化后可以更小)

00405C86   .  FF15 9C104000 call    dword ptr [<&msvbvm60.rtcF>;  msvbvm60.rtcFileLen  利用这个函数获取大小50688

00405CDE   .  0F84 8A000000 je      00405D6E              ;  自校验关键跳1 NOP

00405CF9   .  74 73         je      short 00405D6E             ;  自校验关键跳2 NOP

00405D10   .  74 5C         je      short 00405D6E             ;  自校验关键跳3 NOP

00405D27   .  74 45         je      short 00405D6E             ;  自校验关键跳4 NOP

00405D3E   .  74 2E         je      short 00405D6E             ;  自校验关键跳5 NOP

00405D55   .  74 17         je      short 00405D6E             ;  自校验关键跳6 NOP

00405D6C   .  75 06         jnz     short 00405D74             ;  自校验关键跳7 改JMP

按照上面提示,前6处比较都NOP掉,第7处改必跳。剔除自校验。

修改好程序后,呵呵,重新开始,设置断点:405150(即单击事件地址)

填好信息后注册:用户名:123 注册码:456

代码不全贴了,太占篇幅,其机制简单归纳为:

获取用户名

获取假注册码

0040541A   .  8B45 E8       mov     eax, dword ptr [ebp-18>
0040541D   .  50            push    eax
0040541E   .  FF15 80104000 call    dword ptr [<&msvbvm60.>;  msvbvm60.__vbaR8Str
00405424   .  DC0D D8104000 fmul    qword ptr [4010D8]     ;  用户名*3
0040542A   .  8B4D E8       mov     ecx, dword ptr [ebp-18>
0040542D   .  51            push    ecx
0040542E   .  DFE0          fstsw   ax
00405430   .  A8 0D         test    al, 0D
00405432   .  0F85 AA010000 jnz     004055E2
00405438   .  DD9D 28FFFFFF fstp    qword ptr [ebp-D8]
0040543E   .  FF15 80104000 call    dword ptr [<&msvbvm60.>;  msvbvm60.__vbaR8Str
00405444   .  DC85 28FFFFFF fadd    qword ptr [ebp-D8]     ;  用户名*3+用户名=用户名*4
0040544A   .  83EC 08       sub     esp, 8
0040544D   .  DC05 D0104000 fadd    qword ptr [4010D0]     ;  用于加法的固定值:121

以上可以简单的看作:N1=用户名*4+121

00405453   .  DFE0          fstsw   ax
00405455   .  A8 0D         test    al, 0D
00405457   .  0F85 85010000 jnz     004055E2
0040545D   .  DD1C24        fstp    qword ptr [esp]
00405460   .  FF15 5C104000 call    dword ptr [<&msvbvm60.>;  msvbvm60.__vbaStrR8
00405466   .  8BD0          mov     edx, eax
00405468   .  8D4D E4       lea     ecx, dword ptr [ebp-1C>
0040546B   .  FFD7          call    edi
0040546D   .  8B55 E0       mov     edx, dword ptr [ebp-20>
00405470   .  52            push    edx
00405471   .  FF15 80104000 call    dword ptr [<&msvbvm60.>;  msvbvm60.__vbaR8Str
00405477   .  DC0D D8104000 fmul    qword ptr [4010D8]     ;  注册码*3
0040547D   .  DFE0          fstsw   ax
0040547F   .  A8 0D         test    al, 0D
00405481   .  0F85 5B010000 jnz     004055E2
00405487   .  8B45 E0       mov     eax, dword ptr [ebp-20>
0040548A   .  DD9D 20FFFFFF fstp    qword ptr [ebp-E0]
00405490   .  50            push    eax
00405491   .  FF15 80104000 call    dword ptr [<&msvbvm60.>;  msvbvm60.__vbaR8Str
00405497   .  DC85 20FFFFFF fadd    qword ptr [ebp-E0]     ;  注册码*3+注册码=注册码*4
0040549D   .  83EC 08       sub     esp, 8
004054A0   .  DC05 C8104000 fadd    qword ptr [4010C8]     ;  注册码*4+14

以上可以简单的看作:N2=注册码*4+14

004054D2   . /0F85 97000000 jnz     0040556F               ;  关键跳1

004054E4   . |0F85 85000000 jnz     0040556F               ;  关键跳2

004054F6   . |75 77         jnz     short 0040556F         ;  关键跳3

00405504   . |75 69         jnz     short 0040556F         ;  关键跳4

00405512   . |75 5B         jnz     short 0040556F         ;  关键跳5

00405520   . |75 4D         jnz     short 0040556F         ;  关键跳6

0040552E   . |75 3F         jnz     short 0040556F         ;  关键跳7

从上面看出:要求N1=N2即可

即    用户名*4+121 = 注册码*4+14

那么我们构造一下:name:123   sn:149.75

注册成功,下面我们也用VB还制其人之身,做一个注册机

由上文推断:注册码=(用户名*4+121-14)/4

简化成:SN=(NAME*4+107)/4

Private Sub Text1_Change()

On Error GoTo maplescg

Text2.Text = (Text1.Text * 4 + 107) / 4

Exit Sub

maplescg:

Text1.Text = ""

Text2.Text = ""

MsgBox "请注意输入规范,必须为数字", , "请检查输入..."

End Sub

附件上有注册机

建议:修改自校验的检测方法,调用函数检测文件大小变化只能阻拦刚入门的。强度不够。。。

可以再结合检测文件最后修改时间,定义为一个特殊的日子,而一般用户是不可能达到那个年代的。比方说系统的时间范围:

1980----2099 年之间,如果你用特殊的办法修改了创建时间在这个时间段之外,呵呵,再自校验修改时间,加壳。然后就。。。

与上述大小自校验结合,呵呵,可以拦阻很多新手了。

反调试不能少,没有反调试,再好的算法机制也受不了攻击。VB里面的反调试不好设计,如果需要,我们可以相互学习一下。

什么文件自毁了,呵呵,自爆了,随便你弄。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 112
活跃值: (16)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
原来沙发这么好坐!
哈哈!
支持你!
2007-7-22 23:59
0
雪    币: 30320
活跃值: (8824)
能力值: ( LV15,RANK:3306 )
在线值:
发帖
回帖
粉丝
3
板凳,学习支持。
2007-7-23 04:58
0
雪    币: 228
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
呵,共同学习,共同进步
2007-7-23 08:06
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错,学习了
2007-7-26 01:14
0
游客
登录 | 注册 方可回帖
返回