.INI Datei auslesen und in .exe value schreiben.



  • Hallo,
    Ich habe hier zu diesem Thema schon etliche Threads gesehen, doch keiner hat mir so wirklich geholfen.
    Ich poste am besten erstmal meinen Code:

    ´#include <windows.h>
    #include <iostream>
    #include <conio.h>
    #include <tlhelp32.h>
    #include <stdio.h>
    #include <string>
    #include <cstdlib>
    #include <sstream>
    #define DIKEYBOARD_L 0x0426
    #pragma comment(lib, "Psapi.lib")
    using namespace std;
    const int RadarOffset = 0x59588C;
    	int tempAdress, BaseAdress;
    int varmitmeinemteam;
    BYTE inair;
    
    			void m_jump()// press l
    {
    INPUT inp;
    memset(&inp,0,sizeof(inp));
    inp.type=INPUT_KEYBOARD;
    inp.ki.wVk = 0;
    inp.ki.wScan = DIKEYBOARD_L;  //DIKEYBOARD_SPACE; LMENU
    inp.ki.time = 0;
    inp.ki.dwExtraInfo = 0;
    inp.ki.dwFlags=KEYEVENTF_SCANCODE;
    SendInput(1,&inp,sizeof(inp));
    Sleep(5);
    inp.type=INPUT_KEYBOARD;
    inp.ki.wVk = 0;
    inp.ki.time = 0;
    inp.ki.dwExtraInfo = 0;
    inp.ki.wScan = DIKEYBOARD_L;  //DIKEYBOARD_SPACE; LMENU
    inp.ki.dwFlags=KEYEVENTF_SCANCODE|KEYEVENTF_KEYUP;
    SendInput(1,&inp,sizeof(inp));
    }
    
    DWORD GetModuleBaseExtern(const DWORD dwProcessId, const char *szModuleName)
    {
        #ifdef _GMBE_CHECK_PARAMS_
        if (!dwProcessID) || (!szModuleName) return 0;
        #endif
    
        HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
        if (!hSnap) return 0;
    
        MODULEENTRY32 me;
        me.dwSize = sizeof(MODULEENTRY32);
    
        DWORD dwReturn = 0;
    
        if (Module32First(hSnap, &me)) {
            while (Module32Next(hSnap, &me)) {
                if (lstrcmpi(me.szModule, szModuleName) == 0) {
                    dwReturn = (DWORD)me.modBaseAddr;
                    break;
                }
            }
        }
    
        CloseHandle(hSnap);
    
        return dwReturn;
    
    }
     int main()
    {
          SetConsoleTitle( "Mantas Trigger Beta" ); 
            HWND hwnd = NULL;
            DWORD pid;
            HANDLE hProcess;
            DWORD clientbase;
            DWORD enginebase;
    		int Gegner;
    		int InCrosshair;
    		hwnd = FindWindow (NULL, "Counter-Strike Source");
            GetWindowThreadProcessId (hwnd, &pid);
    		  hProcess = OpenProcess (PROCESS_VM_READ, FALSE, pid);
            if(hwnd == 0)
            {
                    cout << " Mantas Trigger Regelt" << endl;
                    cout << "               Starte CSS du Lappen" << endl;
                    _getch();
                    return 0;
            }
            else
            {
            cout << " Mantas Trigger regelt " << endl;
            cout << " Trigger ist gestartet, also mach ihn kapott Juuunge!!! " << endl << endl;
    		cout << " Fuer Bhop in die Konsole in CSS: bind l +jump. Dann einfach alt gedrueckt halten und tada geht die Post ab. " << endl << endl;
    		cout << " Wenn du CT bist, druecke f2, wenn du T bist f1, wenn das nicht geht druecke einfach die Tasten " << endl;
    		cout << "  bis du nicht mehr auf deine Mates schießt und zack is enemy only drin. " << endl;
    
            clientbase = GetModuleBaseExtern(pid, "client.dll");
            enginebase = GetModuleBaseExtern(pid, "engine.dll");
    
    	while (true)
            {
    
    ReadProcessMemory (hProcess, (PVOID)(clientbase + 0x56C8C4), &Gegner, sizeof(Gegner), NULL);
    ReadProcessMemory (hProcess, (PVOID)(Gegner + 0x1448), &InCrosshair, sizeof(InCrosshair), NULL);
    
    tempAdress = clientbase + RadarOffset;// 0x58D184;        //0x583C94;
    ReadProcessMemory(hProcess, (LPVOID)tempAdress, &BaseAdress, sizeof(BaseAdress), 0);
    tempAdress = BaseAdress + 0x8;
    ReadProcessMemory(hProcess, (LPVOID)tempAdress, &BaseAdress, sizeof(BaseAdress), 0);
    
    BYTE Playerteam[64] = {0};
    BYTE buffer[65*0x140];
    
    ReadProcessMemory(hProcess, (LPVOID)BaseAdress, &buffer, 65*0x140, 0);
    
    for ( int i = 1; i<= 64; i++)                                                            // copying the relevant data in our extra structs.
            {
                memcpy(&Playerteam[i], &buffer[0x140*i+0x34], sizeof(BYTE));
            }
    
    // in deinem triggerbot...
     if (GetAsyncKeyState(VK_SPACE))
    {
    if (InCrosshair > 0 && InCrosshair <= 64)
    {
        if (GetKeyState(VK_F1))
    
    {
    
    varmitmeinemteam = 2;
    
    }
    
    if (GetKeyState(VK_F2))
    
    {
    
    varmitmeinemteam = 3;
        }
    	if (varmitmeinemteam != Playerteam[InCrosshair])
        {
    
    	Sleep (15);
      mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
      Sleep (30);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); 
    	Sleep (60);
    	}
    }
    		                Sleep(2);
    }
    	if(GetKeyState(VK_LMENU) & 1<<15)
    	{
            ReadProcessMemory (hProcess, (PVOID)(clientbase + 0x5C1B30), &inair, sizeof(inair), NULL);
    		if(inair != 255)
            {
                 m_jump();
    		}
    
    	}
    	}
    		}
     }
    

    So nun zu meinem Problem: Ich würde gerne die 3 Sleep values in den Zeilen 141, 143 und 145 aus einer .ini lesen und auch direkt durch die eingelesenen Werte überschreiben lassen. Ich bin noch nicht so fortgeschritten in C++ also habt bitte Rücksicht 😃
    Danke schonmal
    Michel



  • Dann lies sie doch aus. Zeig mal einen Ansatz, bei dem du versuchst Werte aus einer Datei zu lesen.



  • Also entweder du nimmst die WinAPI Funktionen
    http://msdn.microsoft.com/en-us/library/ms724345.aspx
    http://msdn.microsoft.com/en-us/library/ms724353.aspx
    (Gibt auch welche zum Schreiben.)
    Oder du nimmst ifstream und liest die Daten manuell aus. Wo genau hapert es?

    (PS: Räum deinen Code auf! 😮 )



  • Ich sagte ja ich bin noch nicht sehr fortgeschritten in C++. Deshalb ist mein Code wohl auch so wirr 😃 Und ich weiß nichtmal im Ansatz wie ich das machen soll und die GetPrivateProfileInt Funktion raff ich mit der Microsotf Erklärung nicht mal annähernd.
    Und ich will keinen Wert in die .ini schreiben, sondern den Wert, den ich ausgelesen hab in meinen eigentlichen Code schreiben.



  • Und ich will keinen Wert in die .ini schreiben, sondern den Wert, den ich ausgelesen hab in meinen eigentlichen Code schreiben.

    Also du willst c++ Komandos aus einer externen datei in deinem laufendem Programm benutzen ? Also Hooking ?



  • Ich will eigentlich nur, dass das Programm nach Start die drei Sleep Werte aus der .ini o.ä. Datei ausliest und im Code des eigentlichen Programms die Sleep Werte durch die ersetzt, die ausgelesen wurden und das Programm danach weiterläuft und das tut, was es bis jetzt tat.



  • So, ich hab jetzt eine Funktion, die 3 Werte ausliest und mir diese anzeigt, doch wie bekomm ich das hin, dass diese 3 Werte die alten aus dem Code ersetzen?

    #include <iostream>
    #include <Windows.h>
    using namespace std;
    
    int main()
    {
    char FireDelay[500];
    char MouseHoldDown[500];
    char WaitBetweenShots[500];
    DWORD destSize;
    
    destSize=500;
    GetPrivateProfileString("trigger","FireDelay","NULL",FireDelay,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","MouseHoldDown","NULL",MouseHoldDown,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","WaitBetweenShots","NULL",WaitBetweenShots,destSize,"C://settings.ini"); 
    cout << FireDelay << endl;
    cout << MouseHoldDown << endl;
    cout << WaitBetweenShots << endl;
    system("PAUSE");
    // Wenn die Variablen aus der Ini nicht eingelesen werden können, steht nach dem Aufruf der Default-Wert in Test, EinPfad oder Test (In diesem Beispiel "NULL");	
    return 0;
    }
    


  • cooky451 schrieb:

    http://msdn.microsoft.com/en-us/library/ms724345.aspx
    http://msdn.microsoft.com/en-us/library/ms724353.aspx

    This function is provided only for compatibility with 16-bit Windows-based applications.

    👎

    Aber zur Frage: Stichwort atoi ().
    Das sollte das Problem dann eigentlich schon gelöst haben, zumindest falls ich dein Problem auch richtig verstanden habe 🙂

    EDIT: Falls du die Werte dann aus einer Datei kriegen willst, gucke dir die Filestreaming-Funktionen an.



  • Ich weiß nicht so richtig, was atoi jetzt bringen soll.
    Der Code:

    int a = 30;
    int b = 30;
    int c = 80;
    char FireDelay[500];
    char MouseHoldDown[500];
    char WaitBetweenShots[500];
    DWORD destSize;
    
    destSize=500;
    GetPrivateProfileString("trigger","FireDelay","NULL",FireDelay,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","MouseHoldDown","NULL",MouseHoldDown,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","WaitBetweenShots","NULL",WaitBetweenShots,destSize,"C://settings.ini"); 
    if(FireDelay != a) {
    	a = FireDelay;
    

    So das waren die wichtigen Abschnitte. Das Problem ist, ich kann zwar die Werte auslesen und wenn ich mir diese anzeigen lasse, sind sie normale Zahlen, doch wenn ich die Sleep Werte jetzt durch diese ersetzen lasse, kommt eine Fehlermeldung. Irgendwas mit der Konvertierung klappt nicht. Wie kann ich die Werte denn osnst ersetzen?



  • Ich bin mitlerweile bei diesem Code angelangt:

    char FireDelay[500];
    char MouseHoldDown[500];
    char WaitBetweenShots[500];
    DWORD destSize;
    
    destSize=500;
    GetPrivateProfileString("trigger","FireDelay","NULL",FireDelay,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","MouseHoldDown","NULL",MouseHoldDown,destSize,"C://settings.ini");
    GetPrivateProfileString("trigger","WaitBetweenShots","NULL",WaitBetweenShots,destSize,"C://settings.ini"); 
    WaitBetweenShots[500] = (int)(WaitBetweenShots-'0');
    a = WaitBetweenShots;
    cout << a << endl;
    

    Wenn ich jetzt Waitbetweenshots in int konvertiere und mir den anzeigen lasse, hat er den Wert 42, doch sobald ich a = waitbetweenshots setze, hat a den Wert -112 oder -54 oder so. Was mache ich denn falsch?



  • Hat sich erledigt. Hab es doch mit atoi hinbekommen.
    Danke an alle.



  • Michel A. schrieb:

    Ich weiß nicht so richtig, was atoi jetzt bringen soll.

    Michel A. schrieb:

    Hab es doch mit atoi hinbekommen.

    👍



  • Fake oder Echt schrieb:

    cooky451 schrieb:

    http://msdn.microsoft.com/en-us/library/ms724345.aspx
    http://msdn.microsoft.com/en-us/library/ms724353.aspx

    This function is provided only for compatibility with 16-bit Windows-based applications.

    👎
    Aber zur Frage: Stichwort atoi ().

    cooky451 schrieb:

    Oder du nimmst ifstream und liest die Daten manuell aus.



  • Das hatte ich gelesen, ich hab mich nur gefragt, warum man jemanden Funktionen nennt, die eindeutig nicht mehr benutzt werden sollen (zu Kompatibilitätszwecken mal abgesehen). Dein Tipp mit den Streams hätte völlig gereicht. Deshalb der Daumen nach unten 😉



  • Du hättest aber auch den zweiten Satz lesen sollen:

    Applications should store initialization information in the registry.

    Und da hier nun mal eine Ini-Datei vorliegt, kann man diese auch mittels GetPrivateProfileString lesen bzw. besser wäre hier gleich GetPrivateProfileInt.



  • Da hat der möchtegern Cheater es letztendlich doch hinbekommen.

    ... "FireDelay" ... "MouseHoldDown" ... "WaitBetweenShots" ...
    cout << " Mantas Trigger regelt " << endl;
    cout << " Trigger ist gestartet, also mach ihn kapott Juuunge!!! " << endl << endl;
    cout << " Fuer Bhop in die Konsole in CSS: bind l +jump. Dann einfach alt gedrueckt halten und tada geht die Post ab. " << endl << endl;
    cout << " Wenn du CT bist, druecke f2, wenn du T bist f1, wenn das nicht geht druecke einfach die Tasten " << endl;
    cout << " bis du nicht mehr auf deine Mates schießt und zack is enemy only drin. " << endl;

    🙄


Anmelden zum Antworten