Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ - PROCESY


Rekomendowane odpowiedzi

Opublikowano

Czemu nie Cheat Engine? Jeśli nie chcesz mieć zbyt wiele wspólnego z programowaniem możesz użyć wbudowanego "Generatora trainerów", wystarczy że poszukasz adressów/pointerów/offsetów i przypiszesz ich zmianę do jakiegoś klawisza na klawiaturze.

Bot do gry NosTale:


[bOT] NosBota 1.3v

Opublikowano

No dobra, mam znaleziony pointer tworzę tym generatorem trainerów i wgl nie działa nie mogę nigdzie offsetu dopisać ni nic 

65135238787935115850.gif

Opublikowano
#include <iostream>
#include <windows.h>
using namespace std;

int main()

{

    int newValue = 43;


    HWND hWnd = FindWindow(0, "Saper");

    if (hWnd == 0) {

        cerr << "Nie widac okna ." << endl;


    } else {


        DWORD pId;


        GetWindowThreadProcessId(hWnd, &pId);


        HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);


        if (!hProc) {


            cerr << "Nie odczytano procesu." << endl;


        } else {


            int isSuccessful = WriteProcessMemory(hProc, (LPVOID)0x0042909C, &newValue, (DWORD)sizeof(newValue), NULL);


            if (isSuccessful > 0) {


                clog << "Odczytano proces ." << endl;




            } else {




                cerr << "Nie odczytano pamieci." << endl;


            }


            CloseHandle(hProc);
        }


    }


   return 0;
}

Dobra, ogarnąłem ten kod na szczęście działa, jak mogę dorzucić do tego offset oraz zrobić to na klawisz. naciskam F1 i mi sie zmienia wartość?

65135238787935115850.gif

Opublikowano

wtf ?

if (isSuccessful > 0) {


                clog << "Odczytano proces ." << endl;




            } else {




                cerr << "Nie odczytano pamieci." << endl;


            }
Przecież używasz WPM więc nie odczytujesz pamięci tylko zapisujesz/zmieniasz wartość . A pozatym wszystko skopiowane z mojego tematu a kod pewnego użytkownika .Jak ty chcesz coś dodać jak ty nawet nie rozumiesz co te poszczególne funkcje robią ? Możesz użyć GetKeyState() lub keybd_event. A pozatym napisałem ci na pierwszej stronie jak się dodaje offsety , żeby dotrzeć do base adresu.
nostaleh.png
Opublikowano
#include <iostream>
#include <windows.h>
using namespace std;

int main()

{

    int newValue = 43;


    HWND hWnd = FindWindow(0, "Saper");

    if (hWnd == 0) {

        cerr << "Nie widac okna ." << endl;


    } else {


        DWORD pId;


        GetWindowThreadProcessId(hWnd, &pId);


        HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);


        if (!hProc) {


            cerr << "Nie odczytano procesu." << endl;


        } else {


            int isSuccessful = WriteProcessMemory(hProc, (LPVOID)0x0042909C, &newValue, (DWORD)sizeof(newValue), NULL);


            if (isSuccessful > 0) {


                clog << "Odczytano proces ." << endl;




            } else {




                cerr << "Nie odczytano pamieci." << endl;


            }


            CloseHandle(hProc);
        }


    }


   return 0;
}

Dobra, ogarnąłem ten kod na szczęście działa, jak mogę dorzucić do tego offset oraz zrobić to na klawisz. naciskam F1 i mi sie zmienia wartość?

 

Musisz mieć statyczny adres, by zrobić offset.

Skończ proszę się kompromitować. Jesteś nikim.

Opublikowano

Lap bedziesz mial prosciej do uzytku

 

ProcessManager.h

#ifndef PROCESSMANAGER_H_INCLUDED
#define PROCESSMANAGER_H_INCLUDED

#include <windows.h>

class ProcessManager
{
public:
    ProcessManager() {};
    ~ProcessManager() {};

    bool selectByWindowName(const char* s, DWORD dwFlags = PROCESS_ALL_ACCESS);
    bool selectByWindowClass(const char* s, DWORD dwFlags = PROCESS_ALL_ACCESS);

    template<typename T>
    T readAddress(DWORD dwAddress)
    {
        T retVal;
        ReadProcessMemory(m_pHandle, (void*)dwAddress, &retVal, sizeof(T), NULL);
        return retVal;
    }

    template<typename T>
    bool writeAddress(DWORD dwAddress, T val)
    {
        return WriteProcessMemory(m_pHandle, (void*)dwAddress, &val, sizeof(T), NULL) > 0 ? true : false;
    }

private:
    bool selectWindowProcess(const char* sClass, const char* sName, DWORD dwFlags);

protected:
    HANDLE m_pHandle;
};

#endif // PROCESSMANAGER_H_INCLUDED

ProcessManager.cpp

#include "ProcessManager.h"

bool ProcessManager::selectByWindowName(const char* s, DWORD dwFlags/* = PROCESS_ALL_ACCESS */)
{
    return selectWindowProcess(NULL, s, dwFlags);
}

bool ProcessManager::selectByWindowClass(const char* s, DWORD dwFlags/* = PROCESS_ALL_ACCESS */)
{
    return selectWindowProcess(s, NULL, dwFlags);
}

bool ProcessManager::selectWindowProcess(const char* sClass, const char* sName, DWORD dwFlags)
{
    HWND hWnd = FindWindow(sClass, sName);
    if(!hWnd)
        return false;

    DWORD pid;
    GetWindowThreadProcessId(hWnd, &pid);

    m_pHandle = OpenProcess(dwFlags, false, pid);
    if(!m_pHandle)
        return false;

    return true;
}

main.cpp example

#include <iostream>
#include "ProcessManager.h"

using namespace std;

ProcessManager g_process;

int main()
{
    if(!g_process.selectByWindowName("Kalkulator"))
        exit(-1);

    g_process.writeAddress<int>(0x04A20018, 18);
    cout << g_process.readAddress<int>(0x04A20018) << endl;

    return 0;
}

Mozesz sobie ewentualnie stdint.h dolaczyc do maina jak potrzeba ci prezycowac dokladniejsze typy http://en.wikipedia.org/wiki/Integer_%28computer_science%29

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...