• 4607阅读
  • 5回复

[提问]这段代码在QT中要如何写? [复制链接]

上一主题 下一主题
离线1218423706
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-19
初次使用QT,以前都是在VC下写代码

  1. void GetProcessID()
  2. {
  3.     //提升程序权限,使其能够修改war进程。
  4.     HANDLE hcurrent=GetCurrentProcess();
  5.     HANDLE hToken;
  6.     BOOL bret=OpenProcessToken(hcurrent,TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken);
  7.     LUID luid;
  8.     bret=LookupPrivilegeValue(NULL,"SeDebugPrivilege",&luid);
  9.     TOKEN_PRIVILEGES NewState,PreviousState;
  10.     DWORD ReturnLength;
  11.     NewState.PrivilegeCount =1;
  12.     NewState.Privileges[0].Luid =luid;
  13.     NewState.Privileges[0].Attributes=2;
  14.     bret=AdjustTokenPrivileges(hToken,FALSE,&NewState,28,&PreviousState,&ReturnLength);
  15.     CloseHandle(hToken);
  16.     //找到war的窗体句柄,并获得进程PID
  17.     HWND hwar3=::FindWindow(NULL,TEXT("Warcraft III"));
  18.     DWORD PID, TID;
  19.     TID = ::GetWindowThreadProcessId (hwar3, &PID);
  20.     //打开war进程以供编辑
  21.     HANDLE hopen=OpenProcess( PROCESS_ALL_ACCESS|PROCESS_TERMINATE|PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE,FALSE,PID);
  22.     WriteProcessMemory(hopen,(LPVOID)(0x39EBBC+0x6f000000),"\x75",1,NULL);
  23.     WriteProcessMemory(hopen,(LPVOID)(0x3A2030+0x6f000000),"\x90\x90",2,NULL);
  24.     WriteProcessMemory(hopen,(LPVOID)(0x3A20DB+0x6f000000),"\x90\x90",2,NULL);
  25.     WriteProcessMemory(hopen,(LPVOID)(0x361F7C+0x6f000000),"\x00",1,NULL);
  26.     WriteProcessMemory(hopen,(LPVOID)(0x2031EC+0x6f000000),"\x90\x90\x90\x90\x90\x90",6,NULL);//显示技能
  27.     WriteProcessMemory(hopen,(LPVOID)(0x34FDE8+0x6f000000),"\x90\x90",2,NULL);
  28.     /////////////////////////////////////////////////技能CD
  29.     WriteProcessMemory(hopen,(LPVOID)(0x28ECFE+0x6f000000),"\xEB",1,NULL);//显示技能  
  30.     WriteProcessMemory(hopen,(LPVOID)(0x34FE26+0x6f000000),"\x90\x90\x90\x90",4,NULL);
  31.     WriteProcessMemory(hopen,(LPVOID)(0x34E8E2+0x6f000000),"\xB8\xC8\x00\x00",4,NULL);//允许交易
  32.     WriteProcessMemory(hopen,(LPVOID)(0x34E8E7+0x6f000000),"\x90",1,NULL);
  33.     ///////////////////////////////显示隐形单位
  34.     WriteProcessMemory(hopen,(LPVOID)(0x362391+0x6f000000),"\x38",1,NULL);
  35.     WriteProcessMemory(hopen,(LPVOID)(0x362394+0x6f000000),"\x85",1,NULL);
  36.     WriteProcessMemory(hopen,(LPVOID)(0x39A51B+0x6f000000),"\x90\x90\x90\x90\x90\x90",6,NULL);
  37.     WriteProcessMemory(hopen,(LPVOID)(0x39A52E+0x6f000000),"\x90\x90\x90\x90\x90\x90\x90\x90\x33\xC0\x40",11,NULL);
  38.     ///////////////////////////////////////////////////分辨幻影
  39.     WriteProcessMemory(hopen,(LPVOID)(0x28357C+0x6f000000),"\x40\xC3",2,NULL);
  40.     //敌方信号
  41.     WriteProcessMemory(hopen,(LPVOID)(0x43F9A6+0x6f000000),"\x3B",1,NULL);
  42.     WriteProcessMemory(hopen,(LPVOID)(0x43F9A9+0x6f000000),"\x85",1,NULL);
  43.     WriteProcessMemory(hopen,(LPVOID)(0x43F9B9+0x6f000000),"\x3B",1,NULL);
  44.     WriteProcessMemory(hopen,(LPVOID)(0x43F9BC+0x6f000000),"\x85",1,NULL);
  45. }




错误


8: error: cannot convert 'const char*' to 'const WCHAR*' for argument '2' to 'BOOL LookupPrivilegeValueW(const WCHAR*, const WCHAR*, _LUID*)'
33: error: invalid suffix "+0x6f000000" on integer constant
43: error: invalid suffix "+0x6f000000" on integer constant



离线ffii4455

只看该作者 1楼 发表于: 2012-05-19
搞什么不好,搞外挂。。。。
离线roywillow

只看该作者 2楼 发表于: 2012-05-19
用mingw编译调用winapi的代码确实不好办
你试试在所有的c串前都加上L试试,L"abc"而不是"abc"
或者undef UNICODE之类的,让winapi强制调用A而不是W
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线1218423706
只看该作者 3楼 发表于: 2012-05-20
好多API都会报错
离线1218423706
只看该作者 4楼 发表于: 2012-05-20
回 2楼(roywillow) 的帖子
能不能换别的编译了 这样好不习惯啊
在VC下正常的 到QT下会报错
离线1218423706
只看该作者 5楼 发表于: 2012-05-20
回 2楼(roywillow) 的帖子
0x39A52E+0x6f000000
error: invalid suffix "+0x6f000000" on integer constant
这个怎么解决呢
快速回复
限100 字节
 
上一个 下一个