CRC32 API Search
Verfasst: 21.06.2006 08:35
Ich habe hier mal die CRC32 Methode zum suchen von API adressen zur laufzeit versucht in PB zu coden. Anstatt den namen der API die man aufrufen will in die exe zu speichern wird einfach der CRC32 Fingerprint gespeichert und zur laufzeit durch Vergleich die adresse gesucht!
Vorteile:
Funktionen werden nicht im IAT (Import Adress Table) aufgeführt was es
zum ersten crackern schwerer macht bestimmte codeteile zu finden und ausserdem bleibt durch den kleinen IAT auch die exedatei auf dauer echt klein! Achtung: Durch die ständige suche ist diese Methode nicht für Projekte oder Codeteile geeignet bei denen es auf Geschwindigkeit ankommt!
mfg My-Self
Code: Alles auswählen
Procedure GetAdressCRC32(library.s,crc32.l)
If OpenLibrary(0,library.s) ; Library öffnen
ExamineLibraryFunctions(0)
While(NextLibraryFunction()) ; Funktionen auflisten
tmp$ = LibraryFunctionName()
crcapi = CRC32Fingerprint(@tmp$,Len(tmp$)) ; Den CRC32 Fingerprint des API Namens berechnen
If crcapi = crc32 ; Mit dem Gesuchten vergleichen
CloseLibrary(0)
ProcedureReturn LibraryFunctionAddress() ; Wenn gefunden -> adresse zurückliefern und methode beenden.
EndIf
Wend
CloseLibrary(0)
EndIf
EndProcedure
;CRC32 von string "MessageBoxA" -> 1462590862
;Einfach zu bekommen durch diesen Code
;
;function2get$ = "MessageBoxA"
;Debug CRC32Fingerprint(@function2get$, Len(function2get$))
;
CallFunctionFast(GetAdressCRC32("user32.dll",1462590862),0,"hello world!","Found Messagebox",0)
Funktionen werden nicht im IAT (Import Adress Table) aufgeführt was es
zum ersten crackern schwerer macht bestimmte codeteile zu finden und ausserdem bleibt durch den kleinen IAT auch die exedatei auf dauer echt klein! Achtung: Durch die ständige suche ist diese Methode nicht für Projekte oder Codeteile geeignet bei denen es auf Geschwindigkeit ankommt!
mfg My-Self