wuhanqi 发表于 2007-8-14 16:28:21

Easy-Crackme 0.3 by wuhanqi【强势出击,^_^】

本版本采用重启验证。。。加了UPX壳。。。。代码重新编译
希望大家测试啊~!/:017
一点小错误,已经修正!

[ 本帖最后由 wuhanqi 于 2007-8-14 16:59 编辑 ]

gongsui 发表于 2007-8-14 16:37:52

解压出来就已经是“已注册”了/:017

wuhanqi 发表于 2007-8-14 16:55:40

哦,一个小错误

极速暴龙 发表于 2007-8-14 18:29:36

不知道是不是程序有错还是怎么..不会弄了

看起来正确的一组:

jsblong

1147811042

[ 本帖最后由 极速暴龙 于 2007-8-14 18:32 编辑 ]

wuhanqi 发表于 2007-8-14 19:54:12

ls来篇算法!

[ 本帖最后由 wuhanqi 于 2007-8-14 20:07 编辑 ]

Gue 发表于 2007-8-15 14:28:15

看下这两段代码,好像逻辑上有点问题.

00412C44   /75 37         jnz   short 00412C7D
00412C46   |8B02            mov   eax, dword ptr
00412C48   |3A01            cmp   al, byte ptr
00412C4A   |75 2B         jnz   short 00412C77
00412C4C   |0AC0            or      al, al
00412C4E   |74 24         je      short 00412C74
00412C50   |3A61 01         cmp   ah, byte ptr
00412C53   |75 22         jnz   short 00412C77
00412C55   |0AE4            or      ah, ah
00412C57   |74 1B         je      short 00412C74
00412C59   |C1E8 10         shr   eax, 10
00412C5C   |3A41 02         cmp   al, byte ptr
00412C5F   |75 16         jnz   short 00412C77
00412C61   |0AC0            or      al, al
00412C63   |74 0F         je      short 00412C74
00412C65   |3A61 03         cmp   ah, byte ptr
00412C68   |75 0D         jnz   short 00412C77
00412C6A   |83C1 04         add   ecx, 4
00412C6D   |83C2 04         add   edx, 4
00412C70   |0AE4            or      ah, ah
00412C72^|75 D2         jnz   short 00412C46
00412C74   |33C0            xor   eax, eax



00412F17   /74 02         je      short 00412F1B
00412F19   |D9E0            fchs
00412F1B   \DC1D 1AC14000   fcomp   qword ptr
00412F21    DFE0            fstsw   ax
00412F23    F6C4 41         test    ah, 41
00412F26    0F84 22000000   je      00412F4E
00412F2C    6A 00         push    0
00412F2E    68 22C14000   push    0040C122                         ; 已注册
00412F33    6A FF         push    -1
00412F35    6A 08         push    8
00412F37    68 6F000116   push    1601006F
00412F3C    68 01000152   push    52010001
00412F41    E8 3C030000   call    00413282
00412F46    83C4 18         add   esp, 18
00412F49    E9 1D000000   jmp   00412F6B
00412F4E    6A 00         push    0
00412F50    68 29C14000   push    0040C129                         ; 未注册
00412F55    6A FF         push    -1
00412F57    6A 08         push    8
00412F59    68 6F000116   push    1601006F
00412F5E    68 01000152   push    52010001
00412F63    E8 1A030000   call    00413282
00412F68    83C4 18         add   esp, 18
00412F6B    6A 00         push    0
00412F6D    68 29C14000   push    0040C129                         ; 未注册
00412F72    6A FF         push    -1
00412F74    6A 08         push    8
00412F76    68 6F000116   push    1601006F
00412F7B    68 01000152   push    52010001
00412F80    E8 FD020000   call    00413282


这个图是使用了点暴力弄出来的.

ζ 发表于 2007-8-15 17:01:42

找到此处的方法是:
重启验证方式的分析主要有以下3种可能:
1、把注册码保存到注册表,利用注册表读取注册码,然后经过计算验证其正确性。
2、建立一个文件,把注册信息保存到文件里,然后通过读取来验证。
3、也可能把先验证注册信息,如果正确,那么就保存到注册表或某个文件中,下次启动读取验证,如果为空则失败。
这个Easy-Crackme 在提示错误后,暂停,返回用户代码时,附件可以看见是在往注册表中放置name和sn,在整体内存中搜索同样的语句,可以很快定位在412CDC,直接可以进行分析了!
    在爆破中,和上面说的一样,00412F49    E9 1D000000   jmp   00412F6B会又跳回“未注册”!
时间和水平不行!算法还没时间好好去看懂!

249142260 发表于 2007-8-16 20:54:12

怎么都那么难的 。。。

wuhanqi 发表于 2007-8-16 21:37:38

恩,是程序上有些问题哈,我把源码贴出来,高手看一下!
.版本 2

.程序集 窗口程序集1

.子程序 _按钮3_被单击

结束 ()

.子程序 _按钮2_被单击



.子程序 _按钮1_被单击
.局部变量 name, 文本型
.局部变量 sn, 文本型
.局部变量 ljbl, 逻辑型

.如果 (编辑框1.内容 = “”)
    信息框 (“请输入用户名”, 0, “提示”)
.否则
    .如果 (编辑框2.内容 = “”)
      信息框 (“请输入注册码”, 0, “提示”)
    .否则
      name = 编辑框1.内容
      sn = 编辑框2.内容
      ljbl = 写注册项 (3, “Software\Microsoft\Notepad\name”, name)
      ljbl = 写注册项 (3, “Software\Microsoft\Notepad\sn”, sn)
      信息框 (“请重启软件已验证注册码是否正确”, 0, “提示”)
    .如果结束

.如果结束


.子程序 _标签3_反馈事件, 整数型
.参数 参数一, 整数型
.参数 参数二, 整数型



.子程序 __启动窗口_创建完毕
.局部变量 name, 文本型
.局部变量 sn, 文本型
.局部变量 len, 整数型
.局部变量 i, 整数型
.局部变量 c, 整数型
.局部变量 gdzh, 整数型
.局部变量 sum, 整数型
.局部变量 real, 逻辑型

name = 取文本注册项 (3, “Software\Microsoft\Notepad\name”, )
sn = 取文本注册项 (3, “Software\Microsoft\Notepad\sn”, )
.如果真 (name = “”)
    .如果真 (sn = “”)
      len = 取文本长度 (name)
      gdzh = 1383838438
      .计次循环首 (len, i)
            c = 位异或 (取代码 (name, i), gdzh)
            sum = c × 96 + 459478830
            sum = sum × len
      .计次循环尾 ()
      .如果 (sn = 到文本 (sum))
            标签4.标题 = “未注册”
      .否则
            标签4.标题 = “已注册”
      .如果结束

    .如果真结束


.如果真结束
标签4.标题 = “未注册”

极速暴龙 发表于 2007-8-16 22:36:44

.如果真 (name = “”)
    .如果真 (sn = “”)

.如果真结束
标签4.标题 = “未注册”

/:L
页: [1] 2 3
查看完整版本: Easy-Crackme 0.3 by wuhanqi【强势出击,^_^】