首页
社区
课程
招聘
[原创]烂写的crackme,感兴趣的玩
发表于: 2010-3-21 11:04 8199

[原创]烂写的crackme,感兴趣的玩

2010-3-21 11:04
8199
实在是写得烂,都不好意思拿出手,
自己也没有测试过难度,不好意思,
最近太忙了
感兴趣的玩

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
lz加油吧,别灰心,什么事都要慢慢来
2010-3-21 11:37
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢楼上鼓励
2010-3-21 11:42
0
雪    币: 622
活跃值: (294)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
4
好吧,验证算法写起来我感觉很有压力,还是只说验证规则好了:
1. 用户名中所有位的ACSII字符值之和必须是0x221;
2. 密码必须是Messa?????A形式,其中问号可以用任意可输入的字符替代。

------------------华丽的分割线---------------------------
好吧,我错了,忘记给组可用的了:
用户名:ZZZZPi
密码:Messa89231A
2010-3-21 12:09
0
雪    币: 210
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我是撤退了
2010-3-21 12:14
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
说得太对了,我再补充点吧
用户名要参与CALL定位,如果asc错误的话,就找不到正确的CALL了,
换句话说,没有JZ和JNZ这种暴破了,只有CALL 地址这种方式

密码本来是加入复杂的算法来动态定位messagebox位置的,不过实在不想写了,太麻烦了
密码的的字符要参与messagebox的动态寻址,如果错误,当然就找不到对话框了。

下次我写一个我的VM的crackme给大家玩,让大家分析分析handler,熟悉一下
2010-3-21 12:38
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
7
学习了。。看了这么多回复,才有点眉目了!
另想问两个问题:
1、这个也用了hlt,可是SetUnhandledExceptionFilter断了半天也找不到异常处理的地方!再给点提示吧。
2、这个定位关键代码我也是依靠Dede,不知用OD或者IDA如何定位关键代码啊?
2010-3-21 22:16
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
首先谢谢你来玩,我的主要目的是想VM化跳转(与这个CM无关),取消掉JNZ,JZ,全部用JMP 当前位置+偏移来实现,偏移=0就代表不跳,如果跳的话,只需要计算出偏移,就实现跳转了,这个也是VMP的跳转一种方式,当然这只是一种想法,真正的VM化,还需要很多功夫。
1、我用hlt的目的,是在异常中来计算正确的call的位置,以为后面做铺垫,我用的try except end ,也没有跟过,不知道delphi是如何编译这种异常处理的。
2、delphi的定位,我记得有一个脚本,这个网上很好找,定位也很准确的,在加壳的情况下,或是VM的情况下,可以利用脚本来定位。
2010-3-21 22:41
0
雪    币: 89
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵呵。来了就留个吧
2010-3-22 09:29
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
10
有点带猜测的意味
2010-3-22 09:44
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有点,不过不强,海风牛的才强,
代码都是用key解出来运行的,
如果没有一个正确的序列号,基本无解
2010-3-22 11:10
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
4楼提供了一组注册码,可以用这个试炼一下,就很快找到了
2010-3-22 11:15
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
13
我已经找到过了…… 453818处的CALL如果不猜测的话有谁能知道应该是跳往这里呢?只能试验,看里面有user32.dll的动态加载,估计应该是这里……

