Page 1 of 1
Что выводит эта программа при запуске?
Posted:
27 Jan 2015, 17:31
by lvd
- Code: Select all
const int main[] = {
-443987883, 440, 113408, -1922629632,
4149, 899584, 84869120, 15544,
266023168, 1818576901, 1461743468, 1684828783,
-1017312735
};
Программа для linux x86-64 и гцц.
Re: Что выводит эта программа при запуске?
Posted:
27 Jan 2015, 19:04
by deathsoft
Переведи поебень в массиве в байты и посмотри любым дизасмом - хинт - main - это просто адрес функции - тело в виде массива.
Выводит она видимо надпись "линупс - говно".
Более того на нормальном проце программа вообще упадет с segv, т.к. у любых массивов стоит атрибут NX (non executable), т.к. это данные а не код и страницы с массивом помечаются как не исполняемые (ридонли или RW).
Re: Что выводит эта программа при запуске?
Posted:
27 Jan 2015, 21:49
by lvd
А вот хуй, main оказывается в секции .text, и выполняется замечательно.
Re: Что выводит эта программа при запуске?
Posted:
28 Jan 2015, 00:03
by deathsoft
lvd wrote:А вот хуй, main оказывается в секции .text, и выполняется замечательно.
Так потому, что компилятор и линкер уебищный, создает потенциально уязвимую программу помещая массив в исполняемые страницы.
Re: Что выводит эта программа при запуске?
Posted:
31 Jan 2015, 19:19
by fk0
Пиздишь ёпт!
- Code: Select all
.file "test.c"
.globl main
.section .rodata
.align 32
.type main, @object
.size main, 52
main:
.long -443987883
.long 440
.long 113408
.long -1922629632
.long 4149
.long 899584
.long 84869120
.long 15544
.long 266023168
.long 1818576901
.long 1461743468
.long 1684828783
.long -1017312735
.ident "GCC: (Debian 4.7.4-3) 4.7.4"
.section .note.GNU-stack,"",@progbits
sysop@pc:ghostcheck$ nm a.out | grep main
U __libc_start_main@@GLIBC_2.0
08048480 R main
man nm -->
"R" "r" The symbol is in a read only data section.
$ objdump -D a.out
- Code: Select all
...
Disassembly of section .rodata:
08048460 <_fp_hw>:
8048460: 03 00 add (%eax),%eax
...
08048464 <_IO_stdin_used>:
8048464: 01 00 add %eax,(%eax)
8048466: 02 00 add (%eax),%al
...
08048480 <main>:
8048480: 55 push %ebp
8048481: 48 dec %eax
8048482: 89 e5 mov %esp,%ebp
8048484: b8 01 00 00 00 mov $0x1,%eax
8048489: bb 01 00 00 00 mov $0x1,%ebx
804848e: 67 8d 35 lea (%di),%esi
8048491: 10 00 adc %al,(%eax)
8048493: 00 00 add %al,(%eax)
8048495: ba 0d 00 00 00 mov $0xd,%edx
804849a: 0f 05 syscall
....
Буханка рулез! Виндовс мастдай!
Re: Что выводит эта программа при запуске?
Posted:
31 Jan 2015, 19:28
by fk0
А вот хуй. В rodata оно конечно кладёт. С линкером всё заебись, и с компилятором. А стартап уебанский на 146% -- он прямо из rodata main и запускает. И ведь запускается (БУХАНКА, БУХАНКА, БУХАНКА!!!), не падает. NX бит не предусмотрен.
Re: Что выводит эта программа при запуске?
Posted:
01 Feb 2015, 22:29
by deathsoft
fk0 wrote:NX бит не предусмотрен.
Давно ядро буханки есть с NX битом и рантайм который все это поддерживает.
Re: Что выводит эта программа при запуске?
Posted:
08 Feb 2015, 20:44
by fk0
Ну и покажи как это ведро и рантайм запустить.
Re: Что выводит эта программа при запуске?
Posted:
09 Feb 2015, 22:12
by deathsoft
fk0 wrote:Ну и покажи как это ведро и рантайм запустить.
Вот это разве не оно?
http://en.wikipedia.org/wiki/PaXPaX offers executable space protection, using (or emulating in operating system software) the functionality of an NX bit (i.e., built-in CPU/MMU support for memory contents execution privilege tagging). It also provides address space layout randomization to defeat ret2libc attacks and all other attacks relying on known structure of a program's virtual memory.
И в догонку современное ядро с патчами
http://grsecurity.net/