首页
社区
课程
招聘
[求助]内联汇编,编译出错error C2094: label 'C' was undefined
发表于: 2009-7-10 11:21 7299

[求助]内联汇编,编译出错error C2094: label 'C' was undefined

2009-7-10 11:21
7299
编译错误提示:error C2094: label 'C' was undefined
是不是汇编中某个标签没定义啊,定义的标签太多。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void main(){
	
	unsigned char en_data[2046]={0x25,0x80,0x5e,0xc3};//存放待解密的数据
	unsigned char de_data[2046];//存放解密后的数据
	unsigned char key_data[40];
	int en_address=(int)en_data;
	int de_address=(int)de_data;
	int key_address=(int)key_data;
	int len_en_data=strlen((char *)en_data);
	printf("%x\n",en_address);
	printf("%x\n",de_address);
	
	__asm//保存寄存器的值
	{
		push esi
	}
	__asm//初始化寄存器
	{
		mov eax,key_address
		sub eax,0x2000
		mov esi,eax
		mov eax,de_address
		mov ds:[esi+0x2000],eax
		xor eax,eax
		mov ds:[esi+0x2004],eax//初始是一直变化的,暂时定为0
		mov ds:[esi+0x2008],eax
		mov eax,0x07
		mov ds:[esi+0x200c],eax
		mov eax,len_en_data
		shl eax,3
		mov ecx,ds:[esi+0x2004]
		sub eax,ecx
		mov ds:[esi+0x2010],eax
		mov eax,en_address
		mov ds:[esi+0x2014],eax
		xor eax,eax
		mov ds:[esi+0x2018],eax//相当于[ebp-8]
		mov eax,ds:[esi+0x2000]
		mov ds:[esi+0x201c],eax//相当于[ebp-4]
		mov eax,esi
		add eax,0x2020
		mov ds:[esi+0x2020],eax//相当于ebp+8
		mov eax,ds:[esi+0x2014]
		mov ds:[esi+0x2024],eax
		mov ds:[esi+0x2028],eax
		mov eax,0x200
		mov ds:[esi+0x202c],eax

	}
	__asm//算法部分//esi+c,ds:[esi+0x201c],ebp+4,ebp+8
	{
		ElementC_005B56B6:
		mov eax,dword ptr ds:[esi+0x2004]
		mov ecx,dword ptr ds:[esi+0x2014]
		mov edx,eax
		mov dword ptr ds:[esi+0x2008],eax
		shr edx,3
		and eax,7
		add edx,ecx
		mov dword ptr ds:[esi+0x2004],eax
		mov eax,edx
		mov dword ptr ds:[esi+0x2018],ecx
		mov dword ptr ds:[esi+0x2014],edx
		mov ecx,dword ptr ds:[eax]
		mov dword ptr ds:[esi+0x201c],ecx
		mov eax,dword ptr ds:[esi+0x201c]
		bswap eax
		mov dword ptr ds:[esi+0x201c],eax
		mov ecx,dword ptr ds:[esi+0x2004]
		mov eax,dword ptr ss:[esi+0x201c]
		shl eax,cl
		cmp eax,0x80000000
		jnb short ElementC_005B574A
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,8
		add edi,8
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CF4
		mov edx,dword ptr ds:[esi+0x2000]
		shr eax,0x18
		mov byte ptr ds:[edx],al
		mov eax,dword ptr ds:[esi+0x2000]
		inc eax
		mov dword ptr ds:[esi+0x2000],eax
		jmp ElementC_005B5CAB
ElementC_005B574A:
		cmp eax,0xC0000000
		jnb short ElementC_005B5798
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,9
		add edi,9
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		mov ecx,dword ptr ds:[esi+0x2000]
		shr eax,0x17
		or al,0x80
		mov byte ptr ds:[ecx],al
		mov eax,dword ptr ds:[esi+0x2000]
		inc eax
		mov dword ptr ds:[esi+0x2000],eax
		jmp ElementC_005B5CAB
ElementC_005B5798:
		cmp eax,0xF0000000
		jb ElementC_005B589D
		mov edx,dword ptr ds:[esi+0x200c]
		mov edi,dword ptr ds:[esi+0x2010]
		add edx,0x0A
		add ecx,0x0A
		cmp edx,edi
		mov dword ptr ds:[esi+0x2004],ecx
		mov dword ptr ds:[esi+0x200c],edx
		jnb ElementC_005B5CDA
		shr eax,0x16
		and eax,0x3F
		mov ebx,eax
		jnz ElementC_005B5910
		mov ebx,ecx
		mov eax,8
		and ebx,7
		sub eax,ebx
		cmp eax,8
		jnb short ElementC_005B5800
		add ecx,eax
		add eax,edx
		cmp eax,edi
		mov dword ptr ds:[esi+0x2004],ecx
		mov dword ptr ds:[esi+0x200c],eax
		jnb ElementC_005B5CF4
ElementC_005B5800:
		mov edi,dword ptr ds:[esi+0x2000]
		mov ecx,dword ptr ds:[esi+0x201c]//看下这边ds:[esi+0x201c],ds:[esi+0x2020],ds:[esi+0x2018]
		sub edi,ecx
		mov ecx,dword ptr ds:[esi+0x2020]
		mov edx,dword ptr ds:[ecx+8]
		mov eax,dword ptr ds:[ecx+4]
		mov dword ptr ds:[esi+0x2018],edx
		mov ebx,edx
		sub edx,eax
		sub ebx,eax
		add edx,edi
		push edx
//////////////
		mov eax,dword ptr ss:[esp+4]//这里ss:[esp+4]
		push esi
		mov esi,ecx
		cmp eax,dword ptr ds:[esi+C]//这里[esi+c]
		jbe short ElementC_004201CA
		dec eax
		mov dword ptr ds:[esi+C],2//这
		shr eax,1
		je short ElementC_004201A4
ElementC_00420198:
		mov edx,dword ptr ds:[esi+C]///////////
		shl edx,1
		shr eax,1
		mov dword ptr ds:[esi+C],edx////////////
		jnz short ElementC_00420198
ElementC_004201A4:
		mov ecx,dword ptr ds:[esi+C]//////////
		mov eax,dword ptr ds:[esi+4]////////////
		push edi
		mov edi,dword ptr ds:[esi+8]/////////
		push ecx
		push eax
		sub edi,eax
		call realloc               ; MSVCRT.realloc
		add esp,8
		mov dword ptr ds:[esi+4],eax
		add eax,edi
		mov dword ptr ds:[esi+8],eax
		mov eax,esi
		pop edi
		pop esi
		jmp ElementC_005B5825
		//004201C7     C2 0400     retn 4
ElementC_004201CA:
		mov eax,esi
		pop esi
		jmp ElementC_005B5825
		//004201CD     C2 0400     retn 4
		/////////////
ElementC_005B5825:
		mov eax,dword ptr ds:[esi+0x2018]
		test eax,eax
		je short ElementC_005B585C
		mov eax,dword ptr ds:[esi+0x2020]
		mov ecx,dword ptr ds:[eax+4]
		mov edx,dword ptr ds:[eax+8]
		add ebx,ecx
		sub edx,ebx
		push edx
		lea eax,dword ptr ds:[ebx+edi]
		push ebx
		push eax
		call memmove              ; MSVCRT.memmove
		mov ecx,dword ptr ds:[esi+0x201c]
		push edi
		push ecx
		push ebx
		call memmove               ; MSVCRT.memmove
		mov eax,dword ptr ds:[esi+0x2020]
		add esp,0x18
		add dword ptr ds:[eax+8],edi
		jmp short ElementC_005B5879
ElementC_005B585C:
		mov ebx,dword ptr ds:[esi+0x2020]
		mov edx,dword ptr ds:[esi+0x201c]
		push edi
		push edx
		mov eax,dword ptr ds:[ebx+4]
		push eax
		call memmove                ; MSVCRT.memmove
		mov eax,dword ptr ds:[ebx+4]
		add esp,0x0C
		add edi,eax
		mov dword ptr ds:[ebx+8],edi
ElementC_005B5879:
		mov ecx,dword ptr ds:[esi+0x2000]
		sub ecx,esi
		cmp ecx,0x2000
		jnz short ElementC_005B588F
		mov dword ptr ds:[esi+0x2000],esi
ElementC_005B588F:
		mov dword ptr ds:[esi+0x2000],esi
		mov edx,dword ptr ds:[esi+0x2000]
		mov dword ptr ds:[esi+0x201c],edx
		jmp ElementC_005B5CAB
ElementC_005B589D:
		cmp eax,0xE0000000
		jb short ElementC_005B58D9
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x0C
		add edi,0x0C
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		shr eax,0x14
		and eax,0x0FF
		add eax,0x40
		jmp short ElementC_005B590E
ElementC_005B58D9:
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x10
		add edi,0x10
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CDA
		shr eax,0x10
		and eax,0x1FFF
		add eax,0x140
ElementC_005B590E:
		mov ebx,eax
ElementC_005B5910:
		mov eax,dword ptr ds:[esi+0x2004]
		mov edx,dword ptr ds:[esi+0x2014]
		mov ecx,eax
		and eax,7
		shr ecx,3
		add edx,ecx
		mov dword ptr ds:[esi+0x2004],eax
		mov dword ptr ds:[esi+0x2014],edx
		mov eax,dword ptr ds:[edx]
		mov dword ptr ds:[esi+0x2018],eax
		mov eax,dword ptr ds:[esi+0x2018]
		bswap eax
		mov dword ptr ds:[esi+0x2018],eax
		mov ecx,dword ptr ds:[esi+0x2004]
		mov eax,dword ptr ds:[esi+0x2018]
		shl eax,cl
		cmp eax,0x80000000
		jnb short ElementC_005B597F
		mov edx,dword ptr ds:[esi+0x200c]
		inc ecx
		inc edx
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,dword ptr ds:[esi+0x2010]
		mov eax,edx
		cmp eax,ecx
		mov dword ptr ds:[esi+0x200c],edx
		jnb ElementC_005B5CF4
		mov eax,3
		jmp ElementC_005B5C43
ElementC_005B597F:
		cmp eax,0xC0000000
		jnb short ElementC_005B59C0
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,4
		add edi,4
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		and eax,0x30000000
		or eax,0x40000000
		shr eax,0x1C
		jmp ElementC_005B5C43
ElementC_005B59C0:
		cmp eax,0xE0000000
		jnb short ElementC_005B5A01
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,6
		add edi,6
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CDA
		and eax,0x1C000000
		or eax,0x20000000
		shr eax,0x1A
		jmp ElementC_005B5C43
ElementC_005B5A01:
		cmp eax,0xF0000000
		jnb short ElementC_005B5A42
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,8
		add edi,8
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CF4
		and eax,0x0F000000
		or eax,0x10000000
		shr eax,0x18
		jmp ElementC_005B5C43
ElementC_005B5A42:
		cmp eax,0xF8000000
		jnb short ElementC_005B5A83
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x0A
		add edi,0x0A
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		and eax,0x7C00000
		or eax,0x8000000
		shr eax,0x16
		jmp ElementC_005B5C43
ElementC_005B5A83:
		cmp eax,0xFC000000
		jnb short ElementC_005B5AC4
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x0C
		add edi,0x0C
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CDA
		and eax,0x3F00000
		or eax,0x4000000
		shr eax,0x14
		jmp ElementC_005B5C43
ElementC_005B5AC4:
		cmp eax,0xFE000000
		jnb short ElementC_005B5B05
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x0E
		add edi,0x0E
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CF4
		and eax,0x1FC0000
		or eax,0x2000000
		shr eax,0x12
		jmp ElementC_005B5C43
ElementC_005B5B05:
		cmp eax,0xFF000000
		jnb short ElementC_005B5B46
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x10
		add edi,0x10
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		and eax,0x0FF0000
		or eax,0x1000000
		shr eax,0x10
		jmp ElementC_005B5C43
ElementC_005B5B46:
		cmp eax,0xFF800000
		jnb short ElementC_005B5B87
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x12
		add edi,0x12
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CDA
		and eax,0x7FC000
		or eax,0x800000
		shr eax,0x0E
		jmp ElementC_005B5C43
ElementC_005B5B87:
		cmp eax,0xFFC00000
		jnb short ElementC_005B5BC5
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x14
		add edi,0x14
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CF4
		and eax,0x3FF000
		or eax,0x400000
		shr eax,0x0C
		jmp short ElementC_005B5C43
ElementC_005B5BC5:
		cmp eax,0xFFE00000
		jnb short ElementC_005B5C03
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x16
		add edi,0x16
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CC0
		and eax,0x1FFC00
		or eax,0x200000
		shr eax,0x0A
		jmp short ElementC_005B5C43
ElementC_005B5C03:
		cmp eax,0xFFF00000
		jnb ElementC_005B5CF4
		mov edi,dword ptr ds:[esi+0x200c]
		mov edx,dword ptr ds:[esi+0x2010]
		add ecx,0x18
		add edi,0x18
		mov dword ptr ds:[esi+0x2004],ecx
		mov ecx,edi
		cmp ecx,edx
		mov dword ptr ds:[esi+0x200c],edi
		jnb ElementC_005B5CDA
		and eax,0x0FFF00
		or eax,0x100000
		shr eax,8
ElementC_005B5C43:
		mov ecx,dword ptr ds:[esi+0x2000]
		lea edx,dword ptr ds:[esi+0x2000]
		mov edi,ecx
		sub edi,ebx
		cmp edi,esi
		jb ElementC_005B5D0C
		lea ebx,dword ptr ds:[ecx+eax]
		cmp ebx,edx
		ja ElementC_005B5D0C
		mov ebx,ecx
		mov edx,eax
		sub ebx,edi
		cmp ebx,3
		jle short ElementC_005B5C94
		cmp eax,3
		jbe short ElementC_005B5C94
		mov ebx,eax
		shr ebx,2
		mov dword ptr ds:[esi+0x2018],ebx///////////////////////////////////
ElementC_005B5C7E:
		mov ebx,dword ptr ds:[edi]
		add edi,4
		mov dword ptr ds:[ecx],ebx
		mov ebx,dword ptr ds:[esi+0x2018]
		add ecx,4
		sub edx,4
		dec ebx
		mov dword ptr ds:[esi+0x2018],ebx
		jnz short ElementC_005B5C7E
ElementC_005B5C94:
		mov ebx,edx
		dec edx
		test ebx,ebx
		je short ElementC_005B5CA5
		inc edx
ElementC_005B5C9C:
		mov bl,byte ptr ds:[edi]
		mov byte ptr ds:[ecx],bl
		inc ecx
		inc edi
		dec edx
		jnz short ElementC_005B5C9C
ElementC_005B5CA5:
		add dword ptr ds:[esi+0x2000],eax
ElementC_005B5CAB:
		mov ecx,dword ptr ds:[esi+0x2010]
		mov eax,dword ptr ds:[esi+0x200c]
		cmp ecx,eax
		jbe short ElementC_005B5D0C
		jmp ElementC_005B56B6
ElementC_005B5CC0:
		mov ecx,dword ptr ds:[esi+0x2008]
		mov edx,dword ptr ds:[esi+0x2018]
		mov dword ptr ds:[esi+0x2004],ecx
		mov dword ptr ds:[esi+0x2014],edx
		jmp short ElementC_005B5D0C
ElementC_005B5CDA:
		mov eax,dword ptr ds:[esi+0x2008]
		mov ecx,dword ptr ds:[esi+0x2018]
		mov dword ptr ds:[esi+0x2004],eax
		mov dword ptr ds:[esi+0x2014],ecx
		jmp short ElementC_005B5D0C
ElementC_005B5CF4:
		mov edx,dword ptr ds:[esi+0x2008]
		mov eax,dword ptr ds:[esi+0x2018]
		mov dword ptr ds:[esi+0x2004],edx
		mov dword ptr ds:[esi+0x2014],eax
ElementC_005B5D0C:
		mov edi,dword ptr ds:[esi+0x2000]
		mov ecx,dword ptr ds:[esi+0x201c]
	}
	__asm //恢复寄存器
	{
		pop esi
	}
	printf("%x\n",de_data[0]);
}

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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 22
活跃值: (74)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己搞定了。。
2009-7-10 13:06
0
游客
登录 | 注册 方可回帖
返回
//