首页
社区
课程
招聘
[求助]用DLL劫持实现API HOOK 使软件绿化 碰到的问题。
发表于: 2010-2-1 20:26 4887

[求助]用DLL劫持实现API HOOK 使软件绿化 碰到的问题。

2010-2-1 20:26
4887
这软件就是 mediamonkey 什么都好。就是配置保存到系统盘的ProgramData下面的。 目的是保存到其他分区

分析后软件是通过 读取注册表找到 ProgramData 所在位置的。于是想到 HOOK RegQueryValueEx 来实现。

为防止软件更新后补丁也要更新。用了DLL劫持。

HOOK RegQueryValueEx  代码:

function RegQueryValueEx_Proc(Hkey:HKEY;pValueName:PWideChar;lpReserved:Pointer;lpType:Pdword;lpData:Pbyte;lpcbData:Pdword):integer; stdcall;
begin
        result:=RegQueryValueEx_Next(fhkey,pValueName,lpReserved,lpType,lpData,lpcbData);
  DoEdit(pValueName,'只是一个测试',lpData,lpcbData);
.......................

Procedure DoEdit(Key,Str_val:widestring;val:PByte;len:Pdword);
var Flen:dword;
begin
Flen:=Length(Str_val)*2;
Move(str_val[1],val^,flen);
len^:=FLen;
end;

问题:

软件读取同一个键值用了 2次 RegQueryValueEx 前一次可能是判断键值是否存在。
按上面修改后。发现软件得到值的长度 不是 len^:=FLen;(这里是12) 取出来的值是 大于6个字的。 这是为什么呢。

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

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回