Показать сообщение отдельно
Старый 10.04.2007, 23:49   #5
dark
Читодел
Аватар для dark
OFFLINE
Регистрация: 09.04.2007
Сообщений: 984
Благодарностей:
36,602 всего
Мнения: + 37881
Репутация: 116469
Отправить сообщение для dark с помощью ICQ Отправить сообщение для dark с помощью Skype™

Цитата:
Сообщение от Sammael Посмотреть сообщение
выложи исходник второго плз

Ну или ссылку кинь)
Ты мне? )
Если да, вот:

Код:
#include <windows.h> 
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <tlhelp32.h> 
#include <conio.h>

typedef struct _PLAYER_DATA {    
    BYTE chk[1];   
    BYTE chk1[1];  
    BYTE chk2[1];
    BYTE chk3[1];
    BYTE chk4[1];
    BYTE chk5[1];
    DWORD chka;    
    DWORD chk1a;
    DWORD chk2a;
    DWORD chk3a;
    DWORD chk4a;
    DWORD chk5a;  
    DWORD baseadd[1]; 
    DWORD baseaddar4[1];
    DWORD hp[1]; 
    DWORD hpa; 
    DWORD hpmax[1]; 
    DWORD hpmaxa; 
    DWORD fp[1]; 
    DWORD fpa;
    DWORD fpmax[1];
    DWORD fpmaxa; 
    DWORD sp[1]; 
    DWORD spa;
    DWORD spmax[1];
    DWORD spmaxa; 
       
} PLAYER_DATA; 

typedef int bool; 
int fight; 
bool debug = 0; 
HANDLE hProcess; 
HWND hrfo; 
PLAYER_DATA myp; 


void CheckHP();
void CheckFP(); 
void CheckSP(); 
int GetPidByName ( char * nom ); 
PLAYER_DATA GetMyPlayerData(); 
void PrintMyPlayerData(PLAYER_DATA myp); 


void CheckHP() //проверка ХП
{ 
     if ((myp.hp[0] <= (myp.hpmax[0]-3000)) && (myp.chk5[0] == 0) && (myp.chk[0] != 0)) //Если ХП уменьшилось на 3000 и панелька 1 и слот 5 забит
     { 
      keybd_event(VK_F5, 0, 0, 0); 
      keybd_event(VK_F5, 0, KEYEVENTF_KEYUP, 0); 
     }          
     
     if ((myp.hp[0] <= (myp.hpmax[0]-3000)) && (myp.chk5[0] == 1) && (myp.chk3[0] != 0)) //Если ХП уменьшилось на 3000 и панелька 2 и слот 10 забит
     {
      keybd_event(VK_F10, 0, 0, 0);   //Жмет F10 если Хп меньше маскимального на 3000 и панелька 2
      keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0); 
     }    
} 

void CheckFP() //проверка ФП
{ 
     if ((myp.fp[0] <= (myp.fpmax[0]-500)) && (myp.chk5[0] == 0) && (myp.chk1[0] != 0)) //Если ФП уменьшилось на 500 и панелька 1 и слот 6 забит
     { 
      keybd_event(VK_F6, 0, 0, 0);   //Жмет F6 если Мп меньше маскимального на 500
      keybd_event(VK_F6, 0, KEYEVENTF_KEYUP, 0); 
     }
     if ((myp.fp[0] <= (myp.fpmax[0]-500)) && (myp.chk5[0] == 1) && (myp.chk4[0] != 0)) //Если ФП уменьшилось на 500 и панелька 2 и слот 9 забит
     {
      keybd_event(VK_F9, 0, 0, 0);   //Жмет F9 если Мп меньше маскимального на 500 и панелька 2
      keybd_event(VK_F9, 0, KEYEVENTF_KEYUP, 0); 
     }               
      
} 

void CheckSP() //проверка SP
{ 
     if ((myp.sp[0] <= (myp.spmax[0]-400)) && (myp.chk5[0] == 0) && (myp.chk2[0] != 0)) //Если СП уменьшилось на 400 и панелька 1 и слот 7 забит
     { 
      keybd_event(VK_F7, 0, 0, 0); 
      keybd_event(VK_F7, 0, KEYEVENTF_KEYUP, 0); 
     }                
      
} 




