能力值:
(RANK:410 )
|
-
-
2 楼
只给出这些别人是无法给你答案。下面红色标志的地方你必须告诉别人都是些什么才行。
mov eax, dword ptr [ebp-4] ; 这里保存着什么
mov al, byte ptr [eax+ebx]
xor al, 20
mov esi, eax
and esi, 0FF
push dword ptr [ebp-8] ; 这里保存着什么
lea eax, dword ptr [ebp-C] ; 这里保存着什么
mov edx, esi
test edx, edx
jns short 004F7626 ; 这里跳向哪里?
add edx, 0F
sar edx, 4
mov edx, dword ptr [edx*4+567674] ;这个似乎是一个表,你必须给出这个表的数据
mov dl, byte ptr [edx+5676F4] ;这个似乎也是一个表,你也必须给出这个表的数据才行。
call 004049AC ;这个Call是干什么的?实现什么功能
push dword ptr [ebp-C] ; 这里保存着什么
lea eax, dword ptr [ebp-10] ; 这里保存着什么
and esi, 8000000F
jns short 004F764E ; 这里跳向哪里?
dec esi
or esi, FFFFFFF0
inc esi
mov edx, dword ptr [esi*4+567674] ;这个似乎是一个表,你必须给出这个表的数据
mov dl, byte ptr [edx+5676F4] ;这个似乎也是一个表,你也必须给出这个表的数据才行。
call 004049AC
push dword ptr [ebp-10] ; 这里保存着什么
lea eax, dword ptr [ebp-8] ; 这里保存着什么
mov edx, 3
call 00404B44 ;这个Call是干什么的?实现什么功能
inc ebx
dec edi
jnz short 004F7607 从头再一次循环
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
mov eax, dword ptr [ebp-4] ; 序列号ASCII
mov al, byte ptr [eax+ebx] ;取第一位序列号的ASCII(十六进制)如:4D = M , 49 = I
xor al, 20 ;第一位序列号的ASCII(十六进制) xor 20 (十六位计算)
mov esi, eax ;xor值为内存地址
and esi, 0FF ;内存地址 And 0FF (不足2位以0补充)
push dword ptr [ebp-8] ;存计算出的注册码
lea eax, dword ptr [ebp-C] ;这里无所谓
mov edx, esi ;这里无所谓
test edx, edx ;这里无所谓
jns short 004F7626 ; 这里跳向 sar edx, 4
add edx, 0F
sar edx, 4 ; And值右移 , (变成第一位值,前面xor值如果是64,则取6,如果是59,取5)
mov edx, dword ptr [edx*4+567674] ;右移后的第一位值乘 4 +567674 = 内存地址中的值 '注册码就是这个值
mov dl, byte ptr [edx+5676F4] ;这里无所谓
call 004049AC ;这里无所谓
push dword ptr [ebp-C] ; 这里无所谓
lea eax, dword ptr [ebp-10] ; 这里无所谓
and esi, 8000000F ;第二位值 and 8000000F
jns short 004F764E ; 这里跳向mov edx, dword ptr [esi*4+567674]
dec esi
or esi, FFFFFFF0
inc esi
mov edx, dword ptr [esi*4+567674] ;and 乘 4 +567674 = 内存地址中的值 '注册码就是这个值
mov dl, byte ptr [edx+5676F4] ;这里无所谓
call 004049AC ;这里无所谓
push dword ptr [ebp-10] ; 这里无所谓
lea eax, dword ptr [ebp-8] ; 这里无所谓
mov edx, 3 ;这里无所谓
call 00404B44 ;这里无所谓
inc ebx ;这里无所谓
dec edi ;这里无所谓
jnz short 004F7607 从头再一次循环,取下位序列号
全部过程:序列号 -> 取第一位序列号ASCII码的(十六位) -> xor 20 -> and 0FF(不足2位前面0补充)
-> 取第一位 -> 第一位*4+567674(取内存地址值) -> 存注册码 ->
-> 取第二位 -> 第二位*4+567674(取内存地址值) -> 存注册码 ->
循环取第二位序列号
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这是表值
00567674 06 00 00 00 0C 00 00 00 05 00 00 00 09 00 00 00 ..............
00567684 0A 00 00 00 00 00 00 00 0D 00 00 00 08 00 00 00 ...............
00567694 0F 00 00 00 03 00 00 00 0E 00 00 00 04 00 00 00 ............
005676A4 02 00 00 00 0B 00 00 00 01 00 00 00 07 00 00 00 ............
005676B4 05 00 00 00 0E 00 00 00 0C 00 00 00 09 00 00 00 ..............
005676C4 0B 00 00 00 02 00 00 00 00 00 00 00 0F 00 00 00 .............
005676D4 07 00 00 00 03 00 00 00 04 00 00 00 0D 00 00 00 .............
005676E4 01 00 00 00 06 00 00 00 0A 00 00 00 08 00 00 00 .............
005676F4 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 0123456789ABCDEF
|
能力值:
(RANK:410 )
|
-
-
6 楼
; 明白了
; 下面的代码可以用刘健英的KeyMake生成注册机。
.const
.data
szHomePage db "http://www.365hz.net",0
szEmail db "mailto:ljyljx@163.com",0
szErrMess db "输入的序列号不正确!",0
ddTable dd 06h,0ch,05h,09h
dd 0ah,00h,0dh,08h
dd 0fh,03h,0eh,04h
dd 02h,0bh,01h,07h
dd 05h,0eh,0ch,09h
dd 0bh,02h,00h,0fh
dd 07h,03h,04h,0dh
dd 01h,06h,0ah,08h
szFormat db "%X",0
szTmpBuffer db 4 dup(0)
szSnBuffer db 255 dup(0)
.code
xor ebx,ebx
invoke lstrlen,eax
mov edi,eax
Log_Start:
lea eax,hInput1
mov al,byte ptr [eax+ebx]
xor al,20h
mov esi,eax
and esi,0ffh
mov edx,esi
test edx,edx
jns @f
add edx,0fh
@@:
sar edx,4
mov edx,dword ptr [edx*4+ddTable]
invoke wsprintf,offset szTmpBuffer,offset szFormat,edx
invoke lstrcat,offset szSnBuffer,offset szTmpBuffer
and esi,8000000fh
jns @f
dec esi
or esi,0fffffff0h
inc esi
@@:
mov edx,dword ptr [esi*4+ddTable]
invoke wsprintf,offset szTmpBuffer,offset szFormat,edx
invoke lstrcat,offset szSnBuffer,offset szTmpBuffer
inc ebx
dec edi
jnz Log_Start
lea eax,szSnBuffer
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
ok....谢谢了!
|