lexszero 06.01.2012 01:55 nyapad

Есть такой быдлокод: http://paste.pocoo.org/show/530725/
Скастовал на него gcc -m32 -O0, дизасмлю и вижу, что после вызова printf стоит тупо ноп и выход из main, даже goto проебалось, алсо вызов f() делает call по адресу куска вычисления code_size, хуй знает почему — т.е. все тупо зацикливается.
Попробовал тот же быдлокод скормить шлангу — получил _code_start = 0x01 и соответственно сегфолт. От исходной асмовставки не нашел даже нопа.
ЧЯДНТ ЧЯДНТ

Recommended by: @xl0
1. xl0 06.01.2012 03:09

_code_start недостижим и выкомпиливается даже при -O0. В результате лейбл видимо начинает указыват на начало main.

--- test.c.orig 2012-01-06 05:05:36.506259543 +0200
+++ test.c 2012-01-06 05:06:49.774016767 +0200
@@ -3,6 +3,8 @@

typedef int(*int_func)(void);

+int i = 0;
+
int main() {
const code_size = &&_code_end — &&_code_start;

@@ -10,8 +12,9 @@

int_func f = &&_code_start;
printf("%i\n", f());
-
- goto _code_end;
+
+ if (!i)
+ goto _code_end;

_code_start:
asm volatile(

xl0@bzz:~$ ./a.out
Code start 0x8048446, size 13
2
xl0@bzz:~$

А ещё ты наркоман.

2. lexszeroxl0 /1 06.01.2012 03:15 nyapad

КОСТЫЛИ. в мане нашел как включить DCE, но не нашел, как его выключить.

3. xl0lexszero /2 06.01.2012 03:17 BitlBeeCA938DA7

Указатель на лейбл — само по себе костыль, к тому-же не ясно, зачем он нужен.

4. lexszeroxl0 /3 06.01.2012 03:17 nyapad

я собирался поразвлекаться с самомодификацией кода

5. xl0lexszero /4 06.01.2012 03:19 BitlBeeCA938DA7

Запихай ассебмлер в функцию, в чем проблема?

6. lexszeroxl0 /5 06.01.2012 03:23 nyapad

тогда надо высчитывать длину кода прелюдии — всякой стекоебли етц

7. xl0lexszero /6 06.01.2012 03:23 BitlBeeCA938DA7

__attribute__((bare)), кажется.

8. xl0xl0 /7 06.01.2012 03:24 BitlBeeCA938DA7

Второй вариант — захерачь лейбл _в_ асмовом коде.

9. lexszeroxl0 /8 06.01.2012 03:26 nyapad

а гэцэцэ узнает об этом лейбле? он же тупо скармливает говно из asm() ассемблеру as is

10. xl0lexszero /9 06.01.2012 03:26 BitlBeeCA938DA7

Лейбл это symbol, при кинковке узнает.

11. lexszeroxl0 /7 06.01.2012 03:28 nyapad

дока говорит только про naked, и то только на небольшой пачке архитектур, среди которых нет x86

12. xl0xl0 /10 06.01.2012 03:33 BitlBeeCA938DA7

http://dumpz.org/130423/

13. xl0xl0 /12 06.01.2012 03:35 BitlBeeCA938DA7

Как по мне, ассемблер лучше бы делать отдельным файлом, да и складывать в отдельную секцию. Ты ж линкер-скрипты писать умеешь? ;)

14. xl0lexszero /11 06.01.2012 03:37 BitlBeeCA938DA7

Да, bare это из другой оперы.

Do you really want to delete ?