Solved

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

Posted on 2006-06-12
4
418 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

On Demand Webinar: Networking for the Cloud Era

Ready to improve network connectivity? Watch this webinar to learn how SD-WANs and a one-click instant connect tool can boost provisions, deployment, and management of your cloud connection.

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 perform CRUD operations on a MySql database.
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

724 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