000
20.02.2016, 11:48 Uhr
Hans
Library Walker (Operator)
|
Hi,
nachdem ich einem Bekannten kürzlich einen seltsamen C-Code gezeigt habe, bekam ich später folgendes präsentiert:
C++: |
/* compile with `gcc -Wall -O0 -static -s -o mainarray mainarray.c` */ const unsigned int main[] = { 3850979413, 440, 113408, 2372337664, 4149, 3586560, 84869120, 15544, 266023168, 1970426885, 1260418163, 1651469417, 744846457, 660957216, 1700929651, 1919251572, 1953068832, 541270120, 1768382829, 1752440931, 2032168545, 539915631, 2416587580, 93 };
|
Das funktioniert nur unter 64-Bit Linux (Intel-kompatible CPU) und gibt dort einen Text aus. Unter Windows schmiert es ab.
Im Prinzip handelt es sich um ein Hello-World in Assembler, das auf das 64-Bit-API von Linux zugeschnitten ist, und als C-Programm getarnt daher kommt. Die Frage ist jetzt, wie ich an den Assemblertext komme, denn gcc liefert mit der Option -S nur folgendes:
Code: |
.file "mainarray.c" .globl _main .section .rdata,"dr" .align 32 _main: .long -443987883 .long 440 .long 113408 .long -1922629632 .long 4149 .long 3586560 .long 84869120 .long 15544 .long 266023168 .long 1970426885 .long 1260418163 .long 1651469417 .long 744846457 .long 660957216 .long 1700929651 .long 1919251572 .long 1953068832 .long 541270120 .long 1768382829 .long 1752440931 .long 2032168545 .long 539915631 .long -1878379716 .long 93 .ident "GCC: (GNU) 4.8.1"
|
Das ist auch nicht viel aufschlussreicher, als der C-Code... Hans -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 20.02.2016 um 11:51 Uhr von Hans editiert. |