AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Assembler -> HexCode

Ein Thema von Boombuler · begonnen am 11. Mai 2005 · letzter Beitrag vom 17. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#1

Assembler -> HexCode

  Alt 11. Mai 2005, 08:47
Hi Leute,

Ich schreib ja auch ganz gerne mal n Cheat für kleine Games (nur des Schreibenswillen ich will die nich einsetzten... (bevor hier die Grundsatzdiskusion losgeht "Cheater haben kleine..."))
nun ist die Sache das ich dafür normalerweise Code in das zu cheatene Game injecte.

Hierfür überlege ich mir immer wie der entsprechene Code in Assembler aussehen muss und schreibe ihn in eine unbenutzte Stelle im Speicher des entsprechenen Programms.
Die Umwandlung von dem Assemblercode in HEX habe ich bisher immer TSearch genommen. Das wandelt mir den Code in so genannten Poke-Code um.

Nun will ich aber ein Programm schreiben das den Trainer nahezu selbstständig schreibt.
Mein größtes Problem dabei ist wie wandel ich nun den Assembler Code in entsprechene Hex-Werte um?

Bei so sachen wie
Nop -> 90
JE -> 74
JnE -> 75

usw wäre das ja kein Problem aber wie sieht das zB mit einem Call aus? Und vorallem mit den Speicheradressen? Diese scheinen irgendwie in Relation zu der Stelle wo sie aufgerufen werden zu stehen...

Kann mir jemand n Ansatzpunkt für diese Problematik geben??

Bin für jede Hilfe dankbar!

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#2

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 15:26
Hab hier mal was gefunden:
ASM -> Hex

jmp = EB
ja = 0F87
jna = 0F86
jae = 0F83
jnae = 0F82
jg = 0F8F
jng = 0F8E
jge = 0F8D
jnge = 0F8C

Ein Call hast meist keine eindeutige Adresse (oder irre ich mich?). Wenn nicht dann guck mal bei Google .
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
814 Beiträge
 
#3

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 16:26
ein call/jmp (e8, e9) ist relativ

d.h. du musst das vroher berechnen,

E8 = call, dann nen integer/cardinal für die distanz, wobei die berechnung zuadresse-vonadresse-5 ist

du musst auch noch die relocations alle fixen, bzw einfach keine benutzen

nen call bzw jump würdest könntest auch noch durch ne relocation fake jmp/call hinbekommen

Delphi-Quellcode:
mov eax, adresse
call eax
d.h. adresse würde dann bei deiner kompilierten exe in der relocation tabelle vorkommen, dann mussu net mehr nach den distance calls/jumps suchen

wenn du parameter über register übergibst kannste nen call/jmp auch so machen:

Delphi-Quellcode:
push adresse // unterfunktion oder jump
push @@ret1 // weglassen wenns nen jump sein soll, bei nem call brauchste das
ret
@@ret1:
du könntest aber auch alle funktionen die du benutzt in eine funktion auslagern dann brauchste dich eigentlich gar nicht mehr drum kümmern

Delphi-Quellcode:
procedure programstart; stdcall;
  procedure unterfunktion1(a,b: integer); stdcall;
  begin
  end;
  procedure unterfunktion2(a,b: integer); stdcall;
  begin
  end;
begin
  unterfunktion1(1,2);
  unterfunktion2(1,2);
end;
dann kopierste die ganze funktion in deine neue exe, aber auch hier musste noch die relcos zu den strings fixen
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 16:32
sind die opcodes nicht bei verschiedenen prozessoren unterschiedlich?

beim alten Z80 z.B. ist nop -> 00.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
814 Beiträge
 
#5

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 16:38
nicht bei prozessoren sondern bei den befehlssätzen der prozessoren ist das nen unterschied
denk mal er meint den x86
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 17:51
das heisst ein pentium hat den selben befehlssatz wie ein athlon? es gibt aber doch noch so besondere befehlssätze(MMX, PowerNow)?!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 18:55
Befehl satz x86 wird sowohl vom Intel als auch vom AMD unterstüzt.

Man kann abfargen ob ein bestimmter Processor einen bestimmten Befehlsatz unterstüzt und dann auch entsprechend reagieren/optimieren.

x86 ist (fast) ein Standard ? Oder ? Zumindest inoffiziel ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Assembler -> HexCode

  Alt 16. Mai 2005, 19:23
Moin!

AMD, Transmeta, Cyrix etc versuchen natürlich kompatibel zu Intel bei ihren Prozessoren der x86 Reihe zu bleiben, weil es wäre schlecht, wenn Windows oder EXE'n auf der Konkurrenz nicht laufen würden, weil diese die Befehle anders belegen/integrieren. Schliesslich enthalten die ausführbaren Daten die direkten Opcodes der Prozessoren und sind keine Zwischenstufe wie z.B. bei Flash, Java und die .NET Zwischencompilate...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Assembler -> HexCode

  Alt 17. Mai 2005, 08:27
Hilft mir teilweise schon mal n bischen weiter nur:

Zitat:
ein call/jmp (e8, e9) ist relativ

d.h. du musst das vroher berechnen,

E8 = call, dann nen integer/cardinal für die distanz, wobei die berechnung zuadresse-vonadresse-5 ist
In welcher form hab ich die anzugeben 4 byte Integer oder wie? und wie war das noch mal erstes Bit ist Vorzeichen oder?

1 = + oder - ??

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Assembler -> HexCode

  Alt 17. Mai 2005, 08:32
na wenn du von adresse 8100 nach adresse 8200 springen willst, musst du 8100-8200-5=-105 angeben. ob das aber negativ oder poisitiv angeben musst, weiss ich nicht. vor allem:wie stellt man negative werte dar?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf