首页
社区
课程
招聘
[讨论]我的一个crackme算法很简单
发表于: 2009-6-13 08:39 7174

[讨论]我的一个crackme算法很简单

2009-6-13 08:39
7174
欢迎大家破解!小弟刚刚琢磨了一个算法很简单,有必要的话我会上传算法的!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (19)
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
被雷了一下~
上传的附件:
2009-6-13 10:17
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
返回地址: 0040366A  函数名称: Ecode_GetProperty(krnl.fnr)
Ecode_GetProperty: 获取窗口控件属性
          hWindow=0x52010001
          hControl=0x16010002
          dwEcodeType=0x00000008 (标题)
          Arg4=0xFFFFFFFF
Ecode_GetProperty返回值: 0x00164D68 ("ccbsxhxd")
     
返回地址: 00403693  函数名称: Ecode_Function_3(krnl.fnr)
Ecode_Function_3: 判断变量是否为数值
          dwEcodeType=0x00000001
          EcodeVariable=0x00164D68  ("ccbsxhxd")
          dwEcodeVarType_2=0x00000000
          dwEcodeVarType=0x80000004 (文本型)
Ecode_Function_3返回值: 0x00000000 (FALSE)

004036AF    >FADD QWORD PTR DS:[4030CC]    //加法
     
返回地址: 004036D2  函数名称: Ecode_Function_3(krnl.fnr)
Ecode_Function_3: 变量转为字节类型
          dwEcodeType=0x00000001
          EcodeVariable=0x00000000  (数值)
          dwEcodeVarType_2=0x40180000
          dwEcodeVarType=0x80000601 (数值型)
Ecode_Function_3返回值: 0x00000006

004096D5  MOV BYTE PTR SS:[EBP-4], AL
     
返回地址: 004036F1  函数名称: Ecode_Function_3(krnl.fnr)
Ecode_Function_3: 变量转为文本
          dwEcodeType=0x00000001
          EcodeVariable=0x00000006  (NULL)
          dwEcodeVarType_2=0x00000000
          dwEcodeVarType=0x80000101 (字节型)
Ecode_Function_3返回值: 0x00164CB0 ("6")

     
返回地址: 0040370A  函数名称: Ecode_GetProperty(krnl.fnr)
Ecode_GetProperty: 获取窗口控件属性
          hWindow=0x52010001
          hControl=0x16010003
          dwEcodeType=0x00000008 (标题)
          Arg4=0xFFFFFFFF
Ecode_GetProperty返回值: 0x00164D68 ("7979797979")

取用户名,判断是否为数值,是为数据+6,不是为0+6,取最后一个字节数值,转为文本与key比较。

程序算法简单。我有点疑惑,下面的代码:
004036B5    >FSTP QWORD PTR SS:[EBP-18]
004036B8    >PUSH 80000601
004036BD    >PUSH DWORD PTR SS:[EBP-14]
004036C0    >PUSH DWORD PTR SS:[EBP-18]

4036B5弹出结果到SS:[EBP-18], 4036C0把SS:[EBP-18]数据进栈,为什么我在OD堆栈中没有看到这个结果呢。

我哪里理解错了呢????
2009-6-13 14:20
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主,有没有破文啊。
2009-6-13 14:30
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
红尘岁月
你是如何发现关键点的?
2009-6-13 14:34
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
12345678
84
2009-6-13 16:39
0
雪    币: 214
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
用户不管什么 只要第一位不是数字
密码6

这个程序太雷了
2009-6-13 19:05
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
真是高手如云啊!尤其是红尘岁月

说实话我是用易语言编的。写起来很简单,但反汇编有点那个主要是自己水平有限!
我的过程是:用编辑框一的内容加六和编辑框二的内容比较。这个用易语言很好实现。但编辑框只能识别文本型的,所以我用一个局部变量“真码"来做中介的

真码 = 到字节 (到数值 (编辑框1.内容) + 6)
如果 (编辑框2.内容 = 到文本 (真码))
    信息框 (“你太棒了!”, 0, )
否则
    如果 (编辑框2.内容 ≠ 到文本 (真码))
        信息框 (“再试一次!”, 0, )
2009-6-13 21:22
0
雪    币: 414
活跃值: (10)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
9
很好奇红尘那个自动分析函数怎么弄出来的?
2009-6-14 12:58
0
雪    币: 452
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
红尘岁月专用版 下载地址:

http://bbs.pediy.com/showpost.php?p=618248
2009-6-14 14:01
0
雪    币: 414
活跃值: (10)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
11
感谢CuteSnail兄
试了下,载入crame后一会就停了。能输入用户名,输入不了注册码。点击直接弹出错误对话框
没分析。设置问题?
2009-6-14 16:03
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
12
易语言的解析功能是我最近加的,那个版本没有。

