-
Wofür ein Disassembler, ltrace reicht doch
Autor: EWCH 02.03.21 - 21:09
strlen() ist ein library call der beim Start mit ltrace angezeigt wird.
-
Re: Wofür ein Disassembler, ltrace reicht doch
Autor: ath 03.03.21 - 01:10
libc wird häufig statisch gelinkt und das Game-Binary ist stripped. Ohne Disassembler kommt man da nicht weit. So trivial, wie strlen ist, wird das auch oft sogar inlined. War hier aber nicht der Fall (siehe original Artikel).
-
Re: Wofür ein Disassembler, ltrace reicht doch
Autor: EWCH 03.03.21 - 09:20
> libc wird häufig statisch gelinkt und das Game-Binary ist stripped.
stripped ist egal, der library call geht unveraendert durch
> Disassembler kommt man da nicht weit. So trivial, wie strlen ist, wird das
> auch oft sogar inlined.
das geht ja nur wenn der compiler den source dazu hat. -
Re: Wofür ein Disassembler, ltrace reicht doch
Autor: ath 03.03.21 - 12:15
> stripped ist egal, der library call geht unveraendert durch
Vorausgesetzt, dass dynamisch gegen libc/msvcrt gelinkt wird, was hier nicht der Fall war.
> das geht ja nur wenn der compiler den source dazu hat.
War frueher so, ist heute aber nicht mehr unbedingt erforderlich. Mit LTO oder WPO funktioniert das auch ohne -- vorausgesetzt, die Lib, gegen die du linkst, ist mit entsprechender Unterstuetzung dafuer kompiliert worden.
In jedem Fall geht aus dem Original-Artikel klar hervor, dass strlen sich hier im GTA Binary selbst befunden hat. Golem's Spam-Protection haelt mich davon ab, den Link zum Blog-Post hier zu posten, aber er ist auch im Artikel verlinkt.