int GetPidByName ( char * nom )  //эту поеботу я даже боюсь трогать :D
{ 
    HINSTANCE      hLib;                
    PROCESSENTRY32 PEntry;              
    HANDLE         hTool32;             
    
   
    HANDLE (WINAPI *pCreateToolhelp32Snapshot)(DWORD,DWORD); 
    BOOL   (WINAPI *pProcess32First)          (HANDLE,LPPROCESSENTRY32); 
    BOOL   (WINAPI *pProcess32Next)           (HANDLE,LPPROCESSENTRY32); 
    
  
    pCreateToolhelp32Snapshot = (HANDLE(WINAPI *)(DWORD,DWORD))             GetProcAddress ( LoadLibrary("kernel32.dll"), "CreateToolhelp32Snapshot" ); 
    pProcess32First           = (BOOL(WINAPI *)  (HANDLE,LPPROCESSENTRY32)) GetProcAddress ( LoadLibrary("kernel32.dll"), "Process32First" ); 
    pProcess32Next            = (BOOL(WINAPI *)  (HANDLE,LPPROCESSENTRY32)) GetProcAddress ( LoadLibrary("kernel32.dll"), "Process32Next" ); 
    
   
    PEntry.dwSize = sizeof(PROCESSENTRY32); 
    
    
    hTool32 = pCreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); 
    
   
    pProcess32First ( hTool32, &PEntry ); 
    
  
    if ( !strcmp ( PEntry.szExeFile, nom ) ) 
        return PEntry.th32ProcessID; 

    
    while ( pProcess32Next(hTool32,&PEntry) ) 
        if(!strcmp(PEntry.szExeFile,nom)) 
            return PEntry.th32ProcessID; 

  
    return 0; 
} 

PLAYER_DATA GetMyPlayerData(HANDLE hProcess) 
{ 
    DWORD mBase = 0x01127538;      //указатель на начало структуры
    DWORD mBasear4 = 0x010FCA1C; 
    PLAYER_DATA Player;        
    ZeroMemory(&Player, sizeof(PLAYER_DATA));     
    ReadProcessMemory(hProcess, (LPCVOID)mBase, (LPVOID)Player.baseadd, 4, NULL);      
    ReadProcessMemory(hProcess, (LPCVOID)mBasear4, (LPVOID)Player.baseaddar4, 4, NULL);
    Player.fpa = Player.baseadd[0] + 0x4F3C; 
    Player.fpmaxa = Player.baseadd[0] + 0x4F38;
    Player.hpa = Player.baseadd[0] + 0x4F2C; 
    Player.hpmaxa = Player.baseadd[0] + 0x4F28; 
    Player.spa = Player.baseadd[0] + 0x4F4C; 
    Player.spmaxa = Player.baseadd[0] + 0x4F48; 
    Player.chka = Player.baseaddar4[0] + 0xC9A;   //слот 5
    Player.chk1a = Player.baseaddar4[0] + 0xEBa;  //слот 6
    Player.chk2a = Player.baseaddar4[0] + 0x10DA; //слот 7
    Player.chk3a = Player.baseaddar4[0] + 0x2EEA; //слот 10
    Player.chk4a = Player.baseaddar4[0] + 0x2CCA; //слот  9
    Player.chk5a = Player.baseaddar4[0] + 0x11; //номер панельки
    ReadProcessMemory(hProcess, (LPCVOID)Player.fpa, (LPVOID)Player.fp, 4, NULL);  
    ReadProcessMemory(hProcess, (LPCVOID)Player.fpmaxa, (LPVOID)Player.fpmax, 4, NULL);
    ReadProcessMemory(hProcess, (LPCVOID)Player.hpa, (LPVOID)Player.hp, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.hpmaxa, (LPVOID)Player.hpmax, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.spa, (LPVOID)Player.sp, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.spmaxa, (LPVOID)Player.spmax, 4, NULL);
    ReadProcessMemory(hProcess, (LPCVOID)Player.chka, (LPVOID)Player.chk, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.chk1a, (LPVOID)Player.chk1, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.chk2a, (LPVOID)Player.chk2, 4, NULL); 
    ReadProcessMemory(hProcess, (LPCVOID)Player.chk3a, (LPVOID)Player.chk3, 4, NULL);
    ReadProcessMemory(hProcess, (LPCVOID)Player.chk4a, (LPVOID)Player.chk4, 4, NULL);
    ReadProcessMemory(hProcess, (LPCVOID)Player.chk5a, (LPVOID)Player.chk5, 4, NULL); 
    return Player;     
} 


int main() 
{ 

   
   DWORD pid; 
   pid = (DWORD)GetPidByName("RF_Online.bin"); 
   hProcess = OpenProcess(PROCESS_VM_READ, FALSE, pid); 
    
    if (hProcess == NULL) 
    { 
     printf("[-]Please Start Game First...\n");
     printf("Press any key....");
     getch();
    } 
    else 
    { 
        hrfo = FindWindow(NULL,"RF Online"); 
       if(hrfo == NULL) 
       { 
              printf("[-]Impossible de trouver le handle de la fenЄtre!\n"); 
       } 
        
    
    
        
        myp = GetMyPlayerData(hProcess); 
        ShowWindow(hrfo,SW_RESTORE);
        SetForegroundWindow(hrfo);
        
        
        while (1 == 1) 
        { 
         Sleep(1);  
         myp = GetMyPlayerData(hProcess); 
         CheckHP();
         CheckFP();              
         CheckSP();
              
        } 

    }
Правда, ума не приложу, зачем он тебе, в первом посте бот по-продвинутей.
 
Ответить с цитированием