晚上有空我在工具下载区开个主题,上传一下最新的版本。
2009-6-14 18:13
0
雪    币: 414
活跃值: (10)
能力值: ( LV9,RANK:460 )
在线值:
发帖
回帖
粉丝
13
好强大,自己进行工具开发增强。膜拜下。
2009-6-14 18:52
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
14
2009-6-14 21:05
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
论坛上第一次发分析帖,显然之前对自己不太自信。但总是要见公婆的。爆破分析如下:

爆破思路如下:

我们先试着运行程序,随便输入注册名和注册码,点击注册,这时弹出信息对话框,提示注册名或注册码错误。好,那我们从这里入手。

在OD底下的命令提示框中输入 bp MessageBoxA,也就是在user32中这个函数上下断点。

F9运行,随便输入注册名和注册码,点击注册,好,OD断下来了。

此时OD是在user32领空,如实Alt+F9,让程序不断返回一直到程序的领空。此时我们发下如下代码:

00409805   /0F84 35000000   je 1.00409840        //代码跳转到409840,也就是弹出对话框后面,可能会误以为是"关键跳"
0040980B   |6A 00           push 0
0040980D   |6A 00           push 0
0040980F   |6A 00           push 0
00409811   |68 01030080     push 80000301
00409816   |6A 00           push 0
00409818   |68 00000000     push 0
0040981D   |68 04000080     push 80000004
00409822   |6A 00           push 0
00409824   |68 DF904000     push 1.004090DF
00409829   |68 03000000     push 3
0040982E   |BB 00030000     mov ebx,300
00409833   |E8 5C000000     call 1.00409894        //"关键调"用-会弹出错误提示框
00409838   |83C4 28         add esp,28
0040983B   |E9 00000000     jmp 1.00409840        //代码跳转到409840,也就是弹出对话框后面

其实上面有个比较可疑的地方就是,无论是弹出"错误信息提示框",还是不弹出,总是会跳到地址409840。说明他们不是"关键跳",
准确的说应该是注册失败后面的一些信息处理吧。好,这个暂时不管。代码如下:

00409840    8BE5            mov esp,ebp
00409842    5D              pop ebp
00409843    C3              retn
00409844    C3              retn
00409845    C3              retn
00409846    FC              cld
00409847    DBE3            finit
00409849    E8 F6FFFFFF     call 1.00409844

好,既然这个不是,那我们继续往上找。发现如下一段代码:

00409751   /0F84 35000000   je 1.0040978C        //代码跳转到40978C
00409757   |6A 00           push 0
00409759   |6A 00           push 0
0040975B   |6A 00           push 0
0040975D   |68 01030080     push 80000301
00409762   |6A 00           push 0
00409764   |68 00000000     push 0
00409769   |68 04000080     push 80000004
0040976E   |6A 00           push 0
00409770   |68 D4904000     push 1.004090D4
00409775   |68 03000000     push 3
0040977A   |BB 00030000     mov ebx,300
0040977F   |E8 10010000    call 1.00409894        //函数调用
00409784   |83C4 28         add esp,28
00409787   |E9 B4000000     jmp 1.00409840        //跳转到409840

上面代码是不是很熟悉,跟上面代码比较可以确定此函数调用应该也是一个对话框呢。
我们在00409751下断,然后让程序别跳转,执行此调用,我们看到自己想看到的结果了。既然注册了,于是
jmp 1.00409840就执行一些首尾工作。

到此我们知道409840处代码是执行一些收尾工作的。
2009-6-16 09:05
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
算法分析其实还不太会,希望某个大虾,有这方面资料提供一些。学习下。
2009-6-16 09:09
0
雪    币: 1596
活跃值: (30)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=CuteSnail;641591]红尘岁月专用版 下载地址:

http://bbs.pediy.com/showpost.php?p=618248[/QUOTE]

在XP SP3下无法加载程序,不知道这个问题解决没有
2009-6-17 08:47
0
雪    币: 517
活跃值: (64)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
18
问题已解决,详见:

http://bbs.pediy.com/showthread.php?t=91536
2009-6-17 09:23
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
19
红尘的工具好强
2009-6-17 09:53
0
雪    币: 223
能力值: (RANK:130 )
在线值:
发帖
回帖
粉丝
20
终于搞定了。。。第一次搞易语言的,花了很长时间呀。
004095AA处是算法的核心函数。
00409717处调用004095AA。
2009-6-21 09:17
0
游客
登录 | 注册 方可回帖
返回
//