能力值:
( LV2,RANK:10 )
|
-
-
2 楼
请大家指点一下,谢谢了
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
那个ECX值一般是this的多
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
这个还不大懂,看看有熟悉的没,我也好学习一下。
|
能力值:
(RANK:410 )
|
-
-
5 楼
这个问题实在不好回答。说简单也可以,说不简单也可以(因为你并没有说出[ebp-c]的值是如何得到的),简单的是如果[ebp-c]的值是直接赋值给[ebp-c]的,如:mov [ebp-c],xxxxxxxx,那么你只须将xxxxxxxx的值直接传给ecx就行了(mov ecx,xxxxxxxx)。难的是如果在传给[ebp-c]的值是前面经过复杂运算所得到的值,如:
....
....
.... //前面经过复杂运算
mov [ebp-c],xxxxxxxx //最后将值赋给[ebp-c]的临时变量里。
那么,在你的Dll里也必须重复执行前面复杂的运算,最后将得到的值赋给ecx就行了。如:
.....
.....
.....
mov ecx.xxxxxxxx
push 1
push 985555
push 785
call 0062C6D0
|
能力值:
(RANK:410 )
|
-
-
6 楼
不过的确很像C++中的函数调用前的this指针。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
听了上面的指点以后,我感觉聪明了很多,谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
ecx每次都是固定的值
我只是不知道如何在vc里处理象ecx这样的变量
用内嵌汇编
_asm{
mov ecx,f19c20;
}
然后再函数调用,这样可以吗?调试不出来。
|
能力值:
(RANK:410 )
|
-
-
9 楼
自己试试不就明白了,如果不行,那么调用这个函数就全部用内嵌汇编完成也一样。
__asm{
mov ecx,0xf19c20
push 985555
push 785
call 0062C6D0
}
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
谢谢楼上的,可以了
但是如果全都内嵌就是
__asm{
mov ecx,0xf19c20
push 985555
push 785
call 0062C6D0
}
是不行的,我的vc会报错误improper operand type
用
_asm{
mov ecx,0xf19c20
}
然后函数调用,没有问题
谢谢你了,给了我这么多知识
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
全部照搬了
__asm{
mov ecx,0xf19c20
push 985555
push 785
call 0062C6D0 ***这句错了
}
改成两句
mov eax, 0x0062C6D0
call eax
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
啊,是的,谢谢楼上的,不自己弄一次还真加深不了印象,以前看过别人说过也没过脑子...
呵呵,麻烦大家了!!
还是内嵌进去方便!!
|
能力值:
(RANK:10 )
|
-
-
13 楼
在c中可以这样用
DWORD p=0xxxxxxxxx
然后直接
call p
不可以
但在delphi中这样内嵌汇编是不成立了。
所以只能接触寄存器
mov eax, xxxx
call eax
如果楼主有兴趣可以加我qq和你探讨一下。刚好这2天也在研究这个。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
想联系你,可是找不到你QQ
写下我的QQ:110121121
|
|
|