首页
社区
课程
招聘
[旧帖] [原创]纯汇编实现DES64加密算法,求邀请码. 0.00雪花
发表于: 2011-9-24 12:30 3203

[旧帖] [原创]纯汇编实现DES64加密算法,求邀请码. 0.00雪花

2011-9-24 12:30
3203
第一次发帖,申请邀请码文章,当然版主大发慈悲,给个精华鼓励新人发帖就更好了。

    想学习下DES得算法。网上找来的。C语言代码,按照那份代码用汇编重写了下。
另附上一个简单的Demo和原来C语言的代码。

    原来C语言的文件里注释的很详细所以我就没多做注释了。函数名,变量啥的我基本没变,大家对着C的源文件里的注释应该很容易看懂。

Demo效果 如下图:
加密



解密



;--------------------------------------------------------------------------------
;
;File: DES.asm
;Author: Sin
;Date: 2011.9.20
;
;--------------------------------------------------------------------------------

.386
.model flat,stdcall
option casemap:none



ByteToBit proto :BYTE,:DWORD
BitToByte proto :DWORD,:DWORD
Char8ToBit64 proto :DWORD,:DWORD
Bit64ToChar8 proto :DWORD,:DWORD
Bit64ToChar64 PROTO :DWORD,:DWORD
Char64ToBit64 PROTO :DWORD,:DWORD
DES_MakeSubKeys proto :DWORD,:DWORD
DES_PC1_Transform proto :DWORD,:DWORD
DES_PC2_Transform proto :DWORD,:DWORD
DES_ROL proto :DWORD,:DWORD
DES_IP_Transform proto :DWORD
DES_IP_1_Transform proto :DWORD
DES_E_Transform proto :DWORD
DES_P_Transform proto :DWORD
DES_SBOX proto :DWORD
DES_XOR proto :DWORD,:DWORD,:DWORD
DES_Swap proto :DWORD,:DWORD
DES_EncryptBlock proto :DWORD,:DWORD,:DWORD
DES_DecryptBlock proto :DWORD,:DWORD,:DWORD
DES_Encrypt proto :DWORD,:DWORD,:DWORD,:DWORD
DES_Decrypt proto :DWORD,:DWORD,:DWORD,:DWORD



.data
   align 4
	;IP_Table[0] ~ IP_Table[63]
	IP_Table	dd	57,49,41,33,25,17,9,1 
				dd	59,51,43,35,27,19,11,3
				dd	61,53,45,37,29,21,13,5
				dd	63,55,47,39,31,23,15,7
				dd	56,48,40,32,24,16,8,0
				dd	58,50,42,34,26,18,10,2
				dd	60,52,44,36,28,20,12,4
				dd	62,54,46,38,30,22,14,6
			
	;IP_1_Table[0] ~ IP_1_Table[63]			
	IP_1_Table	dd	39,7,47,15,55,23,63,31
				dd	38,6,46,14,54,22,62,30
				dd	37,5,45,13,53,21,61,29
				dd	36,4,44,12,52,20,60,28
				dd	35,3,43,11,51,19,59,27
				dd	34,2,42,10,50,18,58,26
				dd	33,1,41,9,49,17,57,25
				dd	32,0,40,8,48,16,56,24
	
	E_Table		dd	31,0,1,2,3,4
				dd	3,4,5,6,7,8
				dd	7,8,9,10,11,12
				dd	11,12,13,14,15,16
				dd	15,16,17,18,19,20
				dd	19,20,21,22,23,24
				dd	23,24,25,26,27,28
				dd	27,28,29,30,31,0
				
	P_Table		dd	15,6,19,20,28,11,27,16
				dd	0,14,22,25,4,17,30,9
				dd	1,7,23,13,31,26,2,8
				dd	18,12,29,5,21,10,3,24				

					; S[0][0][0] ~ S[0][3][15]
	S			dd	14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7
				dd	0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8
				dd	4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0
				dd	15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13
					;S[1][0][0] ~ S[1][3][15]
				dd	15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10
				dd	3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5
				dd	0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15
				dd	13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9
					;
				dd	10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8
				dd	13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1
				dd	13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7
				dd	1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12
					;
				dd	7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15
				dd	13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9
				dd	10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4
				dd	3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14
					;
				dd	2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9
				dd	14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6
				dd	4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14
				dd	11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3
					;
				dd	12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11
				dd	10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8
				dd	9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6
				dd	4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13
					;
				dd	4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1
				dd	13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6
				dd	1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2
				dd	6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12
					;
				dd	13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7
				dd	1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2
				dd	7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8
				dd	2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11
				
	PC_1		dd	56,48,40,32,24,16,8
				dd	0,57,49,41,33,25,17
				dd	9,1,58,50,42,34,26
				dd	18,10,2,59,51,43,35
				dd	62,54,46,38,30,22,14
				dd	6,61,53,45,37,29,21
				dd	13,5,60,52,44,36,28
				dd	20,12,4,27,19,11,3
				
	PC_2		dd	13,16,10,23,0,4,2,27
				dd	14,5,20,9,22,18,11,3
				dd	25,7,15,6,26,19,12,1
				dd	40,51,30,36,46,54,29,39
				dd	50,44,32,46,43,48,38,55
				dd	33,52,45,41,49,35,28,31
				
	MOVE_TIMES	dd	1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1				
					