00453839    .  55          PUSH EBP
0045383A    .  68 E4384500 PUSH <Project1.loc_4538E4>
0045383F    .  64:FF30     PUSH DWORD PTR FS:[EAX]
00453842    .  64:8920     MOV DWORD PTR FS:[EAX],ESP
00453845    .  8D45 EC     LEA EAX,DWORD PTR SS:[EBP-14]            ;  [ebp-14]->pCode
00453848    .  8B93 140300>MOV EDX,DWORD PTR DS:[EBX+314]
0045384E    .  E8 9106FBFF CALL <Project1.System::__linkproc__ LStr>
00453853    .  8D45 F0     LEA EAX,DWORD PTR SS:[EBP-10]            ;  [ebp-10]->正确提示
00453856    .  8B93 100300>MOV EDX,DWORD PTR DS:[EBX+310]
0045385C    .  E8 8306FBFF CALL <Project1.System::__linkproc__ LStr>
00453861    .  8D45 E8     LEA EAX,DWORD PTR SS:[EBP-18]            ;  [ebp-18]->Left(code, 5)
00453864    .  50          PUSH EAX                                 ;  user32.77D10000
00453865    .  B9 05000000 MOV ECX,5
0045386A    .  BA 01000000 MOV EDX,1
0045386F    .  8B45 EC     MOV EAX,DWORD PTR SS:[EBP-14]
00453872    .  E8 F50AFBFF CALL <Project1.System::__linkproc__ LStr>;  从开始处复制5个字符
00453877    .  FF75 E8     PUSH DWORD PTR SS:[EBP-18]               ;  push [ebp-18]->Left(code, 5)
0045387A    .  68 38394500 PUSH Project1.00453938                   ;  gebox
0045387F    .  8D45 E4     LEA EAX,DWORD PTR SS:[EBP-1C]
00453882    .  50          PUSH EAX                                 ;  user32.77D10000
00453883    .  B9 01000000 MOV ECX,1
00453888    .  BA 0B000000 MOV EDX,0B
0045388D    .  8B45 EC     MOV EAX,DWORD PTR SS:[EBP-14]
00453890    .  E8 D70AFBFF CALL <Project1.System::__linkproc__ LStr>;  从第11个字符复制1个字符
00453895    .  FF75 E4     PUSH DWORD PTR SS:[EBP-1C]               ;  push Mid(code, 11, 1)
00453898    .  8D45 F8     LEA EAX,DWORD PTR SS:[EBP-8]             ;  eax=[ebp-8]->3个字串连接结果
0045389B    .  BA 03000000 MOV EDX,3                                ;  连接字串的个数为3
004538A0    .  E8 2709FBFF CALL <Project1.System::__linkproc__ LStr>;  code前5字符与geBox,11字符起取的1字符相连接
004538A5    .  8D45 FC     LEA EAX,DWORD PTR SS:[EBP-4]
004538A8    .  BA 48394500 MOV EDX,Project1.00453948                ;  user32.dll
004538AD    .  E8 3206FBFF CALL <Project1.System::__linkproc__ LStr>
004538B2    .  60          PUSHAD
004538B3    .  39F6        CMP ESI,ESI
004538B5    .  8B45 FC     MOV EAX,DWORD PTR SS:[EBP-4]             ;  eax->[ebp-4]->"user32.dll"
004538B8    .  50          PUSH EAX                                 ; /FileName = "MZ?
004538B9    .  E8 E226FBFF CALL <Project1.LoadLibraryA_0>           ; \LoadLibraryA
004538BE    .  89C2        MOV EDX,EAX                              ;  user32.77D10000
004538C0    .  8B45 F8     MOV EAX,DWORD PTR SS:[EBP-8]             ;  (initial cpu selection)
004538C3    .  50          PUSH EAX                                 ; /ProcNameOrOrdinal = "MZ?
004538C4    .  52          PUSH EDX                                 ; |hModule = 77D10000 (user32)
004538C5    .  E8 3626FBFF CALL <Project1.GetProcAddress_0>         ; \GetProcAddress
004538CA    .  8945 F4     MOV DWORD PTR SS:[EBP-C],EAX             ;  user32.77D10000

如果username提供的跳转处不正确,就崩溃掉了,虽然安装有SEH……
code部分其实没有进行计算,直接复制了前5个字符与第11个字符起的1个字符,分别设为s0, s2。
中间有一个常数串"geBox"设为s1,那么要正确显示提示框就得
s0+s1+s2 == "MessageBoxA"
在这一部分的验证中用到的SEH如果没有获得正确地址会正常跳入SEH中去。

1、用户名:0x221 == sum(user)
2、密码:Messa?????A*(?代表1个字符,*代表任意字符)
2010-3-22 12:33
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
14
其实前面的call [xxx+sum(username)] 是一种比较危险的构造,存在安全隐患,可以利用这个执行任意代码……
2010-3-22 12:56
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
[QUOTE=不问年少;779767]其实前面的call [xxx+sum(username)] 是一种比较危险的构造,存在安全隐患,可以利用这个执行任意代码……[/QUOTE]

可以不猜测的,在formCreate中能发现线索,4楼应该就是这样发现的

如果不采用这种方式构造,又如何让程序中不出现jz和jnz,这个问题一直让我费解,我的主要目的就是要让程序不再出现JZ和JNZ
2010-3-22 13:13
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
16
我在你所说的事件中就只发现了一个有用的信息,跳转开始的位置为4535F7……
2010-3-22 16:47
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
17
不问年少兄,想问下问下怎么找到异常处理函数啊,查了点资料,尝试了半天也没找到。。(之前hekbobo的MFC程序倒是可以通过触发异常后在内存窗口的代码段下断点,然后运行,找到异常处理函数) 另异常处理和SEH链有关吧?可是看OD的SEH链半天也没觉得他和回调函数的代码定位有啥关系。
2010-3-22 21:40
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
18
看堆栈里面就有啊…… ExceptionHandler
2010-3-22 21:42
0
雪    币: 119
活跃值: (10)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
19
谢谢啦!我再琢磨琢磨!
2010-3-23 13:35
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
小搞了一下   



1.rar
上传的附件:
2010-3-25 01:32
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
dede找到确定的入品点,OD 载入F9 程序错误。晕
2010-3-29 15:03
0
游客
登录 | 注册 方可回帖
返回
//