|
You last visited: Today at 00:27
Advertisement
C++ PointerWrite-Read & Allocconsole
Discussion on C++ PointerWrite-Read & Allocconsole within the C/C++ forum part of the Coders Den category.
12/03/2013, 14:46
|
#1
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
C++ PointerWrite-Read & Allocconsole
Hallo liebe Epvp Community,
ich habe einen Multilevelpointer mit 5 offsets,
diesen kriege ich aber leider nicht verarbeitet,
mein ziel ist es das (ist eine dll) sie überprüft ob der wert >29900 ist
und wen ja ihr wieder auf 300000 writet.
Das Zweite ist , dass ich aus der Dll AllocConsole aufrufe wodurch die Console auch erstellt wird doch ich kriege es nicht hin etwas rein zu writen mit freopen.
Vielen Dank schon mal im Vor raus jeder der versucht zu Helfen bekommt natürlich ein THX.
|
|
|
12/03/2013, 14:59
|
#2
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
dann zeig mal code den du bisher fabriziert hast, fertige copypastelösung wird dir hier niemand geben.
|
|
|
12/03/2013, 15:17
|
#3
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Ok hier der Code wo noch nichts davon Passiert:
Code:
#include <iostream>
void RewriteValues(){
AllocConsole();
#define Adress_Sp 0x00201D38
int *SpPtr;
SpPtr=(int*)Adress_Sp;
//while(true)
//{
*SpPtr=300000;
// }
}
BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved){
switch(Reason){
case DLL_PROCESS_ATTACH:
RewriteValues();
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
|
|
|
12/03/2013, 15:50
|
#4
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
//Edit nvm ...
|
|
|
12/03/2013, 16:39
|
#5
|
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
|
Dazu gibt es genug Tutorials, die du offenbar nicht gelesen hast.
|
|
|
12/03/2013, 18:51
|
#6
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by Hiris
Rücke er, der Delinquent, seinen Code ein und verleibe ihm Sinn und Verstand ein, damit jemand ihn freiwillig liest. Nenne er des weiteren Offsets oder gehe er erstmal lernen wie der ganze **** funktioniert bevor er auf die schnelle etwas auf den Boden scheißen will. Denn alles was man auf den Boden scheißt muss man auch irgendwann wieder wegwischen, außer man hat einen Minion der das übernimmt.
|
Hier:
Baseadress:=0x00400000
|
|
|
12/03/2013, 19:35
|
#7
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Quote:
Originally Posted by Dreamsläps
Hier:
Baseadress:=0x00400000

|
Bitte, deine Baseaddress ist nicht 0x00400000
Die Baseaddress, in deinem Fall (also in einer dll), bekommt man durch GetModuleHandle(0) und das addieren deines Modul Offsets. Also:
Code:
DWORD BasePointer = 0;
DWORD ImageBase = (DWORD)GetModuleHandle(0);
BasePointer = ImageBase + 0x00201D38;
Wie man mit Multilevelpointer arbeitet, ist ganz einfach. Du musst deiner Addresse immer den Offset dazuzählen. (bei der CE kannst du das sogar gut beobachten!)
Du solltest mal die Grundlagen lernen, man sollte schon wissen wie man Inputs/Outputs einer Allokierten Konsole verwaltet.
Code:
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
|
|
|
12/03/2013, 20:06
|
#8
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by XxharCs
Bitte, deine Baseaddress ist nicht 0x00400000
Die Baseaddress, in deinem Fall (also in einer dll), bekommt man durch GetModuleHandle(0) und das addieren deines Modul Offsets. Also:
|
Woher weißt du dass diese nicht 0x00400000 ist? Eventuell wird ASLR gar nicht verwendet, daher wäre das durchaus plausibel.
In diesem Fall wäre die Funktion GetModuleHandle() auch überflüssig.
|
|
|
12/04/2013, 18:29
|
#9
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Hä`?
Hab es jetzt so gemacht ,
der Compiler und Co sagen mir auch kein Fehler aber er gibt mir das richtige nicht aus ?
Code:
#include <Windows.h>
#include <iostream>
#include <stdio.h>
void RewriteValues(){
DWORD BasePointer = 0;
DWORD ImageBase = (DWORD)GetModuleHandle(0);
BasePointer = ImageBase + 0x00201D38;
WCHAR BaseOutput[50]; // WCHAR is the same as wchar_t
// swprintf_s is the same as sprintf_s for wide characters
swprintf_s(BaseOutput, 10, L"%d", BasePointer); // use L"" prefix for wide chars
MessageBox(NULL,BaseOutput,NULL,NULL);
DWORD PROC_ID;
HANDLE PROC_HANDLE;
DWORD Step1,Step2,Step3,Step4,Step5,EndAdress;
GetWindowThreadProcessId(FindWindow(NULL, (LPCTSTR)"S4 Client"), &PROC_ID);
PROC_HANDLE = OpenProcess(PROCESS_ALL_ACCESS, false, PROC_ID);
ReadProcessMemory(PROC_HANDLE, (void*)BasePointer, &Step1, sizeof(Step1), NULL);
Step1=Step1+0x84;
ReadProcessMemory(PROC_HANDLE, (void*)Step1, &Step2, sizeof(Step2), NULL);
Step2=Step2+0x214;
ReadProcessMemory(PROC_HANDLE, (void*)Step2, &Step3, sizeof(Step3), NULL);
Step3=Step2+0x58;
ReadProcessMemory(PROC_HANDLE, (void*)Step3, &Step4, sizeof(Step4), NULL);
Step4=Step2+0x14;
ReadProcessMemory(PROC_HANDLE, (void*)Step4, &Step5, sizeof(Step5), NULL);
Step5=Step2+0x5d8;
ReadProcessMemory(PROC_HANDLE, (void*)Step5, &EndAdress, sizeof(EndAdress), NULL);
WCHAR BaseOutput2[500]; // WCHAR is the same as wchar_t
// swprintf_s is the same as sprintf_s for wide characters
swprintf_s(BaseOutput2, 500, L"%d", EndAdress); // use L"" prefix for wide chars
MessageBox(NULL,BaseOutput2,L"Adress",MB_OK);
CloseHandle(PROC_HANDLE);
}
BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved){
switch(Reason){
case DLL_PROCESS_ATTACH:
RewriteValues();
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
|
|
|
12/04/2013, 18:54
|
#10
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Quote:
Originally Posted by Mostey
Woher weißt du dass diese nicht 0x00400000 ist? Eventuell wird ASLR gar nicht verwendet, daher wäre das durchaus plausibel.
In diesem Fall wäre die Funktion GetModuleHandle() auch überflüssig.
|
In 90% der Fälle ist es ASLR, bzw. ich bin immer auf ASLR gestoßen
Quote:
Originally Posted by Dreamsläps
Hab es jetzt so gemacht ,
der Compiler und Co sagen mir auch kein Fehler aber er gibt mir das richtige nicht aus ?
|
Anscheinend verstehst du da vieles nicht.
1. Wieso verwendest du OpenProcess in der dll wenn du sie sowieso in das "Opfer"-Programm injizierst?
2. Wieso verwendest du ReadMemory, wenn du die "Haupt"-Addresse & Offsets kennst?
3. Schau dir die Pointer Arithemtic an, anscheinend hast du es missverstanden / weißt nicht was das ist.  oder das openbook von C mit den Pointer (ob C oder C++ die Pointer Arithemtic funktioniert gleich in den 2 Sprachen)
Code:
DWORD dwOffset1 = *(DWORD*)(BasePointer + 0x5d8);
DWORD dwOffset2 = *(DWORD*)(dwOffset1 + 0x14);
DWORD dwOffset3 = *(DWORD*)(dwOffset2 + 0x58);
DWORD dwOffset4 = *(DWORD*)(dwOffset3 + 0x214);
DWORD dwOffset5 = *(DWORD*)(dwOffset4 + 0x84);
Edit:
Vergessen zu erwähnen, du brauchst noch ein Thread, in diesen führst du deine Funktion aus. Den Thread startest du in DLL_PROCESS_ATTACH.
Code:
DWORD WINAPI HackThread(LPVOID unused)
{
...
}
...
...
CreateThread(0, 0, &HackThread , 0, 0, 0);
...
|
|
|
12/05/2013, 07:39
|
#11
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by XxharCs
2. Wieso verwendest du ReadMemory, wenn du die "Haupt"-Addresse & Offsets kennst?
|
Die Frage sollte eher lauten:
"Wieso verwendest du ReadProcessMemory, wenn du dich im selben Address-Space befindest?"
Die einzelnen Zwischenadressen muss man so oder so auslesen, machst du mit deinem Code ja auch - insofern verstehe ich nicht ganz, was der Verweis auf Hauptadresse und Offsets soll.
|
|
|
12/05/2013, 07:55
|
#12
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by XxharCs
In 90% der Fälle ist es ASLR, bzw. ich bin immer auf ASLR gestoßen 
|
Bin ich jetzt auch eigentlich immer, obwohl ich das bisher testweise nur 3-4 mal gemacht habe. Kann aber trotzdem möglich sein.
Code:
ReadProcessMemory(PROC_HANDLE, (void*)Step2, &Step3, sizeof(Step3), NULL);
Step3=Step2+0x58; // Step3 += 0x58
ReadProcessMemory(PROC_HANDLE, (void*)Step3, &Step4, sizeof(Step4), NULL);
Step4=Step2+0x14; // Step4 += 0x14
ReadProcessMemory(PROC_HANDLE, (void*)Step4, &Step5, sizeof(Step5), NULL);
Step5=Step2+0x5d8; // Step5 += 0x5d8
ReadProcessMemory(PROC_HANDLE, (void*)Step5, &EndAdress, sizeof(EndAdress), NULL)
Dort sind wesentliche Fehler, du addierst komischerweise immer den Inhalt aus 'Step2' mit den Offsets, obwohl du eigentlich den Inhalt der zuletzt ausgelesen Adresse mit dem Offset addieren solltest. (Du addierst in CE ja auch die Offsets auf das Ergebnis der jeweils letzten Operation, oder?)
|
|
|
12/05/2013, 11:51
|
#13
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Danke leute kreigt Alle Thx
Aber warum Crasht der Code jetzt den Client?
ps:kann mir jemand den richtigen Code reinschreiben der Funktioniert mit ein bissel erklärung
Code:
#include <Windows.h>
#include <iostream>
#include <stdio.h>
DWORD WINAPI HackThread(LPVOID unused){
DWORD BasePointer = 0;
DWORD ImageBase = (DWORD)GetModuleHandle(0);
BasePointer = ImageBase + 0x00201D38;
DWORD dwOffset1 = *(DWORD*)(BasePointer + 0x5d8);
DWORD dwOffset2 = *(DWORD*)(dwOffset1 + 0x14);
DWORD dwOffset3 = *(DWORD*)(dwOffset2 + 0x58);
DWORD dwOffset4 = *(DWORD*)(dwOffset3 + 0x214);
DWORD dwOffset5 = *(DWORD*)(dwOffset4 + 0x84);
int *SpPtr;
SpPtr=(int*)dwOffset5;
while(true)
{
if(*SpPtr!=30000);
*SpPtr=300000;
}
return 0;
}
BOOL WINAPI DllMain(HINSTANCE hinstDll,DWORD Reason,LPVOID Reserved){
switch(Reason){
case DLL_PROCESS_ATTACH:
CreateThread(0, 0, &HackThread , 0, 0, 0);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
|
|
|
12/05/2013, 15:41
|
#14
|
elite*gold: 420
Join Date: Jan 2012
Posts: 1,082
Received Thanks: 1,000
|
Vielleicht dereferenzierst du einen nullptr?
|
|
|
12/05/2013, 15:46
|
#15
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Hmm eigentlich ein bissel,
er ist erst aktiv wen ich in einen mode gehe ingame macht das etwas aus ?
|
|
|
Similar Threads
|
WTS EU Account !!!8 Top Tier + 2 premium !!!!!READ READ READ
03/07/2013 - Trading - 1 Replies
Im selling WoT EU account!
Here are the tanks in the garage:
Tier Xall tanks have 3 camoflauges+full equipment;2 skills max,3rd at 70%+)
M110E5
M110E4
M110E3
E100
MAUS
|
Battle Pirates **READ**READ**READ**
05/02/2012 - Facebook - 37 Replies
Be smart when using the hacks now, Kixeye is banning by ip address now!
|
READ READ READ !!! LORDYK93 SCAMMER
10/11/2009 - Silkroad Online Trading - 1 Replies
he scammed a ecsro vip account from me ... he wanna give a lvl 90 sjsro account he change the pw of my account and said i have to wait ... now hes on at epvpers and on in msn but he didnt answer me anymore
if you answer me and give me my vip account back i will delete this.!
|
All times are GMT +1. The time now is 00:27.
|
|