Вечер в хату, пацаны. В этом ИТТ треде мы пишем гениальную программу вместе! Вооружаемся GCC, NASM и objdump и начинаем творить. Я начинаю, вы продолжаете. Каждый анон дописывает одну законченную строчку, но обязательно не пишет всю программу целиком. Программа должна иметь строгую логику - читайте, что написали до вас. Го, посоны, это будет вин!https://ideone.com/WCuyjz#include <stdio.h> const char sh[] = "\xb8\x04\x00\x00\x00\xbb\x01\x00"\ "\x00\x00\x68\x75\x69\x21\x00\x68"\ "\x20\x2d\x20\x68\x68\x4f\x50\x00"\ "\x00\x89\xe1\xba\x0a\x00\x00\x00"\ "\xcd\x80\xb8\x01\x00\x00\x00\xbb"\ "\x00\x00\x00\x00\xcd\x8\xc3"; int main(){int (∗func)();func = (int (∗)()) sh;
лезь под шконарь, сиделец ебаный
return 0; }
>>707964лол
>>707964int __main(void) { printf("sasaj\n";
Ошибка компиляции.
>>707960 (OP)>int (∗func)();>func = (int (∗)()) sh;Что эта дичь делает?
>>708776Объявляется указатель на функцию, который указывает на sh, внутри него скомпилированый исполняемый код (он не работает на современных пеках, потому что в стеке лежит). Внутри - вывод строки "OP hui" напрямую с помощью системного вызова.
>>708791Сложные язык. Можешь по операторам разложить?
>>708791Он не на стеке лежит, а (как и все строковые литералы) в "статической" памяти. А не работает оно потому, что странички этой статической памяти не имеют флага x (executable).
>>709294Работает все.
>>707960 (OP)>3 пикПривет Александреску
>>709294Я так понимаю, это и есть то, что дает флаг PAE в процессорах?
>>709452Да, только это флаг NX.
Так лол ты нам библиотеки ограничил чо мы терь напишем?
>>708776https://habrahabr.ru/post/275861/https://tproger.ru/translations/main-is-usually-a-function-so-then-when-is-it-not/
>>707960 (OP)exit(0);
https://ideone.com/l8lihx/thread