.data?

align 4

.code
memcpy proc uses esi edi ecx dst:DWORD,src:DWORD,len:DWORD

	pushfd
	cld
	mov edi,dst
	mov esi,src
	mov ecx,len
	rep movsb
	
	xor eax,eax
	popfd
	ret
memcpy endp

ByteToBit proc uses edi ecx edx cb:BYTE,bit:DWORD
	
	pushfd
	cld
	mov ecx,8
	mov edi,bit
	mov dl,cb
	xor eax,eax
	
@@:
	shr dl,1
	setc al
	stosb
	dec ecx
	jnz @b
	
	popfd
	xor eax,eax
	ret
ByteToBit endp

BitToByte proc uses esi ecx edx bit:DWORD,cb:DWORD
	
	pushfd
	cld
	xor ecx,ecx
	xor edx,edx
	xor eax,eax
	mov esi,bit
	
@@:	
	lodsb
	shl al,cl
	or dl,al
	inc cl
	cmp cl,8
	jnz @b
	
	mov eax,cb
	mov BYTE PTR [eax],dl
	xor eax,eax

	popfd
	ret
BitToByte endp

Char8ToBit64 proc uses esi ebx ecx edx cb:DWORD,bit:DWORD
	
	pushfd
	cld
	
	mov esi,cb
	xor eax,eax
	xor ecx,ecx
	xor edx,edx
	
@@:	
	lodsb
	mov edx,ecx
	shl edx,3
	mov ebx,bit
	add ebx,edx
	invoke ByteToBit,al,ebx
	inc ecx
	cmp ecx,8
	jnz @b
	
	xor eax,eax
	popfd	
	ret
Char8ToBit64 endp

Bit64ToChar8 proc uses esi edi ecx bit:DWORD,cb:DWORD
	
	pushfd
	cld
	
	mov edi,cb
	mov ecx,8
	xor eax,eax
	rep stosb

	mov esi,bit
	mov edi,cb
	xor eax,eax
	xor ecx,ecx
	
@@:	
	mov eax,ecx
	shl eax,3
	mov esi,bit
	add esi,eax
	mov edi,cb
	add edi,ecx
	invoke BitToByte,esi,edi
	inc ecx
	cmp ecx,8
	jnz @b
	
	xor eax,eax
	popfd		
	ret
Bit64ToChar8 endp

Bit64ToChar64 proc uses esi edi ecx lpInString,lpOutString
	
	pushfd
	cld
	mov esi,lpInString
	mov edi,lpOutString
	xor eax,eax
	mov ecx,64
@@:	
	lodsb
	add al,30H
	stosb
	dec ecx
	jnz @b
	
	popfd
	xor eax,eax
	ret
Bit64ToChar64 endp

Char64ToBit64 proc uses esi edi ecx lpInstring,lpOutString
	
	pushfd
	cld
	mov esi,lpInstring
	mov edi,lpOutString
	xor eax,eax
	mov ecx,64
@@:
	lodsb
	sub al,30H
	stosb
	dec ecx
	jnz @b
	popfd
	xor eax,eax
	ret
Char64ToBit64 endp

DES_MakeSubKeys proc uses ecx edx ebx key:DWORD,subkeys:DWORD
	
	LOCAL temp[56]:BYTE
	
	invoke DES_PC1_Transform,key,addr temp
	xor ecx,ecx
	mov edx,offset MOVE_TIMES
	mov ebx,subkeys

@@:	
	mov eax,[edx+ecx*4]
	push eax
	lea eax,temp
	push eax
	call DES_ROL
	mov eax,ecx
	imul eax,48
	add eax,ebx
	push eax
	push key
	call DES_PC2_Transform
	inc ecx
	cmp ecx,16
	jnz @b
	
	xor eax,eax	
	ret
