Find Pattern ASM [C++]

07/29/2014 22:38 bycal0x#1
Hallo, ich versuche momentan einen ASM Code mit Find Pattern auszulesen.
Bisher konnte ich nur die Adresse zum z.B. call oder mov auslesen, was aber nicht mein Ziel ist.
Ich will entweder den kompletten ASM Code mit Find Pattern auslesen oder mit einer anderen Methode mir den ASM Code der mit Find Pattern ausgelesenen Adresse ausgeben lassen.

Hier nochmal der C++ Source Code wie ich das ganze momentan für die Adresse, die zum asm code führt regle:
PHP Code:
#include <iostream>
#include <Windows.h>
#include <TlHelp32.h>
#include <Psapi.h>

bool Compare(const BYTEpData, const BYTEbMask, const charszMask)
{
 for (; *
szMask; ++szMask, ++pData, ++bMask)
 if (*
szMask == 'x' && *pData != *bMask)   return 0;
 return (*
szMask) == NULL;
}

DWORD Pattern(DWORD dwAddressDWORD dwLenBYTE *bMaskchar szMask)
{
 for (
DWORD i 0i<dwLeni++)
 if (
Compare((BYTE*)(dwAddress i), bMaskszMask))  return (DWORD)(dwAddress i);
 return 
0;
}

DWORD AddressOne;

DWORD ClassAddy = *(DWORD*)0x61C028;
DWORD PickCall = *(DWORD*)0x61C029;

void GetAddresses(void)
{
 
AddressOne Pattern((DWORD)GetModuleHandleA("metin2client.exe"), 0x22d000, (PBYTE)"\x8B\x0D\x08\x0A\x6C\x00\x00""xxxxx??");
}

BOOL WINAPI DllMain(
 
HINSTANCE hinstDLL,
 
DWORD fdwReason,
 
LPVOID lpReserved)
{
 switch (
fdwReason)
 {
 case 
DLL_PROCESS_ATTACH:
  
GetAddresses();
  break;

 }

P.S: Falls im Code irgendetwas falsch ist, ihr braucht es nicht korrigieren.
Habe das mal, da ich nicht auf meinen Windows PC bin ungetestet geschrieben.
Es wäre sehr nett, falls mir jemand helfen kann.

Danke und Freundliche Grüße. :D
07/30/2014 00:15 ​Tension#2
Find Pattern liest dir nichts aus es sucht lediglich nach den angegebenen Bytes im Speicher und gibt dir die Adresse wieder.

Was meinst du mit "kompletten ASM Code"? Du kannst einen Buffer erstellen und dort die Bytes speichern ( sind dann natürlich nicht in ASM übersetzt ).
07/30/2014 02:16 Crossside#3
"Code auslesen"?!
Find-Pattern nutzt man um zb bestimmte Funktionen zu finden ohne spezielle Offsets usw, um zb bei Updates nicht ständig die offsets usw rauszusuchen..
Das ist nicht dafür gedacht irgendwas auszulesen an Daten im Speicher.. das ist lediglich zum lokalisieren von bestimmten Stellen im Speicher (vergleichen anhand pattern, richtige stelle gefunden = ort zurückgeben wo gefunden im speicher).

Quote:
P.S: Falls im Code irgendetwas falsch ist, ihr braucht es nicht korrigieren.
Habe das mal, da ich nicht auf meinen Windows PC bin ungetestet geschrieben.
Es wäre sehr nett, falls mir jemand helfen kann.
hört sich für mich eher nach

Quote:
Ich bin ein totaler C++ Anfänger und habe mir Code zusammen Copy Pasted, und ich weiß nicht warum es nicht funktioniert wie ich es mir vorstelle.
an.
Ich bezweifle das du eben mal so aus dem Kopf den oben genannten Code exakt rausschreiben kannst ausm Gedächnis.. allein die Patternsearch Funktion ist schon etwas aufwändig, vorallem wenn man sie auswendig rausschreiben würde..
Glaube ich dir nicht, sorry.

..nur schei*e das ichs zu spät gesehen hab das du banned wurdest.. hätte mir den text sparen können.