能力值:
(RANK:990 )
|
-
-
4 楼
汇编的行不行?从drizz的cryptohash库里提出来的:
;; RC5.ASM -- Implementation of RC5 in MASM
;; (C)opyLeft 2005 by drizz
;; P2 533MHz
;; -----------------------------------------
;; RC5Init: 825 cycles (589 if unrolled)
;; RC5Encrypt: 99 cycles
;; RC5Decrypt: 91 cycles
;; -----------------------------------------
.686
.model flat,stdcall
option casemap:none
RC5Init PROTO :DWORD
RC5Encrypt PROTO :DWORD,:DWORD
RC5Decrypt PROTO :DWORD,:DWORD
RC5UNROLL EQU <>
.const
RC5ROUNDS equ 12
RC5KEYLEN equ 16;bytes
RC5KR equ (2*(RC5ROUNDS+1))
RC5_P equ 0b7e15163h
RC5_Q equ 09e3779b9h
.data?
RC5_KEY dd RC5KR dup(?)
.code
; uses ecx
RC5SETUP macro A,B,kEy,_L
add A,B
add A,kEy
rol A,3
lea ecx,[A+B]
mov kEy,A
add B,A
add B,_L
rol B,cl
mov _L,B
endm
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
RC5Init proc pKey:DWORD
push ebp
push edi
push esi
push ebx
mov esi,[esp][1*4][4*4];pKey
sub esp,RC5KEYLEN
; copy to local buff
mov eax,[esi+0*4]
mov ebx,[esi+1*4]
mov ecx,[esi+2*4]
mov edx,[esi+3*4]
mov [esp+0*4],eax
mov [esp+1*4],ebx
mov [esp+2*4],ecx
mov [esp+3*4],edx
mov eax,RC5_P
mov edi,offset RC5_KEY
mov ecx,RC5_P+RC5_Q
xor edx,edx
.repeat
mov [edi][edx*4][0*4],eax
mov [edi][edx*4][1*4],ecx
add edx,1
lea eax,[ecx+RC5_Q]
add edx,1
lea ecx,[eax+RC5_Q]
.until edx == RC5KR
IFDEF RC5UNROLL
xor eax,eax
xor ebx,ebx
_edx = 0
_ebp = 0
repeat (3*RC5KR)/2
RC5SETUP eax,ebx,[edi][_edx*4][0*4],[esp][_ebp*4][0*4]
RC5SETUP eax,ebx,[edi][_edx*4][1*4],[esp][_ebp*4][1*4]
_edx = _edx + 2
_ebp = _ebp + 2
if _edx eq RC5KR
_edx = 0
endif
_ebp = _ebp and 3
endm
ELSE
xor eax,eax
xor ebx,ebx
xor edx,edx
xor ebp,ebp
xor esi,esi
.repeat
RC5SETUP eax,ebx,[edi+edx*4][0*4],[esp][ebp*4][0*4]
RC5SETUP eax,ebx,[edi+edx*4][1*4],[esp][ebp*4][1*4]
add edx,2
add ebp,2
cmp edx,RC5KR
sbb ecx,ecx
add esi,2
and edx,ecx
and ebp,3
.until esi >= 3*RC5KR
ENDIF
add esp,RC5KEYLEN
pop ebx
pop esi
pop edi
pop ebp
ret 1*4
RC5Init endp
RC5ENCAB macro key0,key1
mov ecx,ebx
xor eax,ebx
rol eax,cl
add eax,key0
mov ecx,eax
xor ebx,eax
rol ebx,cl
add ebx,key1
endm
RC5Encrypt proc pPlainText:DWORD,pCipherText:DWORD
push ebp
push edi
push esi
push ebx
mov esi,[esp][1*4][4*4];pPlainText
mov eax,[esi][0*4]
mov ebx,[esi][1*4]
add eax,[RC5_KEY][0*4]
add ebx,[RC5_KEY][1*4]
xi = 8
REPT RC5ROUNDS/2
mov ebp,[RC5_KEY+xi][0*4]
mov edx,[RC5_KEY+xi][1*4]
mov edi,[RC5_KEY+xi][2*4]
mov esi,[RC5_KEY+xi][3*4]
RC5ENCAB ebp,edx
RC5ENCAB edi,esi
xi = xi + 8*2
ENDM
mov edi,[esp][2*4][4*4];pCipherText
mov [edi][0*4],eax
mov [edi][1*4],ebx
pop ebx
pop esi
pop edi
pop ebp
ret 2*4
RC5Encrypt endp
RC5DECAB macro key1,key0
mov ecx,eax
sub ebx,key1
ror ebx,cl
xor ebx,eax
mov ecx,ebx
sub eax,key0
ror eax,cl
xor eax,ebx
endm
RC5Decrypt proc pCipherText:DWORD,pPlainText:DWORD
push ebp
push edi
push esi
push ebx
mov edx,[esp][1*4][4*4];pCipherText
mov eax,[edx][0*4]
mov ebx,[edx][1*4]
xi = RC5ROUNDS*8
REPT RC5ROUNDS/2
mov ebp,[RC5_KEY+xi][1*4]
mov edx,[RC5_KEY+xi][0*4]
xi = xi - 8
mov edi,[RC5_KEY+xi][1*4]
mov esi,[RC5_KEY+xi][0*4]
xi = xi - 8
RC5DECAB ebp,edx
RC5DECAB edi,esi
ENDM
sub eax,[RC5_KEY][0*4]
sub ebx,[RC5_KEY][1*4]
mov edx,[esp][2*4][4*4];pPlainText
mov [edx][0*4],eax
mov [edx][1*4],ebx
pop ebx
pop esi
pop edi
pop ebp
ret 2*4
RC5Decrypt endp
OPTION PROLOGUE:PROLOGUEDEF
OPTION EPILOGUE:EPILOGUEDEF
end
|
能力值:
( LV9,RANK:170 )
|
-
-
8 楼
00546E74 PUSH ECX ; 空,无数据
00546E75 LEA EAX,DWORD PTR SS:[EBP-B8]
00546E7B PUSH EDX ; 参2 001BAEE0 12345678 A01B1C88 87654321 8AD07447
00546E7C PUSH EAX ; 参1 001B5000 330F31E3 330F31E3 这就是我输入的假码
00546E7D CALL <Standard.完成带假码的多次运算>
; 参2 001BAEE0 12345678 A01B1C88 87654321 8AD07447
硬盘号 硬盘号
; 参1 001B5000 330F31E3 11223344 这就是我输入的假码
我输入的假码
005F0B10 >PUSH EBP ; 完成带假码的多次运算
005F0B11 MOV EBP,ESP
005F0B13 SUB ESP,8
005F0B16 PUSH <JMP.&MSVBVM60.__vbaExceptHandler> ; SE handler installation
005F0B1B MOV EAX,DWORD PTR FS:[0]
005F0B21 PUSH EAX
005F0B22 MOV DWORD PTR FS:[0],ESP
005F0B29 SUB ESP,68
005F0B2C PUSH EBX
005F0B2D PUSH ESI
005F0B2E PUSH EDI
005F0B2F MOV DWORD PTR SS:[EBP-8],ESP
005F0B32 MOV DWORD PTR SS:[EBP-4],Standard.00403958
005F0B39 PUSH 3
005F0B3B LEA EAX,DWORD PTR SS:[EBP-50]
005F0B3E XOR EDI,EDI
005F0B40 PUSH Standard.00433154
005F0B45 PUSH EAX
005F0B46 MOV DWORD PTR SS:[EBP-1C],EDI
005F0B49 MOV DWORD PTR SS:[EBP-20],EDI
005F0B4C MOV DWORD PTR SS:[EBP-24],EDI
005F0B4F MOV DWORD PTR SS:[EBP-2C],EDI
005F0B52 MOV DWORD PTR SS:[EBP-30],EDI
005F0B55 MOV DWORD PTR SS:[EBP-34],EDI
005F0B58 MOV DWORD PTR SS:[EBP-38],EDI
005F0B5B MOV DWORD PTR SS:[EBP-58],EDI
005F0B5E MOV DWORD PTR SS:[EBP-5C],EDI
005F0B61 MOV DWORD PTR SS:[EBP-60],EDI
005F0B64 MOV DWORD PTR SS:[EBP-64],EDI
005F0B67 MOV DWORD PTR SS:[EBP-68],EDI
005F0B6A CALL DWORD PTR DS:[<&MSVBVM60.__vbaAryConstruct2>] ; MSVBVM60.__vbaAryConstruct2
005F0B70 MOV EBX,DWORD PTR SS:[EBP+8]
005F0B73 MOV EAX,DWORD PTR DS:[EBX]
005F0B75 CMP EAX,EDI
005F0B77 JE SHORT Standard.005F0B9A
005F0B79 CMP WORD PTR DS:[EAX],1
005F0B7D JNZ SHORT Standard.005F0B9A
005F0B7F MOV ESI,DWORD PTR DS:[EAX+14]
005F0B82 MOV ECX,DWORD PTR DS:[EAX+10] ; 是参数个数吗??
005F0B85 NEG ESI
005F0B87 CMP ESI,ECX
005F0B89 JB SHORT Standard.005F0B91
005F0B8B CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0B91 LEA EAX,DWORD PTR DS:[ESI*4]
005F0B98 JMP SHORT Standard.005F0BA0
005F0B9A CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0BA0 MOV ECX,DWORD PTR DS:[EBX] ; 取来参数1的地址
005F0BA2 CMP ECX,EDI ; 为空不
005F0BA4 MOV EDX,DWORD PTR DS:[ECX+C] ; 取数据地址
005F0BA7 MOV EAX,DWORD PTR DS:[EDX+EAX] ; 取A1,假码
005F0BAA MOV DWORD PTR SS:[EBP-38],EAX
005F0BAD JE SHORT Standard.005F0BD5
005F0BAF CMP WORD PTR DS:[ECX],1
005F0BB3 JNZ SHORT Standard.005F0BD5
005F0BB5 MOV EDX,DWORD PTR DS:[ECX+14]
005F0BB8 MOV EAX,DWORD PTR DS:[ECX+10]
005F0BBB MOV ESI,1
005F0BC0 SUB ESI,EDX
005F0BC2 CMP ESI,EAX
005F0BC4 JB SHORT Standard.005F0BCC
005F0BC6 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0BCC LEA EAX,DWORD PTR DS:[ESI*4] ; 计数*4
005F0BD3 JMP SHORT Standard.005F0BDB
005F0BD5 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0BDB MOV ECX,DWORD PTR DS:[EBX] ; 取参数1的地址
005F0BDD MOV EBX,DWORD PTR SS:[EBP+C]
005F0BE0 MOV EDX,DWORD PTR DS:[ECX+C]
005F0BE3 MOV EAX,DWORD PTR DS:[EDX+EAX] ; 取A2,假码
005F0BE6 MOV DWORD PTR SS:[EBP-20],EAX
005F0BE9 MOV EAX,DWORD PTR DS:[EBX]
005F0BEB CMP EAX,EDI
005F0BED JE SHORT Standard.005F0C10
005F0BEF CMP WORD PTR DS:[EAX],1
005F0BF3 JNZ SHORT Standard.005F0C10
005F0BF5 MOV ESI,DWORD PTR DS:[EAX+14]
005F0BF8 MOV ECX,DWORD PTR DS:[EAX+10] ; 取参数2 的数据长度
005F0BFB NEG ESI
005F0BFD CMP ESI,ECX
005F0BFF JB SHORT Standard.005F0C07
005F0C01 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C07 LEA EAX,DWORD PTR DS:[ESI*4]
005F0C0E JMP SHORT Standard.005F0C16
005F0C10 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C16 MOV ECX,DWORD PTR DS:[EBX]
005F0C18 CMP ECX,EDI
005F0C1A MOV EDX,DWORD PTR DS:[ECX+C]
005F0C1D MOV EAX,DWORD PTR DS:[EDX+EAX] ; 参数2 的数据12345678
005F0C20 MOV DWORD PTR SS:[EBP-58],EAX
005F0C23 JE SHORT Standard.005F0C4B
005F0C25 CMP WORD PTR DS:[ECX],1
005F0C29 JNZ SHORT Standard.005F0C4B
005F0C2B MOV EDX,DWORD PTR DS:[ECX+14]
005F0C2E MOV EAX,DWORD PTR DS:[ECX+10]
005F0C31 MOV ESI,1
005F0C36 SUB ESI,EDX
005F0C38 CMP ESI,EAX
005F0C3A JB SHORT Standard.005F0C42
005F0C3C CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C42 LEA EAX,DWORD PTR DS:[ESI*4]
005F0C49 JMP SHORT Standard.005F0C51
005F0C4B CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C51 MOV ECX,DWORD PTR DS:[EBX]
005F0C53 CMP ECX,EDI
005F0C55 MOV EDX,DWORD PTR DS:[ECX+C] ; 数据
005F0C58 MOV EAX,DWORD PTR DS:[EDX+EAX] ; DS:[001BAEE4]=A01B1C88
005F0C5B MOV DWORD PTR SS:[EBP-5C],EAX
005F0C5E JE SHORT Standard.005F0C86
005F0C60 CMP WORD PTR DS:[ECX],1
005F0C64 JNZ SHORT Standard.005F0C86
005F0C66 MOV EDX,DWORD PTR DS:[ECX+14]
005F0C69 MOV EAX,DWORD PTR DS:[ECX+10]
005F0C6C MOV ESI,2
005F0C71 SUB ESI,EDX
005F0C73 CMP ESI,EAX
005F0C75 JB SHORT Standard.005F0C7D
005F0C77 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C7D LEA EAX,DWORD PTR DS:[ESI*4]
005F0C84 JMP SHORT Standard.005F0C8C
005F0C86 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0C8C MOV ECX,DWORD PTR DS:[EBX]
005F0C8E CMP ECX,EDI
005F0C90 MOV EDX,DWORD PTR DS:[ECX+C] ; 取参数2的数据
005F0C93 MOV EAX,DWORD PTR DS:[EDX+EAX] ; 87654321
005F0C96 MOV DWORD PTR SS:[EBP-60],EAX
005F0C99 JE SHORT Standard.005F0CC1
005F0C9B CMP WORD PTR DS:[ECX],1
005F0C9F JNZ SHORT Standard.005F0CC1
005F0CA1 MOV EDX,DWORD PTR DS:[ECX+14]
005F0CA4 MOV EAX,DWORD PTR DS:[ECX+10]
005F0CA7 MOV ESI,3
005F0CAC SUB ESI,EDX
005F0CAE CMP ESI,EAX
005F0CB0 JB SHORT Standard.005F0CB8
005F0CB2 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0CB8 LEA EAX,DWORD PTR DS:[ESI*4]
005F0CBF JMP SHORT Standard.005F0CC7
005F0CC1 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsError>] ; MSVBVM60.__vbaGenerateBoundsError
005F0CC7 MOV ECX,DWORD PTR DS:[EBX]
005F0CC9 MOV EDX,DWORD PTR DS:[ECX+C]
005F0CCC MOV ECX,DWORD PTR SS:[EBP+10]
005F0CCF MOV EAX,DWORD PTR DS:[EDX+EAX] ; 参数2的数据 DS:[001BAEEC]=8AD07447
005F0CD2 CMP WORD PTR DS:[ECX],1
005F0CD6 MOV DWORD PTR SS:[EBP-1C],EAX
005F0CD9 JNZ SHORT Standard.005F0CFA ; 跳了
005F0CDB LEA EDX,DWORD PTR SS:[EBP-64]
005F0CDE LEA EAX,DWORD PTR SS:[EBP-68]
005F0CE1 PUSH EDX
005F0CE2 MOV DWORD PTR SS:[EBP-14],10
005F0CE9 MOV DWORD PTR SS:[EBP-64],4
005F0CF0 MOV DWORD PTR SS:[EBP-68],9E3779B9
005F0CF7 PUSH EAX
005F0CF8 JMP SHORT Standard.005F0D17
005F0CFA LEA ECX,DWORD PTR SS:[EBP-64] ; 这里是开始计算了
005F0CFD LEA EDX,DWORD PTR SS:[EBP-68]
005F0D00 PUSH ECX
005F0D01 MOV DWORD PTR SS:[EBP-14],20 ; 应该是计算的轮数
005F0D08 MOV DWORD PTR SS:[EBP-64],5 ; 移位的长度
005F0D0F MOV DWORD PTR SS:[EBP-68],9E3779B9 ; 数据,看着像是RC5的Q值
005F0D16 PUSH EDX
005F0D17 CALL <Standard.带假码处理A>
0012F158 9E3779B9 00000005 87654321 A01B1C88
0012F168 12345678 00000003 00920001 00000004
0012F178 00000000 001B4F80 00000002 00000000
0012F188 330F31E3 00000000 00000000 00000000
0012F198 0012F1AC 00000000 11223344 8AD07447
0012F1A8 0012F22C 00000020
005F0D00 PUSH ECX ; 待处理数
005F0D01 MOV DWORD PTR SS:[EBP-14],20 ; 应该是计算的轮数
005F0D08 MOV DWORD PTR SS:[EBP-64],5 ; 移位的长度
005F0D0F MOV DWORD PTR SS:[EBP-68],9E3779B9 ; 数据,看着像是RC5的Q值
005F0D16 PUSH EDX ; 参数2,移位数
005F0D17 CALL <Standard.带假码处理A>
0012F130 005F0D1C 返回到 Standard.005F0D1C 来自 <Standard.带假码处理A>
0012F134 0012F158 9E3779B9
0012F138 0012F15C 5
9E3779B9 10011110001101110111100110111001
C6EF3720 11000110111011110011011100100000
0012F158 9E3779B9 00000004 87654321 A01B1C88
0012F168 12345678 00000003 00920001 00000004
0012F178 00000000 001B4F80 00000002 00000000
0012F188 330F31E3 C6EF3720* 00000000 00000000
0012F198 0012F1AC 00000000 11223344 8AD07447
0012F1A8 0012F22C 00000020
005F0D1C MOV EBX,1
005F0D21 MOV DWORD PTR SS:[EBP-34],EAX ; C6EF3720
005F0D24 MOV ESI,EBX
005F0D26 CMP SI,WORD PTR SS:[EBP-14] ; 测试计数
005F0D2A JG Standard.005F0E4A
005F0D30 LEA EAX,DWORD PTR SS:[EBP-64]
005F0D33 LEA ECX,DWORD PTR SS:[EBP-38]
005F0D36 PUSH EAX ; 参2
005F0D37 PUSH ECX ; 参1
005F0D38 MOV DWORD PTR SS:[EBP-64],4 ; 移的位
005F0D3F CALL <Standard.子程序A 将参1按参2左移>
005F0D44 MOV DWORD PTR SS:[EBP-24],EAX
0012F158 9E3779B9 00000004 87654321 A01B1C88
0012F168 12345678 00000003 00920001 00000004
0012F178 00000000 001B4F80 00000002 00000000
0012F188 330F31E3 C6EF3720* 00000000 00000000
0012F198 0012F1AC 30F31E30 11223344 8AD07447
0012F1A8 0012F22C 00000020
005F0D44 MOV DWORD PTR SS:[EBP-24],EAX
005F0D47 LEA EDX,DWORD PTR SS:[EBP-60] ; 参2
005F0D4A LEA EAX,DWORD PTR SS:[EBP-24] ; 参1
005F0D4D PUSH EDX
005F0D4E PUSH EAX
005F0D4F CALL <Standard.带假码处理B>
0012F130 005F0D54 返回到 Standard.005F0D54 来自 <Standard.带假码处理B>
0012F134 0012F19C 30F31E30
0012F138 0012F160 87654321
//下面的分析时出错了,可能是数据不大一样了
005F0D54 LEA ECX,DWORD PTR SS:[EBP-34]
005F0D57 LEA EDX,DWORD PTR SS:[EBP-38]
005F0D5A PUSH ECX
005F0D5B PUSH EDX
005F0D5C MOV DWORD PTR SS:[EBP-24],EAX
005F0D5F CALL <Standard.函数B 将2数相加>
0012FB60 9E3779B9 00000004 87654321 A01B1C88
0012FB70 12345678 00000003 00920001 00000004
0012FB80 00000000 001629B0 00000002 00000000
0012FB90 330F31E3 C6EF3720 00000000 00000000
0012FBA0 0012FBB4 B8586151 11223344 8AD07447
0012FBB0 0012FC34 00000020
0012FB3C 0012FB90 330F31E3
0012FB40 0012FB94
005F0D64 MOV EDI,EAX
005F0D66 LEA EAX,DWORD PTR SS:[EBP-64]
005F0D69 LEA ECX,DWORD PTR SS:[EBP-38]
005F0D6C PUSH EAX
005F0D6D PUSH ECX
005F0D6E MOV DWORD PTR SS:[EBP-64],5
005F0D75 CALL <Standard.带假码处理C>
0012FB3C 0012FB90 330F31E3
0012FB40 0012FB64 00000005
0012FB60 9E3779B9 00000005 87654321 A01B1C88
0012FB70 12345678 00000003 00920001 00000004
0012FB80 00000000 001629B0 00000002 00000000
0012FB90 330F31E3 C6EF3720 00000000 00000000
0012FBA0 0012FBB4 B8586151 11223344 8AD07447
0012FBB0 0012FC34 00000020
005F0AB0 >MOV ECX,DWORD PTR SS:[ESP+8] ; 函数C 参1右移参2位
005F0AB4 MOV EAX,DWORD PTR SS:[ESP+4]
005F0AB8 PUSH ESI
005F0AB9 MOV SI,WORD PTR DS:[ECX] ; 参数2 5
005F0ABC MOV EAX,DWORD PTR DS:[EAX] ; 参数1
005F0ABE AND SI,1F
005F0AC2 JNS SHORT Standard.005F0ACC
005F0AC4 DEC SI
005F0AC6 OR SI,0FFE0
005F0ACA INC SI
005F0ACC MOV WORD PTR DS:[ECX],SI
005F0ACF JE SHORT Standard.005F0AFE
005F0AD1 MOV EDX,1
005F0AD6 CMP SI,DX
005F0AD9 JL SHORT Standard.005F0AFE
005F0ADB /MOV ECX,EAX
005F0ADD |SAR EAX,1 ; 右移
005F0ADF |AND ECX,80000000
005F0AE5 |AND EAX,3FFFFFFF
005F0AEA |TEST ECX,ECX
005F0AEC |JE SHORT Standard.005F0AF3
005F0AEE |OR EAX,40000000
005F0AF3 |ADD DX,1
005F0AF7 |JO SHORT Standard.005F0B02
005F0AF9 |CMP DX,SI
005F0AFC \JLE SHORT Standard.005F0ADB
005F0AFE POP ESI
005F0AFF RETN 8
0012FB3C 0012FBA8 11223344
0012FB40 0012FB98 CDCEE584
0012FB60 9E3779B9 00000005 87654321 A01B1C88
0012FB70 12345678 00000003 00920001 00000004
0012FB80 00000000 001629B0 00000002 00000000
0012FB90 330F31E3 C6EF3720 CDCEE584 8C68EDD6
0012FBA0 0012FBB4 B8586151 11223344 8AD07447
0012FBB0 0012FC34 00000020
005F0D7A MOV DWORD PTR SS:[EBP-2C],EAX
005F0D7D LEA EDX,DWORD PTR SS:[EBP-1C]
005F0D80 LEA EAX,DWORD PTR SS:[EBP-2C]
005F0D83 PUSH EDX
005F0D84 PUSH EAX
005F0D85 CALL <Standard.函数B 将2数相加>
005F0D8A MOV ECX,DWORD PTR SS:[EBP-24]
005F0D8D MOV DWORD PTR SS:[EBP-2C],EAX
005F0D90 XOR EAX,EDI
005F0D92 LEA EDX,DWORD PTR SS:[EBP-20]
005F0D95 XOR EAX,ECX
005F0D97 LEA ECX,DWORD PTR SS:[EBP-30]
005F0D9A PUSH ECX
005F0D9B PUSH EDX
005F0D9C MOV DWORD PTR SS:[EBP-30],EAX
005F0D9F CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0DA4 MOV DWORD PTR SS:[EBP-20],EAX
005F0940 >PUSH EBP ; 函数D 两数相加 有负时则取反相加
005F0941 MOV EBP,ESP
005F0943 AND ESP,FFFFFFF8
005F0946 SUB ESP,14
005F0949 MOV EDX,DWORD PTR SS:[EBP+8] ; 参数1
005F094C MOV EAX,DWORD PTR SS:[EBP+C] ; 参数2
005F094F PUSH ESI
005F0950 MOV EDX,DWORD PTR DS:[EDX] ; 11223344
005F0952 MOV EAX,DWORD PTR DS:[EAX] ; CDCEE584
005F0954 MOV ESI,EDX
005F0956 MOV ECX,EAX
005F0958 AND ESI,7FFFFFFF ; 取低31位
005F095E AND EAX,7FFFFFFF ; 取低31位
005F0963 MOV DWORD PTR SS:[ESP+8],ESI
005F0967 MOV ESI,DWORD PTR DS:[<&MSVBVM60.__vbaFp>; MSVBVM60.__vbaFpI4
005F096D FILD DWORD PTR SS:[ESP+8]
005F0971 MOV DWORD PTR SS:[ESP+8],EAX
005F0975 AND ECX,80000000
005F097B TEST EDX,80000000
005F0981 FSTP QWORD PTR SS:[ESP+10]
005F0985 FILD DWORD PTR SS:[ESP+8]
005F0989 FSTP QWORD PTR SS:[ESP+8]
005F098D JE SHORT Standard.005F09AD
005F098F FLD QWORD PTR SS:[ESP+10]
005F0993 TEST ECX,ECX
005F0995 JNZ SHORT Standard.005F09CC
005F0997 FADD QWORD PTR DS:[403950]
005F099D FSTP QWORD PTR SS:[ESP+10]
005F09A1 FSTSW AX
005F09A3 TEST AL,0D
005F09A5 JNZ Standard.005F0A3D
005F09AB JMP SHORT Standard.005F09C8
005F09AD TEST ECX,ECX
005F09AF JE SHORT Standard.005F09C8
005F09B1 FLD QWORD PTR SS:[ESP+8]
005F09B5 CALL ESI
005F09B7 OR EAX,80000000
005F09BC MOV DWORD PTR SS:[ESP+8],EAX
005F09C0 FILD DWORD PTR SS:[ESP+8]
005F09C4 FSTP QWORD PTR SS:[ESP+8]
005F09C8 FLD QWORD PTR SS:[ESP+10]
005F09CC FSUB QWORD PTR SS:[ESP+8]
005F09D0 FSTP QWORD PTR SS:[ESP+8]
005F09D4 FSTSW AX
005F09D6 TEST AL,0D
005F09D8 JNZ SHORT Standard.005F0A3D
005F09DA FLD QWORD PTR SS:[ESP+8]
005F09DE FCOMP QWORD PTR DS:[401B28]
005F09E4 FLD QWORD PTR SS:[ESP+8]
005F09E8 FSTSW AX
005F09EA TEST AH,1
005F09ED JE SHORT Standard.005F0A09
005F09EF FADD QWORD PTR DS:[403950]
005F09F5 FSTSW AX
005F09F7 TEST AL,0D
005F09F9 JNZ SHORT Standard.005F0A3D
005F09FB CALL ESI
005F09FD OR EAX,80000000
005F0A02 POP ESI
005F0A03 MOV ESP,EBP
005F0A05 POP EBP
005F0A06 RETN 8
005F0DA4 MOV DWORD PTR SS:[EBP-20],EAX
005F0DA7 LEA EAX,DWORD PTR SS:[EBP-64]
005F0DAA LEA ECX,DWORD PTR SS:[EBP-20]
005F0DAD PUSH EAX
005F0DAE PUSH ECX
005F0DAF MOV DWORD PTR SS:[EBP-64],4
005F0DB6 CALL <Standard.函数A 将参数1按参数2左移>
005F0DBB MOV DWORD PTR SS:[EBP-24],EAX
005F0DBE LEA EDX,DWORD PTR SS:[EBP-58] ; A 1次 B 2次 C 1次 B 1次 D 1次
005F0DC1 LEA EAX,DWORD PTR SS:[EBP-24]
005F0DC4 PUSH EDX
005F0DC5 PUSH EAX
005F0DC6 CALL <Standard.函数B 将2数相加>
005F0DCB LEA ECX,DWORD PTR SS:[EBP-34]
005F0DCE LEA EDX,DWORD PTR SS:[EBP-20]
005F0DD1 PUSH ECX
005F0DD2 PUSH EDX
005F0DD3 MOV DWORD PTR SS:[EBP-24],EAX
005F0DD6 CALL <Standard.函数B 将2数相加>
005F0DDB MOV EDI,EAX
005F0DDD LEA EAX,DWORD PTR SS:[EBP-64]
005F0DE0 LEA ECX,DWORD PTR SS:[EBP-20]
005F0DE3 PUSH EAX
005F0DE4 PUSH ECX
005F0DE5 MOV DWORD PTR SS:[EBP-64],5
005F0DEC CALL <Standard.函数C 参1右移参2位>
005F0DF1 MOV DWORD PTR SS:[EBP-2C],EAX
005F0DF4 LEA EDX,DWORD PTR SS:[EBP-5C]
005F0DF7 LEA EAX,DWORD PTR SS:[EBP-2C]
005F0DFA PUSH EDX
005F0DFB PUSH EAX
005F0DFC CALL <Standard.函数B 将2数相加>
005F0E01 MOV DWORD PTR SS:[EBP-2C],EAX
005F0E04 XOR EAX,EDI
005F0E06 MOV EDI,DWORD PTR SS:[EBP-24]
005F0E09 LEA ECX,DWORD PTR SS:[EBP-30]
005F0E0C XOR EAX,EDI
005F0E0E PUSH ECX
005F0E0F MOV DWORD PTR SS:[EBP-30],EAX
005F0E12 LEA EDX,DWORD PTR SS:[EBP-38]
005F0E15 PUSH EDX
005F0E16 CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0E1B MOV DWORD PTR SS:[EBP-38],EAX
005F0E1E LEA EAX,DWORD PTR SS:[EBP-68]
005F0E21 LEA ECX,DWORD PTR SS:[EBP-34]
005F0E24 PUSH EAX
005F0E25 PUSH ECX
005F0E26 MOV DWORD PTR SS:[EBP-68],9E3779B9
005F0E2D CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0E32 MOV DX,BX
005F0E35 MOV DWORD PTR SS:[EBP-34],EAX
005F0E38 ADD DX,SI
005F0E3B JO Standard.005F0EED
005F0E41 MOV ESI,EDX
005F0E43 XOR EDI,EDI
005F0E45 JMP Standard.005F0D26
//函数整体内容
005F0CFA LEA ECX,DWORD PTR SS:[EBP-64]
005F0CFD LEA EDX,DWORD PTR SS:[EBP-68]
005F0D00 PUSH ECX
005F0D01 MOV DWORD PTR SS:[EBP-14],20
005F0D08 MOV DWORD PTR SS:[EBP-64],5
005F0D0F MOV DWORD PTR SS:[EBP-68],9E3779B9
005F0D16 PUSH EDX
005F0D17 CALL <Standard.函数A 将参数1按参数2左移> //之前应该是初始内容
005F0D1C MOV EBX,1
005F0D21 MOV DWORD PTR SS:[EBP-34],EAX ; C6EF3720
005F0D24 MOV ESI,EBX
005F0D26 CMP SI,WORD PTR SS:[EBP-14]
005F0D2A JG Standard.005F0E4A
005F0D30 LEA EAX,DWORD PTR SS:[EBP-64]
005F0D33 LEA ECX,DWORD PTR SS:[EBP-38]
005F0D36 PUSH EAX
005F0D37 PUSH ECX
005F0D38 MOV DWORD PTR SS:[EBP-64],4
005F0D3F CALL <Standard.函数A 将参数1按参数2左移>
005F0D44 MOV DWORD PTR SS:[EBP-24],EAX
005F0D47 LEA EDX,DWORD PTR SS:[EBP-60]
005F0D4A LEA EAX,DWORD PTR SS:[EBP-24]
005F0D4D PUSH EDX
005F0D4E PUSH EAX
005F0D4F CALL <Standard.函数B 将2数相加>
005F0D54 LEA ECX,DWORD PTR SS:[EBP-34]
005F0D57 LEA EDX,DWORD PTR SS:[EBP-38]
005F0D5A PUSH ECX
005F0D5B PUSH EDX
005F0D5C MOV DWORD PTR SS:[EBP-24],EAX
005F0D5F CALL <Standard.函数B 将2数相加>
005F0D64 MOV EDI,EAX
005F0D66 LEA EAX,DWORD PTR SS:[EBP-64]
005F0D69 LEA ECX,DWORD PTR SS:[EBP-38]
005F0D6C PUSH EAX
005F0D6D PUSH ECX
005F0D6E MOV DWORD PTR SS:[EBP-64],5
005F0D75 CALL <Standard.函数C 参1右移参2位>
005F0D7A MOV DWORD PTR SS:[EBP-2C],EAX
005F0D7D LEA EDX,DWORD PTR SS:[EBP-1C]
005F0D80 LEA EAX,DWORD PTR SS:[EBP-2C]
005F0D83 PUSH EDX
005F0D84 PUSH EAX
005F0D85 CALL <Standard.函数B 将2数相加>
005F0D8A MOV ECX,DWORD PTR SS:[EBP-24]
005F0D8D MOV DWORD PTR SS:[EBP-2C],EAX
005F0D90 XOR EAX,EDI
005F0D92 LEA EDX,DWORD PTR SS:[EBP-20]
005F0D95 XOR EAX,ECX
005F0D97 LEA ECX,DWORD PTR SS:[EBP-30]
005F0D9A PUSH ECX
005F0D9B PUSH EDX
005F0D9C MOV DWORD PTR SS:[EBP-30],EAX
005F0D9F CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0DA4 MOV DWORD PTR SS:[EBP-20],EAX
005F0DA7 LEA EAX,DWORD PTR SS:[EBP-64]
005F0DAA LEA ECX,DWORD PTR SS:[EBP-20]
005F0DAD PUSH EAX
005F0DAE PUSH ECX
005F0DAF MOV DWORD PTR SS:[EBP-64],4
005F0DB6 CALL <Standard.函数A 将参数1按参数2左移>
005F0DBB MOV DWORD PTR SS:[EBP-24],EAX
005F0DBE LEA EDX,DWORD PTR SS:[EBP-58] ; A 1次 B 2次 C 1次 B 1次 D 1次
005F0DC1 LEA EAX,DWORD PTR SS:[EBP-24]
005F0DC4 PUSH EDX
005F0DC5 PUSH EAX
005F0DC6 CALL <Standard.函数B 将2数相加>
005F0DCB LEA ECX,DWORD PTR SS:[EBP-34]
005F0DCE LEA EDX,DWORD PTR SS:[EBP-20]
005F0DD1 PUSH ECX
005F0DD2 PUSH EDX
005F0DD3 MOV DWORD PTR SS:[EBP-24],EAX
005F0DD6 CALL <Standard.函数B 将2数相加>
005F0DDB MOV EDI,EAX
005F0DDD LEA EAX,DWORD PTR SS:[EBP-64]
005F0DE0 LEA ECX,DWORD PTR SS:[EBP-20]
005F0DE3 PUSH EAX
005F0DE4 PUSH ECX
005F0DE5 MOV DWORD PTR SS:[EBP-64],5
005F0DEC CALL <Standard.函数C 参1右移参2位>
005F0DF1 MOV DWORD PTR SS:[EBP-2C],EAX
005F0DF4 LEA EDX,DWORD PTR SS:[EBP-5C]
005F0DF7 LEA EAX,DWORD PTR SS:[EBP-2C]
005F0DFA PUSH EDX
005F0DFB PUSH EAX
005F0DFC CALL <Standard.函数B 将2数相加>
005F0E01 MOV DWORD PTR SS:[EBP-2C],EAX
005F0E04 XOR EAX,EDI
005F0E06 MOV EDI,DWORD PTR SS:[EBP-24]
005F0E09 LEA ECX,DWORD PTR SS:[EBP-30]
005F0E0C XOR EAX,EDI
005F0E0E PUSH ECX
005F0E0F MOV DWORD PTR SS:[EBP-30],EAX
005F0E12 LEA EDX,DWORD PTR SS:[EBP-38]
005F0E15 PUSH EDX
005F0E16 CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0E1B MOV DWORD PTR SS:[EBP-38],EAX
005F0E1E LEA EAX,DWORD PTR SS:[EBP-68]
005F0E21 LEA ECX,DWORD PTR SS:[EBP-34]
005F0E24 PUSH EAX
005F0E25 PUSH ECX
005F0E26 MOV DWORD PTR SS:[EBP-68],9E3779B9
005F0E2D CALL <Standard.函数D 两数相加 有负时则取反相加>
005F0E32 MOV DX,BX
005F0E35 MOV DWORD PTR SS:[EBP-34],EAX
005F0E38 ADD DX,SI
005F0E3B JO Standard.005F0EED
005F0E41 MOV ESI,EDX
005F0E43 XOR EDI,EDI
005F0E45 JMP Standard.005F0D26
处理返回数据了
005F0E4A MOV EBX,DWORD PTR SS:[EBP+8]
005F0E4D MOV EAX,DWORD PTR DS:[EBX]
005F0E4F CMP EAX,EDI
005F0E51 JE SHORT Standard.005F0E74
005F0E53 CMP WORD PTR DS:[EAX],1
005F0E57 JNZ SHORT Standard.005F0E74
005F0E59 MOV ESI,DWORD PTR DS:[EAX+14]
005F0E5C MOV ECX,DWORD PTR DS:[EAX+10]
005F0E5F NEG ESI
005F0E61 CMP ESI,ECX
005F0E63 JB SHORT Standard.005F0E6B
005F0E65 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsE>; MSVBVM60.__vbaGenerateBoundsError
005F0E6B LEA EAX,DWORD PTR DS:[ESI*4]
005F0E72 JMP SHORT Standard.005F0E7A
005F0E74 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsE>; MSVBVM60.__vbaGenerateBoundsError
005F0E7A MOV ECX,DWORD PTR DS:[EBX] ; 处理返回数据1
005F0E7C MOV EDX,DWORD PTR DS:[ECX+C]
005F0E7F MOV ECX,DWORD PTR SS:[EBP-38] ; Stack SS:[0012E9D8]=25A8397E
005F0E82 MOV DWORD PTR DS:[EDX+EAX],ECX
005F0E85 MOV EAX,DWORD PTR DS:[EBX]
005F0E87 CMP EAX,EDI
005F0E89 JE SHORT Standard.005F0EB1
005F0E8B CMP WORD PTR DS:[EAX],1
005F0E8F JNZ SHORT Standard.005F0EB1
005F0E91 MOV EDX,DWORD PTR DS:[EAX+14] ; 处理返回数据2
005F0E94 MOV ECX,DWORD PTR DS:[EAX+10]
005F0E97 MOV ESI,1
005F0E9C SUB ESI,EDX
005F0E9E CMP ESI,ECX
005F0EA0 JB SHORT Standard.005F0EA8
005F0EA2 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsE>; MSVBVM60.__vbaGenerateBoundsError
005F0EA8 LEA EAX,DWORD PTR DS:[ESI*4]
005F0EAF JMP SHORT Standard.005F0EB7
005F0EB1 CALL DWORD PTR DS:[<&MSVBVM60.__vbaGenerateBoundsE>; MSVBVM60.__vbaGenerateBoundsError
005F0EB7 MOV EDX,DWORD PTR DS:[EBX]
005F0EB9 PUSH Standard.005F0EDA
005F0EBE MOV ECX,DWORD PTR DS:[EDX+C]
005F0EC1 MOV EDX,DWORD PTR SS:[EBP-20] ; Stack SS:[0012E9F0]=B4C094AE
005F0EC4 MOV DWORD PTR DS:[ECX+EAX],EDX
005F0EC7 LEA ECX,DWORD PTR SS:[EBP-68]
005F0ECA LEA EAX,DWORD PTR SS:[EBP-50]
005F0ECD PUSH ECX
005F0ECE PUSH 0
005F0ED0 MOV DWORD PTR SS:[EBP-68],EAX
005F0ED3 CALL DWORD PTR DS:[<&MSVBVM60.__vbaAryDestruct>] ; MSVBVM60.__vbaAryDestruct
005F0ED9 RETN
0012F158 9E3779B9 00000005 87654321 A01B1C88
加密时放入 移位变量 入参 入参A
0012F168 12345678 00000003 00920001 00000004
入参
0012F178 00000000 001B4F80 00000002 00000000
0012F188 330F31E3 00000000 00000000 00000000
假码A
0012F198 0012F1AC 00000000 11223344 8AD07447
假码B 入参A
0012F1A8 0012F22C 00000020
轮数
判断是的结果就是
加解密完的数据 假码A 要等于入参A 假码B要等于入参B
现在的问题是:
如果做出这样的注册机来
Q:76451925
肯请各位兄弟帮忙了.
|