Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

eine Moeglichkeit %eip ins %eax zu kopieren?

25 views
Skip to first unread message

Plagus

unread,
Jan 29, 2006, 10:26:08 AM1/29/06
to
Hi Leute,

weiss jemand wie das geht?


mbG

R.

Jan Bruns

unread,
Jan 29, 2006, 10:51:48 AM1/29/06
to
Plagus" <dr...@o2.pl> zum Thema
Re: eine Moeglichkeit %eip ins %eax zu kopieren?

> 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


Sebastian Biallas

unread,
Jan 29, 2006, 10:53:09 AM1/29/06
to
Plagus wrote:

> Hi Leute,
>
> weiss jemand wie das geht?
>

call a
a: pop eax


> mbG
>
> R.

--
Gruß,
Sebastian

Herbert Kleebauer

unread,
Jan 29, 2006, 12:57:54 PM1/29/06
to
Jan Bruns wrote:

> Re: eine Moeglichkeit %eip ins %eax zu kopieren?

> 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
> ...

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

unread,
Jan 29, 2006, 1:21:21 PM1/29/06
to
Herbert Kleebauer wrote:
> Jan Bruns wrote:
>
>>Re: eine Moeglichkeit %eip ins %eax zu kopieren?
>
>>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
>> ...
>
> 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.

> Aber die Adresse ist doch zur
> Kompilierzeit bekannt:
>
> lea a,%eax
> a:

Ü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

unread,
Jan 30, 2006, 2:08:04 PM1/30/06
to
* Herbert Kleebauer:

>> 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
>> ...
>
> 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

unread,
Jan 30, 2006, 4:21:47 PM1/30/06
to

"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

unread,
Jan 30, 2006, 4:36:09 PM1/30/06
to
Jan Bruns wrote:
> "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.

http://en.wikipedia.org/wiki/Position_independent_code

> 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

unread,
Jan 31, 2006, 12:09:23 PM1/31/06
to
Sebastian Biallas <groups...@spamgourmet.com> schrieb:

>> 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/

Plagus

unread,
Jan 31, 2006, 9:57:50 PM1/31/06
to
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

unread,
Feb 1, 2006, 6:41:09 AM2/1/06
to
Plagus wrote:
> Hallo Leute,
>
>
[..]

> 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

"push %eip" ist aber keine gültige x86-Anweisung, höchstens ein Alias
auf ein "call" auf die nächste Adresse.

> Gruss
> Plagus

--
Gruß,
Sebastian

Florian Weimer

unread,
Feb 3, 2006, 5:20:49 AM2/3/06
to
* Jan Bruns:

>> (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.

Nö, ELF arbeitet nun einmal anders und erfreut sich einer gewissen
Verbreitung.

Markus Wichmann

unread,
Sep 14, 2006, 11:24:05 AM9/14/06
to
Sebastian Biallas schrieb:

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...

0 new messages