能力值:
( LV3,RANK:30 )
|
-
-
2 楼
name: lgjxj
code: lgjxjgxl
很简单的 CM ,下面就是处理的位置了,我没空看了
——————————————————————————
0045069C |> /33DB /xor ebx, ebx
0045069E |. |BF 801D4500 |mov edi, 00451D80
004506A3 |> |8D45 88 |/lea eax, dword ptr [ebp-78]
004506A6 |. |8B55 F8 ||mov edx, dword ptr [ebp-8] ; 用户名补足8位
004506A9 |. |8A5432 FF ||mov dl, byte ptr [edx+esi-1] ; 用户名字符
004506AD |. |E8 923AFBFF ||call 00404144
004506B2 |. |8B45 88 ||mov eax, dword ptr [ebp-78]
004506B5 |. |50 ||push eax
004506B6 |. |8D55 84 ||lea edx, dword ptr [ebp-7C]
004506B9 |. |8BC3 ||mov eax, ebx
004506BB |. |E8 DC75FBFF ||call 00407C9C
004506C0 |. |8B55 84 ||mov edx, dword ptr [ebp-7C]
004506C3 |. |58 ||pop eax
004506C4 |. |E8 9F3CFBFF ||call 00404368
004506C9 |. |75 0E ||jnz short 004506D9
004506CB |. |8D45 F8 ||lea eax, dword ptr [ebp-8]
004506CE |. |E8 A13DFBFF ||call 00404474
004506D3 |. |8A17 ||mov dl, byte ptr [edi]
004506D5 |. |885430 FF ||mov byte ptr [eax+esi-1], dl
004506D9 |> |43 ||inc ebx
004506DA |. |47 ||inc edi
004506DB |. |83FB 0A ||cmp ebx, 0A
004506DE |.^|75 C3 |\jnz short 004506A3
004506E0 |. |8B45 F8 |mov eax, dword ptr [ebp-8]
004506E3 |. |8A5C30 FF |mov bl, byte ptr [eax+esi-1]
004506E7 |. |8BC3 |mov eax, ebx
004506E9 |. |3C 41 |cmp al, 41
004506EB |. |72 17 |jb short 00450704
004506ED |. |3C 5A |cmp al, 5A
004506EF |. |77 13 |ja short 00450704
004506F1 |. |8D45 F8 |lea eax, dword ptr [ebp-8]
004506F4 |. |E8 7B3DFBFF |call 00404474
004506F9 |. |33D2 |xor edx, edx
004506FB |. |8AD3 |mov dl, bl
004506FD |. |83C2 20 |add edx, 20
00450700 |. |885430 FF |mov byte ptr [eax+esi-1], dl
00450704 |> |46 |inc esi
00450705 |. |83FE 09 |cmp esi, 9
00450708 |.^\75 92 \jnz short 0045069C
0045070A |. 8D55 80 lea edx, dword ptr [ebp-80]
0045070D |. 8B45 FC mov eax, dword ptr [ebp-4]
00450710 |. 8B80 FC020000 mov eax, dword ptr [eax+2FC]
00450716 |. E8 55EEFDFF call 0042F570
0045071B |. 8B45 80 mov eax, dword ptr [ebp-80]
0045071E |. 8B55 F8 mov edx, dword ptr [ebp-8]
00450721 |. E8 423CFBFF call 00404368 最后比较的 CALL
00450726 |. 75 10 jnz short 00450738
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
当然很简单了,没敢向麻烦的写,怕自己跟不下来
结果,虽然简单,还是跟不下来,郁闷
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
过程刚开始就来了一个16次循环,这个是什么意思呢???
00450428 /. 55 push ebp ; 点击注册按钮后的处理流程
00450429 |. 8BEC mov ebp, esp
0045042B |. B9 10000000 mov ecx, 10
00450430 |> 6A 00 /push 0
00450432 |. 6A 00 |push 0
00450434 |. 49 |dec ecx
00450435 |.^ 75 F9 \jnz short 00450430
我记得程序中没这么写啊
|
能力值:
( LV9,RANK:490 )
|
-
-
5 楼
是不是给你的局部变量清理地方呢?我没分析,只是猜测
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
恩,是有一个SETLENGTH(AA,8) 这个语句,可是这是给AA弄8个字节的空间,不是16个啊
还有这个语句是什么意思
00450562 |. 8D55 C4 lea edx, dword ptr [ebp-3C]
00450565 |. 8B45 FC mov eax, dword ptr [ebp-4]
00450568 |. 8B80 F8020000 mov eax, dword ptr [eax+2F8] ; EDIT1.HANDLE
0045056E |. E8 FDEFFDFF call 0042F570
00450573 |. FF75 C4 push dword ptr [ebp-3C]
00450576 |. 8D55 BC lea edx, dword ptr [ebp-44]
00450579 |. 8B45 FC mov eax, dword ptr [ebp-4]
0045057C |. 8B80 F8020000 mov eax, dword ptr [eax+2F8] ; EDIT1.HANDLE
00450582 |. E8 E9EFFDFF call 0042F570
00450587 |. 8B45 BC mov eax, dword ptr [ebp-44]
0045058A |. 8A50 01 mov dl, byte ptr [eax+1]
0045058D |. 8D45 C0 lea eax, dword ptr [ebp-40]
00450590 |. E8 AF3BFBFF call 00404144
一堆的EBP+- 一堆的MOV LEA CALL 这都怎么分析啊 ???
就是我自己写的,我也看不懂啊
|
能力值:
( LV9,RANK:490 )
|
-
-
7 楼
一般情况下,EBP+XXX 是在取所分析函数的参数,EBP-XXX是在操作所分析函数的局部变量.
LEA 是用来取地址的,不知道你用什么语言写的,相当于取指针,可能不太确切.你多观察一下每条指令执行完,各操作数的变化就会发现他在做什么了.
搜索了一下 SetLongth 好像是在给数组分配空间 ,其实上面的程序分配的可不仅仅是16个字节,而是1次循环就8个字节了。之所以这样分配应该跟你的数组大小相关吧
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
原代码没在身边
我的大致思路就是,取用户名,如果用户长度小于4 ,程序直接退出
如果大于8 截取前8位
如果=4 那么用输入的注册名的第2位第4位第 1位第 3位 补足8位
如果=5 那么用输入的注册名的第2位第4位第 1位 补足8位
如果=6 那么用输入的注册名的第2位第4位 补足8位
如果=7 那么用输入的注册名的第2位 补足8位
如果有数字,则另有一个表,采用查表法替代字符
字符补完8位,就是序列号了,我只写到这,没敢往深了写
|