首页
社区
课程
招聘
[原创]刚出炉的汇编CM,欢迎品尝[已修正]
发表于: 2010-2-28 18:01 9092

[原创]刚出炉的汇编CM,欢迎品尝[已修正]

2010-2-28 18:01
9092
rt
未加壳
未加密
字符串也没加密。

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (24)
雪    币: 246
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
怎么一点check it就出错了啊?有长度限制还是防破解措施?
2010-2-28 18:09
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
能不能告诉一下注册成功是什么样子?
2010-2-28 18:29
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
经过我的分析,终于发现原来作者是自定义WIN消息来计算注册码的。。。
2010-2-28 18:37
0
雪    币: 135
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
弹出正确提示,
验证很简单的,几乎没有固定算法,正好大家练练手,同时也是互相提高
2010-2-28 18:43
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
6
06AL0C0506
2010-3-1 02:43
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
7
凌晨两点多了还能爬,真是精力过人啊!
2010-3-1 07:33
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
我妈叫我做完这题再睡觉
2010-3-1 07:42
0
雪    币: 135
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
和我自己调试的CODE,一模一样
2010-3-1 08:36
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
10
结拜吧. 你当老大.
2010-3-1 09:16
0
雪    币: 279
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
S 大 技术牛,为人还挺风趣幽默的
2010-3-1 09:47
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
晕了,不知道为什么我的OD里没有显示“YOU ARE RIGHT”
2010-3-3 20:25
0
雪    币: 135
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
因为代码段没有显示调用这个数据的地址,所以你通过串参考是找不到的。
2010-3-4 11:06
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
有sendmessage就是自定义消息吗,能多提示一点这个creakme的破解过程吗?
2010-3-4 13:55
0
雪    币: 1491
活跃值: (985)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
15
我提示一点

004011B4   .  8D85 00FFFFFF lea     eax, dword ptr [ebp-100]
004011BA   .  66:8B18       mov     bx, word ptr [eax]
004011BD   .  2AFB          sub     bh, bl
004011BF   .  0FB6DF        movzx   ebx, bh
004011C2   .  81C3 BD070000 add     ebx, 7BD
004011C8   .  A3 1E314000   mov     dword ptr [40311E], eax
004011CD   .  C705 1A314000>mov     dword ptr [40311A], 0
004011D7   .  891D 16314000 mov     dword ptr [403116], ebx
004011DD   .  8B5D 08       mov     ebx, dword ptr [ebp+8]
004011E0   .  891D 12314000 mov     dword ptr [403112], ebx
004011E6   .  68 57134000   push    00401357
004011EB   .  40            inc     eax
004011EC   .  40            inc     eax
004011ED   .  A3 1E314000   mov     dword ptr [40311E], eax
004011F2   .  66:8B18       mov     bx, word ptr [eax]
004011F5   .  2AFB          sub     bh, bl
004011F7   .  0F8F 96010000 jg      00401393
2010-3-4 14:25
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
已经找到这里了,这里好像就是把第3位和第4位做个比较,再跳转嘛!
2010-3-4 14:41
0
雪    币: 1489
活跃值: (1068)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
win32 啊.....
2010-3-5 22:20
0
雪    币: 411
活跃值: (252)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
注册码:17bm6806

前面两个比较必须是
先发送msg==7c3,再发送msg==7b8  (因为可见字符十六进制大小加减限制)

过了这两个message比较,后面会算出一个you are right 字符串的偏移,之后就可以直接发送msg==744,然后弹成功对话框了

注册码长度也是可变的,可以最短8个字符~~
2010-3-6 16:43
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
太牛了,你的注册码直接让程序崩溃了!
2010-3-6 16:46
0
雪    币: 411
活跃值: (252)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
不好意思,刚才计算有误,已经改过来了

注册码可以是
17bm6806 06al6806 28CN68AG 等等等~~~
2010-3-6 17:11
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
还是很牛啊,稍微写一下破解过程吧!!
2010-3-6 17:14
0
雪    币: 411
活跃值: (252)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
我用的比较笨的方法,程序刚开始获取函数地址等全部无视
1.
直接来到这里:
00401558   .  6A 00         push    0                                ; /lParam = NULL
0040155A   .  68 5B114000   push    0040115B                         ; |DlgProc = CrackMe_.0040115B
0040155F   .  6A 00         push    0                                ; |hOwner = NULL
00401561   .  68 E8030000   push    3E8                              ; |pTemplate = 3E8
00401566   .  FF35 00304000 push    dword ptr [403000]               ; |hInst = NULL
0040156C   .  E8 01000000   call    <jmp.&user32.DialogBoxParamA>    ; \DialogBoxParamA

这里可以得到对话框消息处理过程地址:0040115B

