Discussion:
eine Moeglichkeit %eip ins %eax zu kopieren?
(zu alt für eine Antwort)
Plagus
2006-01-29 15:26:08 UTC
Permalink
Hi Leute,

weiss jemand wie das geht?


mbG

R.
Jan Bruns
2006-01-29 15:51:48 UTC
Permalink
Plagus" <***@o2.pl> zum Thema
Re: eine Moeglichkeit %eip ins %eax zu kopieren?
Post by Plagus
weiss jemand wie das geht?
Naja, ich weiß zwar nicht, was das soll, und hab's gerad' auch
nicht getestet, aber wie wär's damit:

call @m1
@m1: pop eax
...

Gruss

Jan Bruns
Herbert Kleebauer
2006-01-29 17:57:54 UTC
Permalink
Post by Jan Bruns
Re: eine Moeglichkeit %eip ins %eax zu kopieren?
Naja, ich weiß zwar nicht, was das soll, und hab's gerad' auch
@m1: pop eax
...
Ist wohl nicht so optimal da es den internen return-stack
durcheinander bringt. Aber die Adresse ist doch zur
Kompilierzeit bekannt:

lea a,%eax
a:
Sebastian Biallas
2006-01-29 18:21:21 UTC
Permalink
Post by Herbert Kleebauer
Post by Jan Bruns
Re: eine Moeglichkeit %eip ins %eax zu kopieren?
Naja, ich weiß zwar nicht, was das soll, und hab's gerad' auch
@m1: pop eax
...
Ist wohl nicht so optimal da es den internen return-stack
durcheinander bringt.
Wenn man das einmal macht, ist es wohl egal. Ansonsten kann man auch
direkt mit esp arbeiten.
Post by Herbert Kleebauer
Aber die Adresse ist doch zur
lea a,%eax
Üblicherweise macht man so etwas um "position-independent-code" zu
schreiben, also genau dann, wenn die Adresse vorher nicht bekannt ist.
--
Gruß,
Sebastian
Florian Weimer
2006-01-30 19:08:04 UTC
Permalink
Post by Herbert Kleebauer
Post by Jan Bruns
Naja, ich weiß zwar nicht, was das soll, und hab's gerad' auch
@m1: pop eax
...
Ist wohl nicht so optimal da es den internen return-stack
durcheinander bringt.
Ja, deswegen ist ein Unterprogrammaufruf nach

movl (%esp), %eax
ret

meist vorteilhafter.

(Und es wird in der Tat um position independent code gehen, IA32 hat
leider keine IP-relative Adressierung für Daten.)
Jan Bruns
2006-01-30 21:21:47 UTC
Permalink
Post by Florian Weimer
(Und es wird in der Tat um position independent code gehen, IA32 hat
leider keine IP-relative Adressierung für Daten.)
Wie schon andere geschrieben haben:
Üblicher ist es, zum Relozieren von Code einfach alle CS-
Referenzen anzupassen. Von daher wär's schon mal interessant,
wenn "Plagus" mal berichten würde, was das soll.

Gruss

Jan Bruns
Sebastian Biallas
2006-01-30 21:36:09 UTC
Permalink
Post by Jan Bruns
Post by Florian Weimer
(Und es wird in der Tat um position independent code gehen, IA32 hat
leider keine IP-relative Adressierung für Daten.)
Üblicher ist es, zum Relozieren von Code einfach alle CS-
Referenzen anzupassen.
http://en.wikipedia.org/wiki/Position_independent_code
Post by Jan Bruns
Von daher wär's schon mal interessant,
wenn "Plagus" mal berichten würde, was das soll.
Vielleicht ist es auch nur eine Hausaufgabe.
--
Gruß,
Sebastian
Spiro Trikaliotis
2006-01-31 17:09:23 UTC
Permalink
Post by Sebastian Biallas
Von daher wär's schon mal interessant, wenn "Plagus" mal berichten
würde, was das soll.
Vielleicht ist es auch nur eine Hausaufgabe.
... oder der Versuch, etwas "nicht ganz koscheres" zu machen. Deshalb
beantworte ich solche Aufgaben grundsätzlich nicht. Entweder der Poster
ist clever genug, sich die (relativ leicht zu beschaffenden) Information
selbst zu holen, oder er hat Pech.

Es gab in den MS Newsgruppen nach dem Sony/BMG
Kopierschutz-"Rootkit"-Debakel man eine längere Diskussion, in wiefern
man Leuten helfen sollte, die "suspekte" Fragen stellen. Die Macher des
Kits hatten nämlich vorher auch dort gefragt und bereitwillig Hilfe
erfahren. Manchmal sollte man halt nachdenken, ob es wirklich gut ist,
eine Antwort zu geben.

So, da OT: fup2p.

Gruß,
Spiro.
--
Spiro R. Trikaliotis http://cbm4win.sf.net/
http://www.trikaliotis.net/ http://www.viceteam.org/
Florian Weimer
2006-02-03 10:20:49 UTC
Permalink
Post by Jan Bruns
Post by Florian Weimer
(Und es wird in der Tat um position independent code gehen, IA32 hat
leider keine IP-relative Adressierung für Daten.)
Üblicher ist es, zum Relozieren von Code einfach alle CS-
Referenzen anzupassen.
Nö, ELF arbeitet nun einmal anders und erfreut sich einer gewissen
Verbreitung.
Sebastian Biallas
2006-01-29 15:53:09 UTC
Permalink
Post by Plagus
Hi Leute,
weiss jemand wie das geht?
call a
a: pop eax
Post by Plagus
mbG
R.
--
Gruß,
Sebastian
Plagus
2006-02-01 02:57:50 UTC
Permalink
Hallo Leute,

das ist super nett, dass so viele von euch meine Frage beantwortet
haben. Die, die schon gedacht haben, dass hier was faul sei, moechte ich
beruhigen ;) Ich bin halt erst im ersten Semester eines
Informatikstudiums und wusste mit einer Aufgabe nicht weiter. Wie es
sich rausstellte war diese auch nicht so schwer und bevor ich die
Antworten von euch gelesen habe wurde sie so geloest:

Programmzaehler ins %eax kopieren:

push %eip
pop %eax

Danke nochmalls


Gruss

Plagus
Sebastian Biallas
2006-02-01 11:41:09 UTC
Permalink
Post by Plagus
Hallo Leute,
[..]
Post by Plagus
Wie es
sich rausstellte war diese auch nicht so schwer und bevor ich die
push %eip
pop %eax
"push %eip" ist aber keine gültige x86-Anweisung, höchstens ein Alias
auf ein "call" auf die nächste Adresse.
Post by Plagus
Gruss
Plagus
--
Gruß,
Sebastian
Markus Wichmann
2006-09-14 15:24:05 UTC
Permalink
Post by Sebastian Biallas
Post by Plagus
Hallo Leute,
[..]
Post by Plagus
Wie es
sich rausstellte war diese auch nicht so schwer und bevor ich die
push %eip
pop %eax
"push %eip" ist aber keine gültige x86-Anweisung, höchstens ein Alias
auf ein "call" auf die nächste Adresse.
Post by Plagus
Gruss
Plagus
Ich persönlich würde es mit

call $+2
pop eax

was ja in Abgewandelter Form schon mehrmals vorgeschlagen wurde,
probieren ($ ist die momentane Stelle in diesem Abschnitt vor diesem
Befehl. $$ ist der Anfang dieses Abschnittes.) Sollte der Opcode von
call doch länger sein als zwei Byte, muss man das natürlich entsprechend
anpassen.
--
To err is human. To forgive is divine.
To forget is also human...
Loading...