You last visited: Today at 20:28
Advertisement
[Release] Packetlogger - By Doktor.
Discussion on [Release] Packetlogger - By Doktor. within the Nostale Hacks, Bots, Cheats & Exploits forum part of the Nostale category.
03/08/2014, 08:08
#1
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
[Release][Source] Packetlogger - By Doktor.
Hab mich mal rangesetzt einen Packetlogger zu schreiben, aus Übungszwecken.
Bei Problemen o.Ä. könnt ihr euch einfach im Thread melden.
Funktionen:
- Ausgabe der gesendeten Packets
- Ausgabe der erhaltenen Packets
- Filtern der Packets
- Senden von Packets
- Braucht so schnell kein Update
-------------------------------
Source zum abfangen der Packets
-------------------------------
Code:
#include <windows.h>
#include <stdio.h>
bool DetourFunc( BYTE* oldFunc, BYTE* newFunc, DWORD len )
{
BYTE* newMem4base = NULL;
DWORD dwOld;
newMem4base = ( BYTE* )malloc( 5+len );
if( newMem4base == NULL )
return false;
for( DWORD i = 0; i < ( len+5 ); i++ )
newMem4base[i] = 0x90;
VirtualProtect( oldFunc, len, PAGE_READWRITE, &dwOld );
memcpy( newMem4base, oldFunc, len );
oldFunc[0] = 0xE8;
*( DWORD* )( oldFunc+0x01 ) = DWORD( newFunc-oldFunc-5 );
oldFunc[5] = 0xE9;
*( DWORD* )( oldFunc+0x06 ) = DWORD( newMem4base-( oldFunc+0x5 )-5 );
newMem4base += len;
newMem4base[0] = 0xE9;
*( DWORD* )( newMem4base+0x01 ) = DWORD( ( oldFunc+10 )-newMem4base-5 );
for( DWORD i = 10; i <len; i++ )
oldFunc[i] = 0x90;
return true;
}
bool bDataCompare(const unsigned char *pData, const unsigned char *bMask, const char *szMask)
{
for(; *szMask; ++szMask, ++pData, ++bMask)
if(*szMask == 'x' && *pData != *bMask )
return false;
return (*szMask) == 0;
}
DWORD dwFindPattern(BYTE *bMask, char *szMask)
{
DWORD dw_Address = 0x00400000;
DWORD dw_Len = 0x00436000;
for(DWORD i = 0; i < dw_Len; i++)
if(bDataCompare((unsigned char*) (dw_Address + i), bMask, szMask) )
return (DWORD) (dw_Address + i);
return 0;
}
void hkSend()
{
char* packet;
_asm
{
pushad
pushfd
MOV packet,EDX
}
printf("Send: %s\n",packet);
_asm
{
popfd
popad
}
}
void hkRecv()
{
char* packet;
_asm
{
pushad
pushfd
MOV packet,EDX
}
printf("Recv: %s\n",packet);
_asm
{
popfd
popad
}
}
DWORD WINAPI tThread(LPVOID param)
{
AllocConsole();
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
/* Send */
BYTE s_bPatter[] = {0x53, 0x56, 0x8B, 0xF2, 0x8B, 0xD8, 0xEB, 0x04};
char *s_cPatter = "xxxxxxxx";
DWORD dSend = dwFindPattern(s_bPatter,s_cPatter);
/* Recv */
BYTE r_bPatter[] = {0x55, 0x8B, 0xEC, 0x83, 0xC4, 0xF4, 0x53, 0x56, 0x57, 0x33, 0xC9, 0x89, 0x4D, 0xF4, 0x89, 0x55, 0xFC, 0x8B, 0xD8, 0x8B, 0x45, 0xFC};
char *r_cPatter = "xxxxxxxxxxxxxxxxxxxxxx";
DWORD dRecv = dwFindPattern(r_bPatter,r_cPatter);
DetourFunc( ( BYTE* )dSend, ( BYTE* )&hkSend, 14 );
DetourFunc( ( BYTE* )dRecv, ( BYTE* )&hkRecv, 14 );
return 0x0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(nullptr, 0, tThread, nullptr, 0, nullptr);
DisableThreadLibraryCalls(hModule);
break;
}
return TRUE;
}
Mfg.
Doktor.
Attached Files
Packetlogger - V1.0.rar
(3.24 MB, 953 views)
Packetlogger - V1.1.rar
(3.24 MB, 387 views)
Packetlogger - V1.2.rar
(3.23 MB, 1319 views)
PacketLogger - V2.0.rar
(3.16 MB, 5140 views)
03/08/2014, 15:47
#2
elite*gold: 0
Join Date: Jan 2011
Posts: 75
Received Thanks: 2
friert beim Start und beenden Sie ein weißes Fenster
EDIT: nach 2 Minuten es funktionierte
03/08/2014, 20:54
#3
elite*gold: 5
Join Date: Dec 2013
Posts: 683
Received Thanks: 56
3 calls?
03/08/2014, 21:49
#4
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Was meinst du mit 3 calls?
03/08/2014, 23:45
#5
elite*gold: 5
Join Date: Dec 2013
Posts: 683
Received Thanks: 56
Logt er alle Packete oder wie bei Elektrochemie nur die hälfte...?
03/09/2014, 00:29
#6
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Sollte momentan wie bei Elektrochemie's sein.
#Update - V1.1
- Crashes gefixed
- Keine Lags mehr bei zu vielen Packets
03/09/2014, 01:52
#7
elite*gold: 61
Join Date: Apr 2011
Posts: 172
Received Thanks: 125
Wird es auch einen Source geben?
Wäre super
03/09/2014, 01:58
#8
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
Die Source wird es nicht geben.
Das musst du selbst packen
.
Ich glaube (fast-)jeder würde sich über die Source freuen.
03/09/2014, 02:00
#9
elite*gold: 61
Join Date: Apr 2011
Posts: 172
Received Thanks: 125
Okay. Dennoch gut.
Weiter so.
03/09/2014, 11:14
#10
elite*gold: 158
Join Date: Apr 2012
Posts: 606
Received Thanks: 76
Gibt ja eine SRC zu einem Packetlogger. Sufu hilft!
03/09/2014, 12:44
#11
elite*gold: 0
Join Date: Jan 2011
Posts: 75
Received Thanks: 2
Sie können nichts tun, um "send x times" und "send infinite" mit Intervallzeit in ms?
03/09/2014, 13:40
#12
elite*gold: 5
Join Date: Dec 2013
Posts: 683
Received Thanks: 56
Also der selbe packetlogger wie von Elektrochemie nur mit anderen Design?....
03/09/2014, 14:21
#13
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Momentan ja, aber bin an den anderen Packets dran, hab sie auch schon. Aber anscheint hab ich grad einen Fehler im Code und komme momentan einfach nicht dahinter. :b
@luigi1000
Nein, bau ich aber noch ein.
03/09/2014, 14:24
#14
elite*gold: 5
Join Date: Dec 2013
Posts: 683
Received Thanks: 56
aso dann werd ich mal schauen was du so daraus machst (:
03/11/2014, 07:44
#15
elite*gold: 0
Join Date: Aug 2011
Posts: 1,190
Received Thanks: 549
Code:
#include <windows.h>
#include <stdio.h>
bool DetourFunc( BYTE* oldFunc, BYTE* newFunc, DWORD len )
{
BYTE* newMem4base = NULL;
DWORD dwOld;
newMem4base = ( BYTE* )malloc( 5+len );
if( newMem4base == NULL )
return false;
for( DWORD i = 0; i < ( len+5 ); i++ )
newMem4base[i] = 0x90;
VirtualProtect( oldFunc, len, PAGE_READWRITE, &dwOld );
memcpy( newMem4base, oldFunc, len );
oldFunc[0] = 0xE8;
*( DWORD* )( oldFunc+0x01 ) = DWORD( newFunc-oldFunc-5 );
oldFunc[5] = 0xE9;
*( DWORD* )( oldFunc+0x06 ) = DWORD( newMem4base-( oldFunc+0x5 )-5 );
newMem4base += len;
newMem4base[0] = 0xE9;
*( DWORD* )( newMem4base+0x01 ) = DWORD( ( oldFunc+10 )-newMem4base-5 );
for( DWORD i = 10; i <len; i++ )
oldFunc[i] = 0x90;
return true;
}
bool bDataCompare(const unsigned char *pData, const unsigned char *bMask, const char *szMask)
{
for(; *szMask; ++szMask, ++pData, ++bMask)
if(*szMask == 'x' && *pData != *bMask )
return false;
return (*szMask) == 0;
}
DWORD dwFindPattern(BYTE *bMask, char *szMask)
{
DWORD dw_Address = 0x00400000;
DWORD dw_Len = 0x00436000;
for(DWORD i = 0; i < dw_Len; i++)
if(bDataCompare((unsigned char*) (dw_Address + i), bMask, szMask) )
return (DWORD) (dw_Address + i);
return 0;
}
void hkSend()
{
char* packet;
_asm
{
pushad
pushfd
MOV packet,EDX
}
printf("Send: %s\n",packet);
_asm
{
popfd
popad
}
}
void hkRecv()
{
char* packet;
_asm
{
pushad
pushfd
MOV packet,EDX
}
printf("Recv: %s\n",packet);
_asm
{
popfd
popad
}
}
DWORD WINAPI tThread(LPVOID param)
{
AllocConsole();
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
/* Send */
BYTE s_bPatter[] = {0x53,0x56,0x8B,0xF2,0x8B,0xD8,0xEB,0x04};
char *s_cPatter = "xxxxxxxx";
DWORD dSend = dwFindPattern(s_bPatter,s_cPatter);
/* Recv */
BYTE r_bPatter[] = {0x55,0x8B,0xEC,0x83,0xC4,0xF4,0x53,0x56,0x57,0x33,0xC9,0x89,0x4D,0xF4,0x89,0x55,0xFC,0x8B,0xD8,0x8B,0x45,0xFC};
char *r_cPatter = "xxxxxxxxxxxxxxxxxxxxxx";
DWORD dRecv = dwFindPattern(r_bPatter,r_cPatter);
DetourFunc( ( BYTE* )dSend, ( BYTE* )&hkSend, 14 );
DetourFunc( ( BYTE* )dRecv, ( BYTE* )&hkRecv, 11 );
return 0x0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CreateThread(nullptr, 0, tThread, nullptr, 0, nullptr);
DisableThreadLibraryCalls(hModule);
break;
}
return TRUE;
}
Evtl. haben ja einige dafür Verwendung.
Similar Threads
[Release] EasyBot | By Doktor.
04/25/2014 - Nostale Hacks, Bots, Cheats & Exploits - 52 Replies
#Removed
[Release] AutoIt-Recieve-Packetlogger mit Sourcecode
08/07/2013 - Nostale Hacks, Bots, Cheats & Exploits - 20 Replies
Ich habe mich der Herausforderung gestellt in AutoIt einen Packetlogger zu schreiben, bisher werden nur die Packets geloggt, die der Client vom Server erhält, andersrum geht es noch nicht.
Diese kleine Spielerei fing ich eigentlich an um meine neue CCInject.au3 zu testen, dann dachte ich aber, dass es sicherlich für viele interessant sein könnte einmal zu sehen wie einfach es doch ist an die Packets ranzukommen.
Deshalb poste ich hier einmal einen relativ einfachen Packetlogger.
Das...
[Release] PacketLogger Starter
08/10/2012 - Nostale Hacks, Bots, Cheats & Exploits - 41 Replies
Hier mein erster Release :)
Es ist zwar nur ein kleines tool, wird jedoch vielen helfen denke ich :)
Infos
Es startet den Multiclient und ändert anschließend die VersionsNr.
Zudem Injizieret er die dll automatisch.
Somit muss man dies nicht mehr mit CE machen.
http://www.abload.de/img/unbenanntogxfy.png
All times are GMT +1. The time now is 20:29 .