Solved

Stuck on ReadProcessMemory() for over a week, can someone please take a look

Posted on 2006-06-12
4
415 Views
Last Modified: 2013-11-17
All the functions below main work fine, The SendMessage() work fine, Just the ReadProcessMemory. What I am trying to do is to copy a string from a listbox, to variable (with out looking at my code i think the variable is "testing". I have been programming 8 months, so i am not that experienced, my code might look like garbage in that ReadProcessMemory(), i have been trying differen't things.

Code is below

#include<iostream>
#include<windows.h>
 
using std::cin;
using std::cout;
using std::endl;
 
HWND AOL();
HWND MDI();
HWND ListBox();
HWND FindChat();
 
int main()
{
   
    DWORD LBthread;
    DWORD ProcessID;
    char ScreenNames[17];
   
    DWORD NumberOfPeopleInRoom;
    unsigned long bytes;
   
    LBthread = GetWindowThreadProcessId(ListBox(),&ProcessID);
   
    HANDLE OpenProc;
    OpenProc = OpenProcess(PROCESS_VM_READ,FALSE,ProcessID);
   
    if(OpenProc)
    {
        NumberOfPeopleInRoom = SendMessage(ListBox(), LB_GETCOUNT, 0, 0) - 1;
        cout << NumberOfPeopleInRoom << endl;
       
        DWORD itemData;
        WORD length;
        TCHAR *pszCmdLine = new TCHAR[length];
       
        itemData = SendMessage(ListBox(), LB_GETITEMDATA,(WPARAM) 10,0);
        ReadProcessMemory(OpenProc,(LPVOID) itemData,pszCmdLine,length,&bytes);
        /*
struct __INFOBLOCK
{
    DWORD   dwFiller[16];
    WORD    wLength;
    WORD    wMaxLength;
    DWORD   dwCmdLineAddress;
} Block;

ReadProcessMemory(hProcess, (LPVOID) PEB.dwInfoBlockAddress,
                             &Block, sizeof(Block), &dwSize);
TCHAR *pszCmdLine = new TCHAR[Block.wMaxLength];

ReadProcessMemory(hProcess, (LPVOID) Block.dwCmdLineAddress,
                  pszCmdLine, Block.wMaxLength, &dwSize);
       
        */
     
            char testing[17];
            CopyMemory(&testing,&pszCmdLine,bytes);
       
            cout << *testing << endl;
     
    }
 
   
    system("PAUSE");
    return 0;
}
 
HWND AOL()
{
    HWND AOLwindow;
    AOLwindow = FindWindowEx(0,0,"AOL Frame25",0);
    return AOLwindow;  
}
 
HWND MDI()
{
    HWND MDIwindow;
    MDIwindow = FindWindowEx(AOL(),0,"MDIClient",0);
    return MDIwindow;    
}
 
HWND FindChat()
{
     HWND hwndChild = 0, hwndAOLChatForm = 0;
     
     do
     {
          hwndAOLChatForm = FindWindowEx(hwndChild, 0, "_AOL_Static", "AOL_CHAT_FORM");
          if (hwndAOLChatForm) break;
          hwndChild = FindWindowEx(MDI(), hwndChild, "AOL Child", 0);
     }
     while (hwndChild);
     return hwndChild;
}
 
HWND ListBox()
{
    HWND listbox;
    listbox = FindWindowEx(FindChat(),0,"_AOL_Listbox",0);
    return listbox;
}
 
 
0
Comment
Question by:crims
  • 2
  • 2
4 Comments
 
LVL 11

Accepted Solution

by:
Jase-Coder earned 250 total points
ID: 16892486
where is hProcess defined and is the process(hProcess) created using PROCESS_VM_READ?
0
 

Author Comment

by:crims
ID: 16899212
Wouldn't the handle be the OpenProc variable?


hProcess
    [in] A handle to the process with memory that is being read. The handle must have PROCESS_VM_READ access to the process.
0
 
LVL 11

Expert Comment

by:Jase-Coder
ID: 16899985
thats correct:

    HANDLE OpenProc;
    OpenProc = OpenProcess(PROCESS_VM_READ,FALSE,ProcessID);

0
 

Author Comment

by:crims
ID: 16917397
I don't understand the second parameter, of this function, it says a "base address" a base address to the handle, to the item to what??????? i don't get it. I tried everything i can think of.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In our object-oriented world the class is a minimal unit, a brick for constructing our applications. It is an abstraction and we know well how to use it. In well-designed software we are not usually interested in knowing how objects look in memory. …
Programmer's Notepad is, one of the best free text editing tools available, simply because the developers appear to have second-guessed every weird problem or issue a programmer is likely to run into. One of these problems is selecting and deleti…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question