Solved

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

Posted on 2006-06-12
4
411 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

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
How to install Selenium IDE and loops for quick automated testing. Get Selenium IDE from http://seleniumhq.org (http://seleniumhq.org) Go to that link and select download selenium in the right hand columnThat will then direct you to their downlo…
The viewer will learn how to use and create keystrokes in Netbeans IDE 8.0 for Windows.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.

708 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now