Add fake device to Windows Device Manager

佐手、 提交于 2021-01-25 07:23:16

问题


I try to add some string (fake device) to Windows Device Manager. I tried this code but it doesn't work:

procedure AddSomeString(AHandle:THandle);
var
 vItem: TLVItemW;
 vPointer,vPointerText:Pointer;
 vNumberOfBytesRead,vProcessId: SIZE_T;
 vProcess: THandle;
 vBuffer: array[ 0..255 ] of Char;
begin
      GetWindowThreadProcessId( AHandle, @vProcessId );
      vProcess := OpenProcess( PROCESS_ALL_ACCESS, False, vProcessId );
      vPointer := VirtualAllocEx( vProcess, nil, 4096, MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE );
      vPointerText := VirtualAllocEx( vProcess, nil,256,MEM_RESERVE or MEM_COMMIT,PAGE_READWRITE );
      vBuffer := 'Test';
      with vItem do
       begin
        mask       := LVIF_TEXT;
        iItem      := 0;
        iSubItem   := 0;
        cchTextMax := SizeOf( vBuffer );
        pszText    := vPointerText;
       end;
    
      WriteProcessMemory( vProcess, vPointer, @vItem, SizeOf( TLVItemW ), vNumberOfBytesRead );
      WriteProcessMemory( vProcess, vPointerText, @vBuffer[ 0 ], SizeOf( vBuffer ), vNumberOfBytesRead );
    
      SendMessage( AHandle, LVM_INSERTITEM, 0, lparam( vPointer ) );
      SendMessage( AHandle, LVM_SETITEMTEXT, 0, lparam( vPointer ) );
    
      VirtualFreeEx(vProcess, vPointer, 0, MEM_RELEASE);
      VirtualFreeEx(vProcess, vPointerText, 0, MEM_RELEASE);
      CloseHandle(vProcess);
end; 

I am passing to the function handle of SysTreeView32, but SendMessage is always = 0

Can anyone suggest a working example?

来源:https://stackoverflow.com/questions/65414469/add-fake-device-to-windows-device-manager

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!