首页
社区
课程
招聘
[推荐]非常简单的一个Crackme,欢迎爆破跟踪
发表于: 2010-1-17 03:39 10151

[推荐]非常简单的一个Crackme,欢迎爆破跟踪

2010-1-17 03:39
10151
第二个crackme,由于第一个cm失败了,这个有所改良,欢迎爆破跟踪,顺祝破解顺利,欢迎指教.


测试
hystat
da70d921f219

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
弄了一晚上,累死我了...
2010-1-17 03:40
0
雪    币: 245
活跃值: (93)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
3
把关程序的部分nop掉....虽然会导致程序没法关了
随便改改 睡醒再搞
上传的附件:
2010-1-17 04:50
0
雪    币: 0
活跃值: (984)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
无视你的反调试,你那反调试检测PEB的吧?
2010-1-17 05:05
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
下图为爆破注册



爆破位置
/*45510D*/ cmp al, byte ptr [edx+ebx-0x1] //比较用户名十六进制ASCII码,AL 注册码的两位|edx+ebx-0x1 异或结果
/*455111*/ jnz short 00455178 //结果相等正确不跳,循环验证第二位依次比较
将cmp al, byte ptr [edx+ebx-0x1] 改为 cmp al, al 即可,就是将正确的和正确的比较 ,结果自然正确呵呵!

文件CRC效验
/*4552B7*/ push eax
/*4552B8*/ call <jmp.&proc.GetFileCRC>
/*4552BD*/ mov ebx, eax
/*4552BF*/ call <jmp.&proc.ReturnCRC>
/*4552C4*/ cmp ebx, eax //EAX 原始CRC值 EBX 当前CRC值
/*4552C6*/ je short 004552D4
将cmp ebx, eax 改为 cmp eax, eax 即可,
也就是让它将原始CRC和原始CRC比较而不是比较当前的!这样就OK!!

---------------------------------

下图为算法注册


Name: xuefeng
Code: CA7CCF33F603E3




下面是算法分析
---------------------------------
按位取输入用户名字符的十六进制 ASCII码
KEY = B2 09 AA 55 93 6D 84 47
按位用KEY进行异或 KEY虽然只有8字节 因为用户名长度每个字符对应一个字节的KEY
如果超过8字节则循环用KEY异或
---------------------------------

B2 09 AA 55 93 6D 84 47 //异或用的KEY
{xor}
78 75 65 66 65 6E 67 //用户名十六进制ASCII码
{=}
CA 7C CF 33 F6 03 E3 //计算出正确的注册码


---------------------------------
注册码计算过程演示:

B2 xor 78 = CA
09 xor 75 = 7C
AA xor 65 = CF
55 xor 66 = 33
93 xor 65 = F6
6D xor 6E = 03
84 xor 67 = E3

注册码 = CA7CCF33F603E3

程序注册验证过程其实就是反向异或而已,从而计算出用户名!

B2 xor CA = 78 = x
09 xor 7C = 75 = u
AA xor CF = 65 = e
55 xor 33 = 66 = f
93 xor F6 = 65 = e
6D xor 03 = 6E = n
84 xor E3 = 67 = g

用户名 = xuefeng


以上便是我的分析,如有失误之处还请指教!
上传的附件:
2010-1-17 08:03
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢您的指点,学习了
因为CRC自校验不太懂,所以做出这么个畸形
想请大师指点一下CRC如何效检自身,我不明白程序在编译前并不知道自身在编译后的CRC值,那它如何检查自身CYC是否改动?
这里我无奈只有将CRC放入DLL中,在主程序中调用DLL函数ReturnCRC返回原始CRC再自与自身CRC比较.
2010-1-17 09:50
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=爱鸟;746894]把关程序的部分nop掉....虽然会导致程序没法关了
随便改改 睡醒再搞
[/QUOTE]

2010-1-17 09:52
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
是检测PEB的,是不是太脆弱了,能否指点一下,谢谢您
2010-1-17 09:54
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
呵呵 我也不是十分清楚,没有实践就没有发言权!所以就不说了,免得在误导了你!
2010-1-17 09:59
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
您的意思是程序运行的时候自已将计算到的CRC值写入本身?
谢谢您,我将再接再历
2010-1-17 10:06
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
哪能这么说,您太谦虚了,能得您指点我很开兴了
2010-1-17 10:08
0
雪    币: 7659
活跃值: (2293)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
不是谦虚,事实如此,没实践就没发言权!
留个QQ吧 ,没什么事时 一起交流!
2010-1-17 10:14
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我的QQ:39800752
2010-1-17 10:19
0
雪    币: 0
活跃值: (984)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
14
/*4552C4*/  cmp     ebx, eax   //EAX 原始CRC值 EBX 当前CRC值
/*4552C6*/  je      short 004552D4

楼主 应该在这个地方下点功夫了,如果把CRC原始值保存在EAX里面,这样做的话,让爆破者等于是不功自破了,为何不用动态的方式呢?
从程序运行逻辑上来看的话,检测点,已经到位了,强度还算不错,就是那个反调试的DLL,有待加强,我用了3种方法 过你的检测OD的方法

1:让EXE脱离你的DLL直接运行........OK
2:隐藏PEB,让你无法检测...........OK
3:给你程序下陷阱,自然而然就单跑EXE了............OK

追码过程,没详细的跟踪。

程序用的异常结构如此甚多,可能是delphi的特性吧!
2010-1-17 14:35
0
雪    币: 0
活跃值: (984)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
004552B4  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
004552B7  |.  50            push    eax
004552B8  |.  E8 B7FCFFFF   call    <jmp.&proc.GetFileCRC>
004552BD  |.  8BD8          mov     ebx, eax
004552BF  |.  E8 B8FCFFFF   call    <jmp.&proc.ReturnCRC>
004552C4      3BD8          cmp     ebx, eax
004552C6  |.  74 0C         je      short 004552D4

004552C4      3BD8          cmp     ebx, eax
004552C6      74 0C         je      short 004552D4

je      short 004552D4
|
jmp   

楼主可以尝试下用VMP的方法,保护关键代码段

有强度的逻辑,在配上好壳,起码能难倒一般的Creaker
2010-1-17 14:45
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
太谢谢您指点,继续努力加油!
2010-1-17 18:31
0
雪    币: 695
活跃值: (25)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
17
我也来凑凑热闹

pediy
c26cce3cea
2010-1-17 21:43
0
雪    币: 40
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个CRC位置是怎么找的?难道是慢慢地对比?不是吧。。我下ExitProcess断电总是慢了一步。。。
有没有什么好的办法找的这个CRC位置的?请教
2010-1-21 00:14
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
delphi写得东西直接用dede反编译就能看到各个窗体事件的地址,这个CRC是在formCreate中比较的
2010-1-21 12:37
0
雪    币: 72
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
我的努力啦!
2010-1-21 13:15
0
雪    币: 0
活跃值: (984)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
21
在exitpocess 上断的话,直接返回,肯定找的慢,搜索字符串上,会发现些突破的
2010-1-25 16:45
0
游客
登录 | 注册 方可回帖
返回