Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

einfacher Maschinencodebetracher

Uploader:Mitgliedtheta
Datum/Zeit:20.02.2012 11:28:13

'einfacher Maschinencodebetracher (FB 0.23)
'Der zu untersuchende Code wird in die Sub theCode eingetragen. Bei der Ausführung wird der Maschinencode, der
'in zwischen beiden Labels steht in hexadezimaler Form ausgegeben. Der betrachtete Maschinencode wird aber nicht ausgeführt.

'Funktionsweise:
'Ein Pointer(der Ubyte ptr code) zeigt auf das Offset eines Labels (hier:start), also der tatsächlichen Adresse im Speicher.
'Die Länge des ausführbaren Codes ermittelt sich als die Differenz zwischen Startadresse (start) und Endadresse (ende).
'Der Pointer wird wie ein dynamisch reservierter Speicherbereich behandelt und in Byteschritten durchgegangen und ausgegeben.


#Include "crt/stdio.bi"


Sub printHEX(p As UByte ptr,length As UInteger)
    For i As Integer=0 To length-1
        printf(Hex(p[i]))
        printf(" ")
    Next
End Sub

Sub theCode()

    Asm start:

    'hier den Code eintragen.
    'z.B: print "Hallo Welt !"
    'oder asm mov eax,42

    Asm ende:
End Sub

Dim As UByte Ptr code
Dim As Integer length


Asm
    mov dword Ptr [code],Offset start

    mov dword Ptr [length],offset ende
    Sub dword Ptr [length],offset start
End Asm

printHEX(code,length)

#If Defined(__FB_WIN32__) 'nur eine Schönheitskorrektur
    GetKey
#EndIf