首页
社区
课程
招聘
哪位兄弟有RC5加解密的源代码!麻烦转一份!
发表于: 2006-12-19 19:42 5343

哪位兄弟有RC5加解密的源代码!麻烦转一份!

nig 活跃值
4
2006-12-19 19:42
5343
最近看了一个程序,是用RC5的加密方式,使用了RC5将注册码解码出来和指定的值进行比较,哪位兄弟有此方面的资料,麻烦帮一下!
谢谢!

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
2
STFW!
2006-12-19 19:46
0
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
STFW ==???
网站  ??  锁帖访问????
or Any
2006-12-19 22:06
0
雪    币: 2506
活跃值: (1030)
能力值: (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
2006-12-20 00:07
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
5
CC有没很简单的hash算法汇编源码?


最近本人疯了
跟hash逆向交上手了!
2006-12-20 00:19
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
6
可以下载drizz的cryptohash库,里面都有(可能要用代理):
http://drizz.t35.com/files/cryptohash.rar
2006-12-20 09:29
0
雪    币: 263
活跃值: (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
谢谢

我这边本身就是在国外
所以下起来很方便

再次感谢!

2006-12-20 10:39
0
雪    币: 413
活跃值: (637)
能力值: ( 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  
肯请各位兄弟帮忙了.
2006-12-20 11:22
0
游客
登录 | 注册 方可回帖
返回
//