🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1840

Re: mutacja kodu asm

#1840
From: Wojciech Muła
Date: Sat, 28 Jun 2008 10:42
77 lines
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-mail
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>

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