DES_MakeSubKeys endp

DES_PC1_Transform proc uses edi ebx ecx edx key:DWORD,tempbits:DWORD
	
	pushfd
	cld
	mov edi,tempbits
	mov ebx,key
	mov edx,offset PC_1
	xor ecx,ecx

@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]
	stosb
	inc ecx
	cmp ecx,56
	jnz @b
	
	xor eax,eax
	popfd
	ret
DES_PC1_Transform endp

DES_PC2_Transform proc uses edi ebx ecx edx key:DWORD,tempbits:DWORD
	
	pushfd
	cld
	mov edi,tempbits
	mov ebx,key
	mov edx,offset PC_2
	xor ecx,ecx
	
@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]
	stosb
	inc ecx
	cmp ecx,48
	jnz @b

	xor eax,eax
	popfd	
	ret
DES_PC2_Transform endp


DES_ROL proc uses edx ecx ebx data:DWORD,time:DWORD
	
	LOCAL temp[56]:BYTE
	
	lea ebx,temp
	mov edx,data
	mov ecx,time
	
	push ecx
	push edx
	push ebx
	call memcpy
	
	push ecx
	mov eax,edx
	add eax,28
	push eax
	mov eax,ebx
	add eax,ecx
	push eax
	call memcpy
	
	mov eax,28
	sub eax,ecx
	push eax
	mov eax,edx
	add eax,ecx
	push eax
	push edx
	call memcpy
	
	push ecx
	push ebx
	mov eax,edx
	add eax,28
	sub eax,ecx
	push eax
	call memcpy
	
	mov eax,28
	sub eax,ecx
	push eax
	mov eax,edx
	add eax,28
	add eax,ecx
	push eax
	mov eax,edx
	add eax,28
	push eax
	call memcpy
	
	push ecx
	mov eax,ebx
	add eax,ecx
	push eax
	mov eax,edx
	add eax,56
	sub eax,ecx
	push eax
	call memcpy
	
	xor eax,eax
	ret
DES_ROL endp

DES_IP_Transform proc uses edi ebx ecx edx data:DWORD
	
	LOCAL temp[64]:BYTE
	
	pushfd
	cld
	
	lea edi,temp
	mov edx,offset IP_Table
	mov ebx,data
	xor ecx,ecx
	
@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]
	stosb
	inc ecx
	cmp ecx,64
	jnz @b
	
	invoke memcpy,data,addr temp,64
	xor eax,eax
	popfd
	ret
DES_IP_Transform endp

DES_IP_1_Transform proc uses edi ebx ecx edx data:DWORD
	
	LOCAL temp[64]:BYTE
	
	pushfd
	cld
	
	lea edi,temp
	mov edx,offset IP_1_Table
	mov ebx,data
	xor ecx,ecx
	
@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]
	stosb
	inc ecx
	cmp ecx,64
	jnz @b	
	
	invoke memcpy,data,addr temp,64
	xor eax,eax	
	popfd
	ret
DES_IP_1_Transform endp

DES_E_Transform proc uses edi ebx ecx edx data:DWORD
	
	LOCAL temp[48]:BYTE
	
	pushfd
	cld
	lea edi,temp
	mov edx,offset E_Table
	mov ebx,data
	xor ecx,ecx

@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]	
	stosb
	inc ecx
	cmp ecx,48
	jnz @b

	invoke memcpy,data,addr temp,48
	xor eax,eax
	popfd	
	ret
DES_E_Transform endp

DES_P_Transform proc uses edi ebx ecx edx data:DWORD
	
	LOCAL temp[32]:BYTE
	
	pushfd
	cld
	lea edi,temp
	mov edx,offset P_Table
	mov ebx,data
	xor ecx,ecx
	
@@:
	mov eax,[edx+ecx*4]
	mov al,BYTE PTR [ebx+eax]
	stosb
	inc ecx
	cmp ecx,32
	jnz @b

	invoke memcpy,data,addr temp,32
	xor eax,eax
	popfd
	ret
DES_P_Transform endp

DES_XOR proc uses esi edi ecx edx R:DWORD,L:DWORD,count:DWORD
	
	mov edi,R
	mov esi,L
	
	xor eax,eax
	xor edx,edx
	xor ecx,ecx

@@:	
	cmp ecx,count
	jz @Ret
	mov al,BYTE PTR [esi+ecx]
	mov dl,BYTE PTR [edi+ecx]
	xor al,dl
	inc ecx
	jmp @b
@Ret:
	xor eax,eax	
	ret
