首页
社区
课程
招聘
vc内联汇编编译不能通过
发表于: 2006-10-16 08:35 6364

vc内联汇编编译不能通过

2006-10-16 08:35
6364
我把从ida中提取出来 的汇编代码嵌入到 vc中。准备做一个注册机,可是vc在编译下面的一段代码的时候,提示出错。不知道要怎样修改才能通过?
loc_804B87E:				; CODE XREF: sub_804B7CC+BB.j
		mov	edx, ebx
		mov	al, [esi]
		inc	ebx
		inc	esi
		xor	[edx], al
		dec	ecx
		jns	short loc_804B87E
		mov	ax, word ptr [ebp+var_20C+2]
		push	22h		; size_t
		mov	word ptr [ebp+var_27C],	ax
		lea	eax, [ebp+var_206]
		push	eax		; void *
		lea	edx, [ebp+var_27C+2]
		push	edx		; void *
		call	_memcpy
		push	28h		; size_t
		lea	eax, [ebp+var_1D6] 


提示mov        ax, word ptr [ebp+var_20C+2]这里出错

loc_804D350:				; CODE XREF: sub_804D220+B9.j
		mov	eax, 20h
		sub	eax, [ebp+var_2C]
		mov	[ebp+var_28], eax
		mov	edx, edi
		mov	cl, byte ptr [ebp+var_2C]
		shl	edx, cl
		mov	eax, esi
		mov	cl, byte ptr [ebp+var_28]
		shr	eax, cl
		mov	cl, byte ptr [ebp+var_2C]
		shl	esi, cl
		mov	edi, edx
		mov	cl, byte ptr [ebp+var_28]
		mov	edx, [ebp+var_34]
		or	edi, eax
		shr	edx, cl
		mov	eax, [ebp+var_34]
		mov	cl, byte ptr [ebp+var_2C]


提示mov        cl, byte ptr [ebp+var_2C]出错。
出错的提示是:
error C2408: illegal type on PTR operator in 'second operand'

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 255
活跃值: (175)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
应该是不知道var_20C的值是多少!
2006-10-16 08:40
0
雪    币: 3
活跃值: (353)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
最初由 lee 发布
应该是不知道var_20C的值是多少!


已经在宏中定义了
#define    var_20C                dword        ptr -20Ch
2006-10-16 11:11
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最初由 wsgtrsys 发布
已经在宏中定义了
#define var_20C dword ptr -20Ch


不要把var_20C进行宏定义!
2006-10-16 11:40
0
雪    币: 3
活跃值: (353)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
最初由 zhuanyi 发布
不要把var_20C进行宏定义!


那要怎样做?
2006-10-16 14:25
0
雪    币: 291
活跃值: (213)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
#define    var_20C    -20Ch
可能还是不行
2006-10-16 18:28
0
雪    币: 210
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的应该可以 但是函数多的时候会出错的 你应该直接先把ida里的数据转换成-20Ch的形式再复制出来
2006-10-16 19:30
0
雪    币: 75
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
局部变量。!

你用OD扣出来。

2006-10-16 19:55
0
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
mov  ax, word ptr [ebp+var_20C+2]  ->
mov  eax, [ebp+var_20C+2]

mov  word ptr [ebp+var_27C],  ax  ->
mov  [ebp+var_27C],  eax

想精确WORD类型用其他方法
2006-10-16 23:12
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
var_2C ,这个变量直接申请在函数内部,让他编程局部变量,不用用宏

ebp 直接用晕,
把ebp 先push了
整个调用完后 pop
就可以了
2006-10-16 23:50
0
雪    币: 3
活跃值: (353)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
我搞不定了.费了力气嵌入到vc后,运行 提示非法内存访问

这是一个linux下的软件,看有没有高手帮我将
call    sub_804C3AE  
这个call内的全部内容嵌入到vc 中
先谢了
软件及ida5加注释的压缩包地址:
ftp://gtr:cca@61.161.79.48/crack.rar
2006-10-17 09:03
0
雪    币: 3
活跃值: (353)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
因为在内联汇编中,有一个linux下的ioctl函数。 在win下,是没有这个函数的,我把这个函数替换为memcpy。用memcpy把一个字符数组的内容考贝到一个局部变量中。

结果程序运行 后提示非法的内容操作。
2006-10-17 10:53
0
游客
登录 | 注册 方可回帖
返回
//