2.
再看点击按钮处的代码
0040116A   .  3D 11010000   cmp     eax, 111                         ;  Switch (cases 10..7C3)
0040116F   .  0F85 92000000 jnz     00401207
00401175   .  8B45 08       mov     eax, dword ptr [ebp+8]           ;  Case 111 of switch 0040116A
00401178   .  A3 B0304000   mov     dword ptr [4030B0], eax
0040117D   .  8B45 10       mov     eax, dword ptr [ebp+10]
00401180   .  66:3D EC03    cmp     ax, 3EC

004011A0   .  50            push    eax                              ;  得到输入的字符存放到局部变量[ebp-100] 012FA70
004011A1   .  68 E9030000   push    3E9
004011A6   .  FF75 08       push    dword ptr [ebp+8]
004011A9   .  68 B4114000   push    004011B4
004011AE   .- FF25 4D304000 jmp     dword ptr [40304D]               ;  user32.GetDlgItemTextA
004011B4   .  8D85 00FFFFFF lea     eax, dword ptr [ebp-100]         ;  字符串指针入eax
004011BA   .  66:8B18       mov     bx, word ptr [eax]               ;  字符串第一个字入bx
004011BD   .  2AFB          sub     bh, bl                           ;  字符串第一个字高8位减低8位,入bh
004011BF   .  0FB6DF        movzx   ebx, bh                          ;  bh零扩展传送ebx
004011C2   .  81C3 BD070000 add     ebx, 7BD                         ;  ebx加7bd
004011C8   .  A3 1E314000   mov     dword ptr [40311E], eax          ;  字串指针入全局变量
004011CD   .  C705 1A314000>mov     dword ptr [40311A], 0
004011D7   .  891D 16314000 mov     dword ptr [403116], ebx          ;  ebx入全局变量
004011DD   .  8B5D 08       mov     ebx, dword ptr [ebp+8]
004011E0   .  891D 12314000 mov     dword ptr [403112], ebx          ;  窗口句柄入全局变量
004011E6   .  68 57134000   push    00401357
004011EB   .  40            inc     eax
004011EC   .  40            inc     eax                              ;  eax加2.指向字串的第三个字节
004011ED   .  A3 1E314000   mov     dword ptr [40311E], eax          ;  指向字串的第三个字节指针入全局变量
004011F2   .  66:8B18       mov     bx, word ptr [eax]               ;  字串第二个字入bx
004011F5   .  2AFB          sub     bh, bl                           ;  字串第二个字高低字节相减入bh
004011F7   .  0F8F 96010000 jg      00401393                         ;  注册码第四个字节若大于第三个字节则跳

3.
可以看到得到字符串后程序经过一些计算会向对话框发送消息,这个时候看对话框过程中会处理哪些消息,除了一些系统消息和command消息外,有以下可疑消息需要处理:
0x74a
0x7c3
0x7b8
0x744
0x745

最后试着构造相应输入的字符串能够到这些消息处理的地方,便能看出端倪~~

说了这么多也差不多了
2010-3-6 17:40
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
原来这就是对话框事件和自定义消息。
楼上已经说得比教清楚了,我再说得具体一点,就是在注册码是8位的情况下,要求2位-1位=6,4位-3位=B,5位+6位=6E,8位-7位=6。

谢谢楼上的各位,特别是blackwhite对我的提示!!
2010-3-7 13:55
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
处理流程:1.bp dispatchmessagew函数,设条件断点[[esp+4]+4]==WM_LBUTTONUP,拦截鼠标单击消息(虽然程序里用了牛逼的方法隐藏函数调用,比如sendmessage,但是这个dispatchmessage可是没办法隐藏的,所以一下就能断到了)。
2.
00401558   .  6A 00         push    0                                ; /lParam = NULL
0040155A   .  68 5B114000   push    0040115B                         ; |DlgProc = CrackMe_.0040115B
0040155F   .  6A 00         push    0                                ; |hOwner = NULL
00401561   .  68 E8030000   push    3E8                              ; |pTemplate = 3E8
00401566   .  FF35 00304000 push    dword ptr [403000]               ; |hInst = NULL
0040156C   .  E8 01000000   call    <jmp.&user32.DialogBoxParamA>    ; \DialogBoxParamA
这段代码中很明显地给出了消息处理函数的地址DlgProc = CrackMe_.0040115B
3.来到0040115B处,经过几次的消息拦截,感觉到WM_COMMAND,即消息号为111h的消息就是处理注册码验证的消息,跟下去,验证算法应该就有了,具体是如何的俺没分析
请高手指正:)
2010-3-19 10:30
0
雪    币: 130
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
agal7<7<ag

从消息7BD开始,接下来消息分别是7C3,7B8,745,74A,744
构造字符串走以上的顺序即可。
2010-3-31 00:00
0
游客
登录 | 注册 方可回帖
返回
//