DES_XOR endp

DES_SBOX proc uses esi edi ebx ecx edx data:DWORD
	
	LOCAL _line:DWORD,row:DWORD,output:DWORD
;	LOCAL cur1:DWORD,cur2:DWORD 
;	use cur1-> esi cur2->edi
	
	mov ebx,data
	xor ecx,ecx
	
@@:
	mov esi,ecx
	imul esi,6
	mov edi,ecx
	shl edi,2
	
	mov al,BYTE PTR [ebx+esi]
	shl al,1
	movzx edx,al
	
	mov al,BYTE PTR [ebx+esi+5]
	movzx eax,al
	add eax,edx
	mov _line,eax
	
	mov al,BYTE PTR [ebx+esi+1]
	shl al,3
	movzx edx,al
	mov al,BYTE PTR [ebx+esi+2]
	shl al,2
	movzx eax,al
	add edx,eax
	mov al,BYTE PTR [ebx+esi+3]
	shl al,1
	movzx eax,al
	add edx,eax
	mov al,BYTE PTR [ebx+esi+4]
	movzx eax,al
	add eax,edx
	mov row,eax
	
	mov edx,offset S
	mov eax,_line
	imul eax,row
	imul eax,ecx
	mov eax,DWORD PTR [edx+eax]
	mov output,eax
	
	and eax,08H
	shr eax,3
	mov BYTE PTR [ebx+edi],al
	mov eax,output
	and eax,04H
	shr eax,2
	mov BYTE PTR [ebx+edi+1],al
	mov eax,output
	and eax,02H
	shr eax,1
	mov BYTE PTR [ebx+edi+2],al
	mov eax,output
	and eax,01H
	mov BYTE PTR [ebx+edi+3],al
	inc ecx
	cmp ecx,8
	jnz @b
	
	xor eax,eax
	ret
DES_SBOX endp

DES_Swap proc left:DWORD,right:DWORD
	
	LOCAL temp[32]:BYTE
	
	invoke memcpy,addr temp,left,32
	invoke memcpy,left,right,32
	invoke memcpy,right,addr temp,32
	
	xor eax,eax
	ret
DES_Swap endp

DES_EncryptBlock proc uses ecx edx plainBlock:DWORD,subKeys:DWORD,cipherBlock:DWORD
	
	LOCAL plainBits[64]:BYTE
	LOCAL copyRight[48]:BYTE
	

	invoke Char8ToBit64,plainBlock,addr plainBits
	invoke DES_IP_Transform,addr plainBits
	
	xor ecx,ecx

@loop:
	push 32
	lea eax,plainBits
	add eax,32
	push eax
	lea eax,copyRight
	push eax
	call memcpy

	invoke DES_E_Transform,addr copyRight
	
	mov eax,subKeys
	mov edx,ecx
	imul edx,48
	add eax,edx
	invoke DES_XOR,addr copyRight,eax,48
	invoke DES_SBOX,addr copyRight
	invoke DES_P_Transform,addr copyRight
	invoke DES_XOR,addr plainBits,addr copyRight,32
	
	cmp ecx,15
	jz @f
	lea eax,plainBits
	add eax,32
	invoke DES_Swap,addr plainBits,eax
@@:	
	inc ecx
	cmp ecx,16
	jnz @loop
	
	invoke DES_IP_1_Transform,addr plainBits
	invoke Bit64ToChar8,addr plainBits,cipherBlock
	xor eax,eax
	ret

DES_EncryptBlock endp

DES_DecryptBlock proc uses edx ecx cipherBlock:DWORD,subKeys:DWORD,plainBlock:DWORD

	LOCAL cipherBits[64]:BYTE
	LOCAL copyRight[48]:BYTE
	
	
	invoke Char8ToBit64,cipherBlock,addr cipherBits
	invoke DES_IP_Transform,addr cipherBits
	
	mov ecx,15

@loop:	
	push 32
	lea eax,cipherBits
	add eax,32
	push eax
	lea eax,copyRight
	push eax
	call memcpy
	invoke DES_E_Transform,addr copyRight
	
	mov edx,subKeys
	mov eax,ecx
	imul eax,48
	add eax,edx
	invoke DES_XOR,addr copyRight,eax,48
	invoke DES_SBOX,addr copyRight
	invoke DES_P_Transform,addr copyRight
	invoke DES_XOR,addr cipherBits,addr copyRight,32
	
	test ecx,ecx
	jz @f
	lea eax,cipherBits
	add eax,32
	invoke DES_Swap,addr cipherBits,eax
