Article View: pl.comp.lang.asm
Article #1840Re: mutacja kodu asm
From: Wojciech Muła
Date: Sat, 28 Jun 2008 10:42
Date: Sat, 28 Jun 2008 10:42
77 lines
2812 bytes
2812 bytes
On Sat, 28 Jun 2008 01:41:03 +0200 Bartosz Wójcik
<antispam@dont.use.it> wrote:
> > Z ciekawości: daj jakiś mało rozbudowany przykład kodu
> > przed i po mutacji.
> >
> > w.
>
> "mov eax, [edx + 4]"
>
> 2-krotna mutacja, bez zmiany flow, bez junkow, ogolnie bez niczego
> ciekawego
>
> [...]
Można sobie łatwo z tym poradzić --- przekonwertować kod asemblerowy
wprost na C, skompilować z optymalizacją i większość śmieci znika. Dla
próby przepisałem ręcznie te dwa kawałki i gcc -O3 ładnie wyprowadził
wszystkie stałe. Przy odrobinie wysiłku można napisać automatyczny
translator asm -> C.
Kod dla drugiego przykładu:
---
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
int main(int argc, char* argv[]) {
uint32_t eax, edx, tmp;
int16_t ax;
//mov eax,000007F75
eax = 0x000007F75;
//cwde
ax = (eax & 0xffff);
eax = ax;
//lea eax,[eax][04E7F811F]
eax += 0x04EC00AF3;
//or eax,000400A63
eax |= 0x000400A63;
//mov eax,[edx][eax][-04EC00AF3]
tmp = eax - 0x04E7F811F;
// i tutaj odczyt z pamięci, spod adresu edx + tmp
printf("eax = %d, edx = %d, addr = %d\n", eax, edx, tmp);
return 0;
}
---
To co wyprodukował gcc (przycięte):
---
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl $4262220, 12(%esp) <--- wyniki
movl $0, 8(%esp) <--- obliczeń
movl $1321241195, 4(%esp) <---
movl $.LC0, (%esp)
call printf
addl $20, %esp
xorl %eax, %eax
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
---
w.
Technical Details
Message-ID:
<20080628124211.641a70a4@cat.tac>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mailReferences:
<1rx2rdgwi70m8$.1u97v8583ddbw$.dlg@40tude.net> <20080624174715.11590c57@cat.tac> <zsvo782yvkug$.13ttzjsfqwlw7.dlg@40tude.net> <g4246t$2up$1@nemesis.news.neostrada.pl> <hamp7i37h63q$.4m3q2jzu1l8u.dlg@40tude.net> <20080627182328.02edf22c.wojciech_mula@poczta.null.onet.pl.invalid> <epug7f4uaaby$.1g3iwqkvxtm9w$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail From: Wojciech Muła <wojciech_mula@poczta.null.onet.pl.invalid> Newsgroups: pl.comp.lang.asm Subject: Re: mutacja kodu asm Date: Sat, 28 Jun 2008 12:42:11 +0200 Organization: http://www.republika.pl/wmula Lines: 80 Message-ID: <20080628124211.641a70a4@cat.tac> References: <1rx2rdgwi70m8$.1u97v8583ddbw$.dlg@40tude.net> <20080624174715.11590c57@cat.tac> <zsvo782yvkug$.13ttzjsfqwlw7.dlg@40tude.net> <g4246t$2up$1@nemesis.news.neostrada.pl> <hamp7i37h63q$.4m3q2jzu1l8u.dlg@40tude.net> <20080627182328.02edf22c.wojciech_mula@poczta.null.onet.pl.invalid> <epug7f4uaaby$.1g3iwqkvxtm9w$.dlg@40tude.net> NNTP-Posting-Host: acci82.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.neostrada.pl 1214650164 11830 83.9.132.82 (28 Jun 2008 10:49:24 GMT) X-Complaints-To: usenet@news.neostrada.pl NNTP-Posting-Date: Sat, 28 Jun 2008 10:49:24 +0000 (UTC) X-Newsreader: Claws Mail 3.4.0 (GTK+ 2.12.10; i486-pc-linux-gnu) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit