首页
社区
课程
招聘
Dephi Hook后 修改返回值 成乱码
发表于: 2009-12-25 13:17 3759

Dephi Hook后 修改返回值 成乱码

2009-12-25 13:17
3759
代码如下,lpBuffer这个值存放返回值的,但是改过之后显示的是乱码,模板是坛子里边下的

function NewGetComputerNameW(lpBuffer:String;nSize:integer):cardinal;stdcall;
type
  TNewNewGetComputerNameW= function(lpBuffer:String;nSize:integer):cardinal; stdcall;
begin
Hook[1].UnHook;
  result:=TNewNewGetComputerNameW(Hook[1].BaseAddr)(lpBuffer,nSize);
  lpBuffer:='abc';
  result:=0;
  Hook[1].Hook;
  end;

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 4560
活跃值: (1002)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
应该是调用约定问题,造成堆栈不平衡吧
2009-12-25 13:28
0
雪    币: 121
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
3Q
楼上是指stdcall调用约定呢
我看过dephi调用getcomputername 也是使用的stdcall方式呢
2009-12-25 13:41
0
雪    币: 231
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
lpBuffer = 'abc'
出现这样的语句,有没有可能是unicode与ascii编码,以及字符集之间产生的一种正常的现象.
2009-12-25 13:46
0
雪    币: 121
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
正解了
W --》LPCWSTR  与string之间如果直接转换的确是乱码 要采用特定的方式 来转换,好像有个API吧,我google下 谢了
2009-12-25 13:58
0
游客
登录 | 注册 方可回帖
返回
//