@@:
	dec ecx
	cmp ecx,0
	jge @loop
	
	invoke DES_IP_1_Transform,addr cipherBits
	invoke Bit64ToChar8,addr cipherBits,plainBlock
	xor eax,eax	
	ret

DES_DecryptBlock endp

DES_Encrypt proc uses esi edi edx ecx lpInString,cbInString,lpKeyString,lpOutString
	
	local szSubKeys[768]:BYTE ;16*48
	local bKey[64]:BYTE
	local szTemp[8]:BYTE
	local szResult[8]:BYTE
	
	invoke Char8ToBit64,lpKeyString,addr bKey
	invoke DES_MakeSubKeys,addr bKey,addr szSubKeys
	
	mov ecx,cbInString
	mov esi,lpInString
	mov edi,lpOutString
	xor edx,edx
	
@loop:		
	cmp ecx,8
	jb @f
	invoke memcpy,addr szTemp,esi,8
	add esi,8
	invoke DES_EncryptBlock,addr szTemp,addr szSubKeys,addr szResult
	jmp @copy
@@:
	invoke memcpy,addr szTemp,esi,ecx
	pushfd
	cld
	push edi
	lea edi,szTemp
	add edi,ecx
	mov eax,7
	sub eax,ecx
	mov BYTE PTR [edi+7],al
	mov ecx,eax
	xor eax,eax
	rep stosb
	pop edi
	popfd
	invoke DES_EncryptBlock,addr szTemp,addr szSubKeys,addr szResult
@copy:
	invoke memcpy,edi,addr szResult,8
	add edi,8
	add edx,8
	sub ecx,8
	jg @loop

	mov eax,edx
	ret
DES_Encrypt endp

DES_Decrypt proc uses esi edi ebx ecx edx lpInString,cbInString,lpKeyString,lpOutString
	
	local szSubKeys[768]:BYTE
	local bKey[64]:BYTE
	local szResult[8]:BYTE

	invoke Char8ToBit64,lpKeyString,addr bKey
	invoke DES_MakeSubKeys,addr bKey,addr szSubKeys	
	
	mov ecx,cbInString
	mov esi,lpInString
	mov edi,lpOutString
	
	xor ebx,ebx
	
@@:
	cmp ecx,0
	jbe @Ret
	invoke DES_DecryptBlock,esi,addr szSubKeys,addr szResult 
	add esi,8
	invoke memcpy,edi,addr szResult,8
	add edi,8
	add ebx,8
	sub ecx,8
	test ecx,ecx
	jz @loop
	jmp @b
	
@loop:
	pushfd
	cld
	push esi
	lea esi,szResult
	xor eax,eax
	mov al,BYTE PTR [esi+7]
	cmp al,8
	jae @Ret ;>=8 跳出
	movzx eax,al
	mov ecx,8
	sub ecx,eax ;
	mov edx,ecx
@@:	
	lodsb
	test al,al
	jnz @f ;有不为0的跳出
	inc ecx
	cmp ecx,7
	jb @b
	push edx
	lea eax,szResult
	push eax
	sub edi,8
	push edi
	call memcpy
	add ebx,edx
	sub ebx,8
@@:	
	pop esi
	popfd
@Ret:	
	mov eax,ebx
	ret
DES_Decrypt endp

end


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (9)
雪    币: 39
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
国际惯例沙发自己做
第一次发帖。格式不大好看。
版主帮忙弄好看点。
2011-9-24 12:32
0
雪    币: 36
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
传说中的sin用汇编写了des加密解密。。。过来学习一下
2011-9-24 12:36
0
雪    币: 4580
活跃值: (992)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
不错收藏备用
2011-9-24 15:08
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
太犀利了
2011-9-24 15:51
0
雪    币: 2503
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
犀利的文章!!!!
2011-9-24 16:31
0
雪    币: 39
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
。刚才发现了个错误 在最后一个函数 注释 有不为0跳出 那个地方。直接跳到@Ret 。
前面有
pushfd
push esi
这样没 出栈 栈 就不平衡了。
刚修改下。。附件不知道怎么删除。我重新上传个。
上传的附件:
2011-9-24 18:55
0
雪    币: 81
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
犀利啊 难道UI也是汇编写的 0.0
2011-9-24 19:11
0
雪    币: 39
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
呵呵 你是那个。赏金论坛的老大吗。。。。
2011-9-28 08:41
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haw
10
太厉害了,佩服啊!
2011-9-28 10:45
0
游客
登录 | 注册 方可回帖
返回
//