能力值:
( LV2,RANK:10 )
|
-
-
2 楼
期待贴主的第一个源码CrackMe出现
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
实在太菜了……
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我发现我越来越坏了!
主要是我快下班了,没时间了就这样吧,哈哈```反正我是国家免检菜鸟
|
能力值:
( LV5,RANK:60 )
|
-
-
5 楼
这么小的 东东 你也暴??
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
哈哈。对吗?
我只是把 字符串改成 TRUE 而以哈哈。。。
和上次那个CRACKME真像。马上要下班了没办法哎。
所以说我越来越坏了```
|
能力值:
( LV13,RANK:760 )
|
-
-
7 楼
正确的结果是显示OK!!
这个结果是经过加密了的,如果正确的话即会显示。目前我已经把算法搞明白了,不过楼主给出的算法好像是无解的。
004003D6 |> /385C0D DC |/cmp byte ptr [ebp+ecx-24], bl
004003DA |. |74 4F ||je short 0040042B
004003DC |. |41 ||inc ecx
004003DD |. |3BC8 ||cmp ecx, eax
004003DF |.^\7E F5 |\jle short 004003D6
004003E1 305C15 DC xor byte ptr [ebp+edx-24], bl
这一句相当于将余数对于的数组下标+1位取反,而前面的判断是此位对应的数字必须不能为1,
那么如果前面是 0 0 0 1
而取反对应的是 0001X
最后比较长度为10,这已经出现数组越界的情况了:
004003F0 |> /385C05 DC /cmp byte ptr [ebp+eax-24], bl
个人认为FindLakes女士可能把这两句写错了,造成无解的情况,正确情况应该是
cmp byte ptr [ebp+eax-25], bl
而上面的异或也应该是
004003E1 305C15 DC xor byte ptr [ebp+edx-25], bl
这样的话,才有可能将数组中所有为1位全部清零,从而走向正确的分支,如果按Findlakes女士原来的代码走,将永远也不可能实现所想要的结果,也就是说,永远也得不到正确的答案。
|
能力值:
( LV9,RANK:180 )
|
-
-
8 楼
[QUOTE=不问年少;601183]正确的结果是显示OK!!
这个结果是经过加密了的,如果正确的话即会显示。目前我已经把算法搞明白了,不过楼主给出的算法好像是无解的。
004003D6 |> /385C0D DC |/cmp byte ptr [ebp+ecx-24], bl
004003DA ...[/QUOTE]
请再想仔细一点.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
为什么用OD载入后Ctrl+N 看不到GetDialogText?但是在入口的上面我却找到了以下代码
0040049C |. 6A 10 push 10 ; /Count = 10 (16.)
0040049E |. 50 push eax ; |Buffer
0040049F |. 68 E9030000 push 3E9 ; |ControlID = 3E9 (1001.)
004004A4 |. FF75 08 push dword ptr [ebp+8] ; |hWnd
004004A7 |. FFD6 call esi ; \GetDlgItemTextA
004004A9 |. 85C0 test eax, eax
004004AB |. 74 6C je short 00400519
004004AD |. 8D85 E8EFFFFF lea eax, dword ptr [ebp-1018]
004004B3 |. 68 00100000 push 1000 ; /Count = 1000 (4096.)
004004B8 |. 50 push eax ; |Buffer
004004B9 |. 68 EA030000 push 3EA ; |ControlID = 3EA (1002.)
004004BE |. FF75 08 push dword ptr [ebp+8] ; |hWnd
004004C1 |. FFD6 call esi ; \GetDlgItemTextA
明明显示是GetDlgItemTextA为什么OD不显示有呢 ?楼主用的什么方法 而且我也没有查出是用的什么壳?希望哪位大牛能帮忙解释下?
|
能力值:
( LV9,RANK:180 )
|
-
-
10 楼
想到了没 ?
这东西有点类似河内塔, 不完全像.
CM规则: 欲 not 的那个的前面需为 1 , 再前面需全为 0
username 你打 sessiondiy
序号你打 2678161590 , 在OllyDbg内观察可由 111110011排成000010011
1 2 3 4 5 6 7 8 9
1 1 1 1 1 0 0 1 1 <- sessiondiy 初值
1 0 1 1 1 0 0 1 1
0 0 1 1 1 0 0 1 1
0 0 1 0 1 0 0 1 1
1 0 1 0 1 0 0 1 1
1 1 1 0 1 0 0 1 1
0 1 1 0 1 0 0 1 1
0 1 0 0 1 0 0 1 1
1 1 0 0 1 0 0 1 1
1 0 0 0 1 0 0 1 1
0 0 0 0 1 0 0 1 1
/--接下来的变换,序号我就不抓了--\
1 0 0 0 1 0 0 1 1
1 1 0 0 1 0 0 1 1
0 1 0 0 1 0 0 1 1
0 1 1 0 1 0 0 1 1
1 1 1 0 1 0 0 1 1
1 0 1 0 1 0 0 1 1
0 0 1 0 1 0 0 1 1
0 0 1 1 1 0 0 1 1
1 0 1 1 1 0 0 1 1
1 1 1 1 1 0 0 1 1
0 1 1 1 1 0 0 1 1
0 1 0 1 1 0 0 1 1
1 1 0 1 1 0 0 1 1
1 0 0 1 1 0 0 1 1
0 0 0 1 1 0 0 1 1
0 0 0 1 0 0 0 1 1
1 0 0 1 0 0 0 1 1
1 1 0 1 0 0 0 1 1
0 1 0 1 0 0 0 1 1
0 1 1 1 0 0 0 1 1
1 1 1 1 0 0 0 1 1
1 0 1 1 0 0 0 1 1
0 0 1 1 0 0 0 1 1
0 0 1 0 0 0 0 1 1
1 0 1 0 0 0 0 1 1
1 1 1 0 0 0 0 1 1
0 1 1 0 0 0 0 1 1
0 1 0 0 0 0 0 1 1
1 1 0 0 0 0 0 1 1
1 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1 0
/--再来就非人肉在做的了, 这是电脑在做的事--\
到0 0 0 0 0 0 0 0 0 就成功了
|
能力值:
( LV12,RANK:210 )
|
-
-
11 楼
|
能力值:
( LV13,RANK:760 )
|
-
-
12 楼
强人,我是有这种感觉,没想到解,或者是我自己认为无解,没想到居然有答案呢。
|
能力值:
( LV13,RANK:760 )
|
-
-
13 楼
谢谢sessiondiy大侠的指点,我对这种数学问题的确是不大在行啊。我认为每次将余数对应位的数字取反而要保证前一位必须为1,再前面必须为0,这样的话什么时候才能将前面的1变为0呢,呵呵,要将数组全部置0才能过关,但是每次老是将后一位取反,这算法怪厉害的,挺复杂,我昨天还认为是findlakes女士写错了呢。 实在是汗颜
我想的是将前一位取反,这样的话问题就简单多了,呵呵,最坏的情况也不超过9位注册码。
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
我也得到了OK.直接把里面几个跳转直接NOP就得到了.汗
|
能力值:
( LV9,RANK:850 )
|
-
-
15 楼
这跟比赛那题一样
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
啊? 一k多就那么厉害
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
再问一下 为什么我写一个很简单的程序也要一百多k??
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
look 找到的东西
00400240 /$ 57 PUSH EDI
00400241 |. 8B7C24 08 MOV EDI,DWORD PTR SS:[ESP+8]
00400245 |. 803F FF CMP BYTE PTR DS:[EDI],0FF
00400248 74 5F JNE SHORT CrackMe.004002A9
0040024A |. 8A4F 01 MOV CL,BYTE PTR DS:[EDI+1]
0040024D |. 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
00400251 |. 80F1 25 XOR CL,25
00400254 |. 8808 MOV BYTE PTR DS:[EAX],CL
00400256 |. 8A4F 02 MOV CL,BYTE PTR DS:[EDI+2]
00400259 |. 80F1 9A XOR CL,9A
0040025C |. 8848 01 MOV BYTE PTR DS:[EAX+1],CL
0040025F |. 8A4F 03 MOV CL,BYTE PTR DS:[EDI+3]
00400262 |. 80F1 F3 XOR CL,0F3
00400265 |. 8848 02 MOV BYTE PTR DS:[EAX+2],CL
00400268 |. 8A4F 04 MOV CL,BYTE PTR DS:[EDI+4]
0040026B |. 80F1 6F XOR CL,6F
0040026E |. 8848 03 MOV BYTE PTR DS:[EAX+3],CL
00400271 |. 8A4F 05 MOV CL,BYTE PTR DS:[EDI+5]
00400274 |. 80F1 82 XOR CL,82
00400277 |. 8848 04 MOV BYTE PTR DS:[EAX+4],CL
0040027A |. 8A4F 06 MOV CL,BYTE PTR DS:[EDI+6]
0040027D |. 80F1 DA XOR CL,0DA
00400280 |. 8848 05 MOV BYTE PTR DS:[EAX+5],CL
00400283 |. 8A4F 07 MOV CL,BYTE PTR DS:[EDI+7]
00400286 |. 80F1 72 XOR CL,72
00400289 |. 8848 06 MOV BYTE PTR DS:[EAX+6],CL
0040028C |. 8A4F 08 MOV CL,BYTE PTR DS:[EDI+8]
0040028F |. 80F1 FE XOR CL,0FE
00400292 |. 8848 07 MOV BYTE PTR DS:[EAX+7],CL
00400295 |. 8A4F 09 MOV CL,BYTE PTR DS:[EDI+9]
00400298 |. 80F1 C9 XOR CL,0C9
0040029B |. 8848 08 MOV BYTE PTR DS:[EAX+8],CL
0040029E |. 8A4F 0A MOV CL,BYTE PTR DS:[EDI+A]
004002A1 |. 80F1 B7 XOR CL,0B7
004002A4 |. 5F POP EDI
004002A5 |. 8848 09 MOV BYTE PTR DS:[EAX+9],CL
004002A8 |. C3 RETN
004002A9 |> 83C9 FF OR ECX,FFFFFFFF
004002AC |. 33C0 XOR EAX,EAX
004002AE |. F2:AE REPNE SCAS BYTE PTR ES:[EDI]
004002B0 |. F7D1 NOT ECX
004002B2 |. 2BF9 SUB EDI,ECX
004002B4 |. 56 PUSH ESI
004002B5 |. 8BC1 MOV EAX,ECX
004002B7 |. 8BF7 MOV ESI,EDI
004002B9 |. 8B7C24 10 MOV EDI,DWORD PTR SS:[ESP+10]
004002BD |. C1E9 02 SHR ECX,2
004002C0 |. F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
004002C2 |. 8BC8 MOV ECX,EAX
004002C4 |. 83E1 03 AND ECX,3
004002C7 |. F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
004002C9 |. 5E POP ESI
004002CA |. 5F POP EDI
004002CB \. C3 RETN
|