Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите разобраться (http://forum.oszone.net/showthread.php?t=121893)

morgan1991 03-11-2008 22:57 942168

Помогите разобраться
 
Люди добры помогите детально разобраться с кодом:
Код:

#include <windows.h>
#include <stdio.h>
#include <iostream>

using namespace std;
//hier werden alle Bytes definiert die wir brauchen
//(sie werden spдter an die entsprechenden Speicherstellen geschrieben).

BYTE nametags1[6] = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90};
BYTE nametags2[2] = { 0x90, 0x90};

BYTE laser1[2] = { 0x75, 0x18};
BYTE laser2[2] = { 0x75, 0x0F};

BYTE UAV[4]= { 0xB0, 0x01, 0x90, 0xC3};

BYTE recoil[6] = { 0x0F, 0x85, 0xAA, 0x02, 0x00, 0x00};

int main()
{           
 
cout << "Call of Duty 4 MemoryHack\ncoded by root.\n"; 
bool beenden=1;
while(beenden=1) //Diese Schleife lдuft so lange bis das Programm sich beendet, um Spaghetticode (goto x) zu verhidern.
{
               
    cout << "Was willst du tun?\n0=Beenden 1=NameTags 2=Laser 3=RadarHack 4=Verbugtes NoRecoil\n";
    int eingabe=0;
    cin>>eingabe;   
    if(eingabe==0)
    {
                  return 0;
    }
    cout << "Searching for Cod4... \n";
    HWND window = NULL;
    while(window == NULL)
    {
                  Sleep(100);
                  window = FindWindow(NULL, "Call of Duty 4"); //Finde das Call of Duty 4 Fenster (Danke an KN4CK3R fьr diesen Teil)
    }
    DWORD prozess;
    GetWindowThreadProcessId(window, &prozess);
    HANDLE handle;
    handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozess);
    DWORD puffer = NULL;
    cout << "Writing to Memory... \n"; //Jetzt ьberprьfen wir, was der Benutzer denn eigentlich will
        switch(eingabe)
    {
    case 1:
        WriteProcessMemory(handle,(void*)(0x42E1AC),&nametags1,6,&puffer);
        WriteProcessMemory(handle,(void*)(0x42E1CE),&nametags2,2,&puffer);
        break;
    case 2:
        WriteProcessMemory(handle,(void*)(0x456E5B),&laser1,2,&puffer);
        WriteProcessMemory(handle,(void*)(0x456E52),&laser2,2,&puffer);
        break;
    case 3:
        WriteProcessMemory(handle,(void*)(0x56B662),&UAV,4,&puffer);
        break;
    case 4:
        WriteProcessMemory(handle,(void*)(0x457C79),&recoil,6,&puffer);
        break;
    }   
    CloseHandle(handle);  //Und brav wieder schlieЯen
   
   
}
return 0; 
}

А то ни чё не понимаю.
Если можно поподробнее.
Заранее спасибо.
Всем кто поможет спасибо обещаю.

Alexej77 04-11-2008 12:40 942596

Прога патчит запущенную игру Call Of Duty 4 прямо в памяти в зависимости от выбранного пункта:
Цитата:

Цитата morgan1991
0=Beenden 1=NameTags 2=Laser 3=RadarHack 4=Verbugtes NoRecoil »


morgan1991 04-11-2008 14:58 942719

Не это я знаю, вобщем то это читы для COD4. Я хотел поподробнее узнать как они работают и почему так получается и как узнать какую часть памяти нужно изменять и на что менять. При нажатии 0 - выход , 1 - подсветка ников врагов через стены, 2- лазерный прицел, 3 - постоянный радар, 4 - незнаю.
Помогёте?

Admiral 04-11-2008 17:16 942819

Цитата:

Цитата morgan1991
как узнать какую часть памяти нужно изменять и на что менять. »

Это знают разработчики и те, кто дамп памяти игры анализировал. Так и узнают, на основе исходного кода игры или/и анализа деятельности в памяти.


Время: 13:55.

Время: 13:55.
© OSzone.net 2001-