Ajuda - Busca - Membros - Calendário
Versão Completa: [DUVIDA] Operação com LPVOID
Fórum Script Brasil > Programação & Desenvolvimento > C, C++
WanKapef
CODE
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#pragma comment(lib, "user32.lib")

int main()
{
  HWND     hWindow;
  DWORD    dwPID;
  HANDLE   hProcess;
  
  LPVOID  lpAddress = (LPVOID)0xA6CF9C;   //Pointer
  LPVOID  lpBufferAddress = (LPVOID)0X0;  //Address do pointer
  LPVOID  lpNewAddress = (LPVOID)0x0;     //Address+offset = address verdadeiro
  LPVOID  Offset = (LPVOID)0x3F6;            //Offset

  //Lê o address contido no pointer

     hWindow = FindWindow(0,"Point Blank");
     GetWindowThreadProcessId(hWindow, &dwPID);
     hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
     ReadProcessMemory(hProcess, lpAddress, &lpBufferAddress, sizeof(lpBufferAddress), NULL);
  
  //Acha o novo address
    
     lpNewAddress = lpBufferAddress + Offset;    //lpBufferAddress + 3F6


     system("pause");

  return 0;
}


Como fazer para somar o conteudo de lpBufferAddress com o offset? alguma solução?
Marcelo Utikawa da Fonseca
Um endereço é um número. Porém não é possível fazer a soma diretamente pois não é suportado por LPVOID.
Assim, basta converter para um valor numérico, fazer a soma e converter novamente para LPVOID:

CODE
lpNewAddress = (LPVOID)((unsigned int)lpBufferAddress + (unsigned int)Offset);
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2013 Invision Power Services, Inc.