(Scheinbar) sinnloser Overhead in ausführbaren Dateien?



  • Hallo,

    ich lern grad ein bisschen Assember.
    Hier ein einfaches Programm:

    .section .data
    
    .section .text
    
    .globl _start
    _start:
    	movl $1, %eax
    	movl $0, %ebx
    	int $0x80
    

    Jetzt hab ich das ganze mit as (Version 2.22) und mit ld (ebenfalls Version 2.22) unter Windows (mingw-Paket) zu einer Exe kompiliert.

    Ich hab Windows 7 64-bit, da funktionieren keine Interrupts, das weiß ich. (Außerdem ist 0x80 ein Linux-Interrupt, auch das weiß ich.)

    Die Exe hab ich dann mit dem IDA Free dekompiliert:

    .text:00401000 ;
    .text:00401000 ; +-------------------------------------------------------------------------+
    .text:00401000 ; ¦     This file is generated by The Interactive Disassembler (IDA)        ¦
    .text:00401000 ; ¦     Copyright (c) 2010 by Hex-Rays SA, <support@hex-rays.com>           ¦
    .text:00401000 ; ¦                      Licensed to: Freeware version                      ¦
    .text:00401000 ; +-------------------------------------------------------------------------+
    .text:00401000 ; ---------------------------------------------------------------------------
    .text:00401000 ; .text:00401000 ; Format      : Portable executable for 80386 (PE)
    .text:00401000 ; Imagebase   : 400000
    .text:00401000 ; Section 1. (virtual address 00001000)
    .text:00401000 ; Virtual size                  : 0000001C (     28.)
    .text:00401000 ; Section size in file          : 00000200 (    512.)
    .text:00401000 ; Offset to raw data for section: 00000200
    .text:00401000 ; Flags 60300020: Text Executable Readable
    .text:00401000 ; Alignment     : 4 bytes
    .text:00401000
    .text:00401000                 .686p
    .text:00401000                 .mmx
    .text:00401000                 .model flat
    .text:00401000
    .text:00401000 ; ---------------------------------------------------------------------------
    .text:00401000
    .text:00401000 ; Segment type: Pure code
    .text:00401000 ; Segment permissions: Read/Execute
    .text:00401000 _text           segment dword public 'CODE' use32
    .text:00401000                 assume cs:_text
    .text:00401000                 ;org 401000h
    .text:00401000                 assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
    .text:00401000
    .text:00401000                 public start
    .text:00401000 start:
    .text:00401000                 mov     eax, 1
    .text:00401005                 mov     ebx, 0
    .text:0040100A                 int     80h             ; LINUX - sys_exit
    .text:0040100A ; ---------------------------------------------------------------------------
    .text:0040100C                 dd 0FFFFFFFFh, 0
    .text:00401014                 dd 0FFFFFFFFh, 7Ah dup(0)
    .text:00401014 _text           ends
    .text:00401014
    .idata:00402000 ; Section 2. (virtual address 00002000)
    .idata:00402000 ; Virtual size                  : 00000014 (     20.)
    .idata:00402000 ; Section size in file          : 00000200 (    512.)
    .idata:00402000 ; Offset to raw data for section: 00000400
    .idata:00402000 ; Flags C0300040: Data Readable Writable
    .idata:00402000 ; Alignment     : 4 bytes
    .idata:00402000 ; ---------------------------------------------------------------------------
    .idata:00402000
    .idata:00402000 ; Segment type: Pure data
    .idata:00402000 ; Segment permissions: Read/Write
    .idata:00402000 _idata          segment dword public 'DATA' use32
    .idata:00402000                 assume cs:_idata
    .idata:00402000                 ;org 402000h
    .idata:00402000                 db    0
    .idata:00402001                 db    0
    .idata:00402002                 db    0
    .idata:00402003                 db    0
    .idata:00402004                 db    0
    .idata:00402005                 db    0
    .idata:00402006                 db    0
    .idata:00402007                 db    0
    .idata:00402008                 db    0
    .idata:00402009                 db    0
    .idata:0040200A                 db    0
    .idata:0040200B                 db    0
    .idata:0040200C                 db    0
    .idata:0040200D                 db    0
    .idata:0040200E                 db    0
    .idata:0040200F                 db    0
    .idata:00402010                 db    0
    .idata:00402011                 db    0
    .idata:00402012                 db    0
    .idata:00402013                 db    0
    .idata:00402014                 db    0
    .idata:00402015                 db    0
    .idata:00402016                 db    0
    .idata:00402017                 db    0
    .idata:00402018                 db    0
    .idata:00402019                 db    0
    .idata:0040201A                 db    0
    .idata:0040201B                 db    0
    .idata:0040201C                 db    0
    .idata:0040201D                 db    0
    .idata:0040201E                 db    0
    .idata:0040201F                 db    0
    .idata:00402020                 db    0
    .idata:00402021                 db    0
    .idata:00402022                 db    0
    .idata:00402023                 db    0
    .idata:00402024                 db    0
    .idata:00402025                 db    0
    .idata:00402026                 db    0
    .idata:00402027                 db    0
    .idata:00402028                 db    0
    .idata:00402029                 db    0
    .idata:0040202A                 db    0
    .idata:0040202B                 db    0
    .idata:0040202C                 db    0
    .idata:0040202D                 db    0
    .idata:0040202E                 db    0
    .idata:0040202F                 db    0
    .idata:00402030                 db    0
    .idata:00402031                 db    0
    .idata:00402032                 db    0
    .idata:00402033                 db    0
    .idata:00402034                 db    0
    .idata:00402035                 db    0
    .idata:00402036                 db    0
    .idata:00402037                 db    0
    .idata:00402038                 db    0
    .idata:00402039                 db    0
    .idata:0040203A                 db    0
    .idata:0040203B                 db    0
    .idata:0040203C                 db    0
    .idata:0040203D                 db    0
    .idata:0040203E                 db    0
    .idata:0040203F                 db    0
    .idata:00402040                 db    0
    .idata:00402041                 db    0
    .idata:00402042                 db    0
    .idata:00402043                 db    0
    .idata:00402044                 db    0
    .idata:00402045                 db    0
    .idata:00402046                 db    0
    .idata:00402047                 db    0
    .idata:00402048                 db    0
    .idata:00402049                 db    0
    .idata:0040204A                 db    0
    .idata:0040204B                 db    0
    .idata:0040204C                 db    0
    .idata:0040204D                 db    0
    .idata:0040204E                 db    0
    .idata:0040204F                 db    0
    .idata:00402050                 db    0
    .idata:00402051                 db    0
    .idata:00402052                 db    0
    .idata:00402053                 db    0
    .idata:00402054                 db    0
    .idata:00402055                 db    0
    .idata:00402056                 db    0
    .idata:00402057                 db    0
    .idata:00402058                 db    0
    .idata:00402059                 db    0
    .idata:0040205A                 db    0
    .idata:0040205B                 db    0
    .idata:0040205C                 db    0
    .idata:0040205D                 db    0
    .idata:0040205E                 db    0
    .idata:0040205F                 db    0
    .idata:00402060                 db    0
    .idata:00402061                 db    0
    .idata:00402062                 db    0
    .idata:00402063                 db    0
    .idata:00402064                 db    0
    .idata:00402065                 db    0
    .idata:00402066                 db    0
    .idata:00402067                 db    0
    .idata:00402068                 db    0
    .idata:00402069                 db    0
    .idata:0040206A                 db    0
    .idata:0040206B                 db    0
    .idata:0040206C                 db    0
    .idata:0040206D                 db    0
    .idata:0040206E                 db    0
    .idata:0040206F                 db    0
    .idata:00402070                 db    0
    .idata:00402071                 db    0
    .idata:00402072                 db    0
    .idata:00402073                 db    0
    .idata:00402074                 db    0
    .idata:00402075                 db    0
    .idata:00402076                 db    0
    .idata:00402077                 db    0
    .idata:00402078                 db    0
    .idata:00402079                 db    0
    .idata:0040207A                 db    0
    .idata:0040207B                 db    0
    .idata:0040207C                 db    0
    .idata:0040207D                 db    0
    .idata:0040207E                 db    0
    .idata:0040207F                 db    0
    .idata:00402080                 db    0
    .idata:00402081                 db    0
    .idata:00402082                 db    0
    .idata:00402083                 db    0
    .idata:00402084                 db    0
    .idata:00402085                 db    0
    .idata:00402086                 db    0
    .idata:00402087                 db    0
    .idata:00402088                 db    0
    .idata:00402089                 db    0
    .idata:0040208A                 db    0
    .idata:0040208B                 db    0
    .idata:0040208C                 db    0
    .idata:0040208D                 db    0
    .idata:0040208E                 db    0
    .idata:0040208F                 db    0
    .idata:00402090                 db    0
    .idata:00402091                 db    0
    .idata:00402092                 db    0
    .idata:00402093                 db    0
    .idata:00402094                 db    0
    .idata:00402095                 db    0
    .idata:00402096                 db    0
    .idata:00402097                 db    0
    .idata:00402098                 db    0
    .idata:00402099                 db    0
    .idata:0040209A                 db    0
    .idata:0040209B                 db    0
    .idata:0040209C                 db    0
    .idata:0040209D                 db    0
    .idata:0040209E                 db    0
    .idata:0040209F                 db    0
    .idata:004020A0                 db    0
    .idata:004020A1                 db    0
    .idata:004020A2                 db    0
    .idata:004020A3                 db    0
    .idata:004020A4                 db    0
    .idata:004020A5                 db    0
    .idata:004020A6                 db    0
    .idata:004020A7                 db    0
    .idata:004020A8                 db    0
    .idata:004020A9                 db    0
    .idata:004020AA                 db    0
    .idata:004020AB                 db    0
    .idata:004020AC                 db    0
    .idata:004020AD                 db    0
    .idata:004020AE                 db    0
    .idata:004020AF                 db    0
    .idata:004020B0                 db    0
    .idata:004020B1                 db    0
    .idata:004020B2                 db    0
    .idata:004020B3                 db    0
    .idata:004020B4                 db    0
    .idata:004020B5                 db    0
    .idata:004020B6                 db    0
    .idata:004020B7                 db    0
    .idata:004020B8                 db    0
    .idata:004020B9                 db    0
    .idata:004020BA                 db    0
    .idata:004020BB                 db    0
    .idata:004020BC                 db    0
    .idata:004020BD                 db    0
    .idata:004020BE                 db    0
    .idata:004020BF                 db    0
    .idata:004020C0                 db    0
    .idata:004020C1                 db    0
    .idata:004020C2                 db    0
    .idata:004020C3                 db    0
    .idata:004020C4                 db    0
    .idata:004020C5                 db    0
    .idata:004020C6                 db    0
    .idata:004020C7                 db    0
    .idata:004020C8                 db    0
    .idata:004020C9                 db    0
    .idata:004020CA                 db    0
    .idata:004020CB                 db    0
    .idata:004020CC                 db    0
    .idata:004020CD                 db    0
    .idata:004020CE                 db    0
    .idata:004020CF                 db    0
    .idata:004020D0                 db    0
    .idata:004020D1                 db    0
    .idata:004020D2                 db    0
    .idata:004020D3                 db    0
    .idata:004020D4                 db    0
    .idata:004020D5                 db    0
    .idata:004020D6                 db    0
    .idata:004020D7                 db    0
    .idata:004020D8                 db    0
    .idata:004020D9                 db    0
    .idata:004020DA                 db    0
    .idata:004020DB                 db    0
    .idata:004020DC                 db    0
    .idata:004020DD                 db    0
    .idata:004020DE                 db    0
    .idata:004020DF                 db    0
    .idata:004020E0                 db    0
    .idata:004020E1                 db    0
    .idata:004020E2                 db    0
    .idata:004020E3                 db    0
    .idata:004020E4                 db    0
    .idata:004020E5                 db    0
    .idata:004020E6                 db    0
    .idata:004020E7                 db    0
    .idata:004020E8                 db    0
    .idata:004020E9                 db    0
    .idata:004020EA                 db    0
    .idata:004020EB                 db    0
    .idata:004020EC                 db    0
    .idata:004020ED                 db    0
    .idata:004020EE                 db    0
    .idata:004020EF                 db    0
    .idata:004020F0                 db    0
    .idata:004020F1                 db    0
    .idata:004020F2                 db    0
    .idata:004020F3                 db    0
    .idata:004020F4                 db    0
    .idata:004020F5                 db    0
    .idata:004020F6                 db    0
    .idata:004020F7                 db    0
    .idata:004020F8                 db    0
    .idata:004020F9                 db    0
    .idata:004020FA                 db    0
    .idata:004020FB                 db    0
    .idata:004020FC                 db    0
    .idata:004020FD                 db    0
    .idata:004020FE                 db    0
    .idata:004020FF                 db    0
    .idata:00402100                 db    0
    .idata:00402101                 db    0
    .idata:00402102                 db    0
    .idata:00402103                 db    0
    .idata:00402104                 db    0
    .idata:00402105                 db    0
    .idata:00402106                 db    0
    .idata:00402107                 db    0
    .idata:00402108                 db    0
    .idata:00402109                 db    0
    .idata:0040210A                 db    0
    .idata:0040210B                 db    0
    .idata:0040210C                 db    0
    .idata:0040210D                 db    0
    .idata:0040210E                 db    0
    .idata:0040210F                 db    0
    .idata:00402110                 db    0
    .idata:00402111                 db    0
    .idata:00402112                 db    0
    .idata:00402113                 db    0
    .idata:00402114                 db    0
    .idata:00402115                 db    0
    .idata:00402116                 db    0
    .idata:00402117                 db    0
    .idata:00402118                 db    0
    .idata:00402119                 db    0
    .idata:0040211A                 db    0
    .idata:0040211B                 db    0
    .idata:0040211C                 db    0
    .idata:0040211D                 db    0
    .idata:0040211E                 db    0
    .idata:0040211F                 db    0
    .idata:00402120                 db    0
    .idata:00402121                 db    0
    .idata:00402122                 db    0
    .idata:00402123                 db    0
    .idata:00402124                 db    0
    .idata:00402125                 db    0
    .idata:00402126                 db    0
    .idata:00402127                 db    0
    .idata:00402128                 db    0
    .idata:00402129                 db    0
    .idata:0040212A                 db    0
    .idata:0040212B                 db    0
    .idata:0040212C                 db    0
    .idata:0040212D                 db    0
    .idata:0040212E                 db    0
    .idata:0040212F                 db    0
    .idata:00402130                 db    0
    .idata:00402131                 db    0
    .idata:00402132                 db    0
    .idata:00402133                 db    0
    .idata:00402134                 db    0
    .idata:00402135                 db    0
    .idata:00402136                 db    0
    .idata:00402137                 db    0
    .idata:00402138                 db    0
    .idata:00402139                 db    0
    .idata:0040213A                 db    0
    .idata:0040213B                 db    0
    .idata:0040213C                 db    0
    .idata:0040213D                 db    0
    .idata:0040213E                 db    0
    .idata:0040213F                 db    0
    .idata:00402140                 db    0
    .idata:00402141                 db    0
    .idata:00402142                 db    0
    .idata:00402143                 db    0
    .idata:00402144                 db    0
    .idata:00402145                 db    0
    .idata:00402146                 db    0
    .idata:00402147                 db    0
    .idata:00402148                 db    0
    .idata:00402149                 db    0
    .idata:0040214A                 db    0
    .idata:0040214B                 db    0
    .idata:0040214C                 db    0
    .idata:0040214D                 db    0
    .idata:0040214E                 db    0
    .idata:0040214F                 db    0
    .idata:00402150                 db    0
    .idata:00402151                 db    0
    .idata:00402152                 db    0
    .idata:00402153                 db    0
    .idata:00402154                 db    0
    .idata:00402155                 db    0
    .idata:00402156                 db    0
    .idata:00402157                 db    0
    .idata:00402158                 db    0
    .idata:00402159                 db    0
    .idata:0040215A                 db    0
    .idata:0040215B                 db    0
    .idata:0040215C                 db    0
    .idata:0040215D                 db    0
    .idata:0040215E                 db    0
    .idata:0040215F                 db    0
    .idata:00402160                 db    0
    .idata:00402161                 db    0
    .idata:00402162                 db    0
    .idata:00402163                 db    0
    .idata:00402164                 db    0
    .idata:00402165                 db    0
    .idata:00402166                 db    0
    .idata:00402167                 db    0
    .idata:00402168                 db    0
    .idata:00402169                 db    0
    .idata:0040216A                 db    0
    .idata:0040216B                 db    0
    .idata:0040216C                 db    0
    .idata:0040216D                 db    0
    .idata:0040216E                 db    0
    .idata:0040216F                 db    0
    .idata:00402170                 db    0
    .idata:00402171                 db    0
    .idata:00402172                 db    0
    .idata:00402173                 db    0
    .idata:00402174                 db    0
    .idata:00402175                 db    0
    .idata:00402176                 db    0
    .idata:00402177                 db    0
    .idata:00402178                 db    0
    .idata:00402179                 db    0
    .idata:0040217A                 db    0
    .idata:0040217B                 db    0
    .idata:0040217C                 db    0
    .idata:0040217D                 db    0
    .idata:0040217E                 db    0
    .idata:0040217F                 db    0
    .idata:00402180                 db    0
    .idata:00402181                 db    0
    .idata:00402182                 db    0
    .idata:00402183                 db    0
    .idata:00402184                 db    0
    .idata:00402185                 db    0
    .idata:00402186                 db    0
    .idata:00402187                 db    0
    .idata:00402188                 db    0
    .idata:00402189                 db    0
    .idata:0040218A                 db    0
    .idata:0040218B                 db    0
    .idata:0040218C                 db    0
    .idata:0040218D                 db    0
    .idata:0040218E                 db    0
    .idata:0040218F                 db    0
    .idata:00402190                 db    0
    .idata:00402191                 db    0
    .idata:00402192                 db    0
    .idata:00402193                 db    0
    .idata:00402194                 db    0
    .idata:00402195                 db    0
    .idata:00402196                 db    0
    .idata:00402197                 db    0
    .idata:00402198                 db    0
    .idata:00402199                 db    0
    .idata:0040219A                 db    0
    .idata:0040219B                 db    0
    .idata:0040219C                 db    0
    .idata:0040219D                 db    0
    .idata:0040219E                 db    0
    .idata:0040219F                 db    0
    .idata:004021A0                 db    0
    .idata:004021A1                 db    0
    .idata:004021A2                 db    0
    .idata:004021A3                 db    0
    .idata:004021A4                 db    0
    .idata:004021A5                 db    0
    .idata:004021A6                 db    0
    .idata:004021A7                 db    0
    .idata:004021A8                 db    0
    .idata:004021A9                 db    0
    .idata:004021AA                 db    0
    .idata:004021AB                 db    0
    .idata:004021AC                 db    0
    .idata:004021AD                 db    0
    .idata:004021AE                 db    0
    .idata:004021AF                 db    0
    .idata:004021B0                 db    0
    .idata:004021B1                 db    0
    .idata:004021B2                 db    0
    .idata:004021B3                 db    0
    .idata:004021B4                 db    0
    .idata:004021B5                 db    0
    .idata:004021B6                 db    0
    .idata:004021B7                 db    0
    .idata:004021B8                 db    0
    .idata:004021B9                 db    0
    .idata:004021BA                 db    0
    .idata:004021BB                 db    0
    .idata:004021BC                 db    0
    .idata:004021BD                 db    0
    .idata:004021BE                 db    0
    .idata:004021BF                 db    0
    .idata:004021C0                 db    0
    .idata:004021C1                 db    0
    .idata:004021C2                 db    0
    .idata:004021C3                 db    0
    .idata:004021C4                 db    0
    .idata:004021C5                 db    0
    .idata:004021C6                 db    0
    .idata:004021C7                 db    0
    .idata:004021C8                 db    0
    .idata:004021C9                 db    0
    .idata:004021CA                 db    0
    .idata:004021CB                 db    0
    .idata:004021CC                 db    0
    .idata:004021CD                 db    0
    .idata:004021CE                 db    0
    .idata:004021CF                 db    0
    .idata:004021D0                 db    0
    .idata:004021D1                 db    0
    .idata:004021D2                 db    0
    .idata:004021D3                 db    0
    .idata:004021D4                 db    0
    .idata:004021D5                 db    0
    .idata:004021D6                 db    0
    .idata:004021D7                 db    0
    .idata:004021D8                 db    0
    .idata:004021D9                 db    0
    .idata:004021DA                 db    0
    .idata:004021DB                 db    0
    .idata:004021DC                 db    0
    .idata:004021DD                 db    0
    .idata:004021DE                 db    0
    .idata:004021DF                 db    0
    .idata:004021E0                 db    0
    .idata:004021E1                 db    0
    .idata:004021E2                 db    0
    .idata:004021E3                 db    0
    .idata:004021E4                 db    0
    .idata:004021E5                 db    0
    .idata:004021E6                 db    0
    .idata:004021E7                 db    0
    .idata:004021E8                 db    0
    .idata:004021E9                 db    0
    .idata:004021EA                 db    0
    .idata:004021EB                 db    0
    .idata:004021EC                 db    0
    .idata:004021ED                 db    0
    .idata:004021EE                 db    0
    .idata:004021EF                 db    0
    .idata:004021F0                 db    0
    .idata:004021F1                 db    0
    .idata:004021F2                 db    0
    .idata:004021F3                 db    0
    .idata:004021F4                 db    0
    .idata:004021F5                 db    0
    .idata:004021F6                 db    0
    .idata:004021F7                 db    0
    .idata:004021F8                 db    0
    .idata:004021F9                 db    0
    .idata:004021FA                 db    0
    .idata:004021FB                 db    0
    .idata:004021FC                 db    0
    .idata:004021FD                 db    0
    .idata:004021FE                 db    0
    .idata:004021FF                 db    0
    .idata:004021FF _idata          ends
    .idata:004021FF
    .idata:004021FF
    .idata:004021FF                 end start
    

    Besonders interessant finde ich die "_idata"-Section. Hier hat der Kompiler anscheinend einen Buffer eingerichtet? Oder warum sind hier lauter Null-Bytes?
    Wo doch mein eigentlicher Code nur drei Zeilen umfasst?



  • Das wird eben immer auf Sections aufgefüllt im Nullbytes z.B auf 512 Byte



  • deivvvvvvvv schrieb:

    Das wird eben immer auf Sections aufgefüllt im Nullbytes z.B auf 512 Byte

    ja, aber warum? ich weiß zwar nicht, für was die idata-section gut ist, aber ich nehme mal stark an, dass ich die für dieses mini-programm nicht brauche.



  • ???

    Da sind irgendwelche überflüssigen Sections in ausführbaren Dateien, und keiner weiß, warum?



  • idata ist der Bereich wo der PE Loader die Verbindung zu benötigten DLLs und anderen Systemfunktionen einfügt. Könnte sein das da selbst bei einem minimalen Programm schon was reinkommt, oder einfach nur vorsichtshalber etwas Platz bereitgestellt wird.



  • Tobiking2 schrieb:

    idata ist der Bereich wo der PE Loader die Verbindung zu benötigten DLLs und anderen Systemfunktionen einfügt. Könnte sein das da selbst bei einem minimalen Programm schon was reinkommt, oder einfach nur vorsichtshalber etwas Platz bereitgestellt wird.

    warum wird der speicherplatz nicht pseudo-allokiert?

    also dass irgendwo steht "bei der ausführung allokiere 512 bytes für dlls", dann müsste man nicht tatsächlich 512-bytes in der exe ausnullen.

    p.s.: gibt es irgendwo eine auflistung über alle sektions und deren funktionen?



  • les dir die dokumentation übers pe format durch



  • Keine AHnung, vielleicht hilft das
    http://www.phreedom.org/research/tinype/



  • deivvvvvvv schrieb:

    les dir die dokumentation übers pe format durch

    Soll das ein Witz sein? Die offizielle Beschreibung/Spezifikation von Microsoft umfasst fast 100 Seiten!

    @ Volkard:
    Danke, interessanter Link.

    Leider ist das ein Tutorial mit dem MS-Compiler.

    Besonders Abschnitt "Removing the C Runtime Library", da würde mich interessieren, wie das Äquivalent für den gcc aussieht.



  • Wenn du eine COM-Datei haben willst, linke halt mit binary als Ziel. bzw. Linke ganz normal, und dann nimm objcopy -O binary.



  • ich will keine com, ich will einfach wissen, warum in so einem einfachen programm so eine fette und unnötige idata section ist.

    übrigens ist die exe insgesammt nur ca 1500Bytes groß, d.h. diese section macht viel aus.


Anmelden zum Antworten