Vadim Yegorov
Денис Юричев - Reverse Engineering для начинающих
Vadim Yegorov
Я ее читал давно, теперь понадобилась
Vadim Yegorov
LITE версию, 150 страниц
Vadim Yegorov
А не 600
Значит не правильно понял, извини.
Vadim Yegorov
Эта у меня есть полная
Vadim Yegorov
Блина взял и удалил, а где скачивал обе версии сразу не помню
­
Yura
Здравствуйте, в поисках специалиста по машинному обучению. Нужно написать нейросеть.
Здравствуйте. Что за нейросеть надо написать ? Есть техническое задание?
Schrödinger's
В nasm, как формируются отрицательные числа в 16ричной сс
Schrödinger's
Two's compliment или просто минус можно
Eugene
Two's compliment или просто минус можно
Так же, как и в остальных асмах. Что значит "или"? Дополнительный код — это формат хранения. Минус — это строковая запись. Если нужно значение -1000 типа WORD, то пишешь -1000 или 0xFC18.
Schrödinger's
И подобное
Schrödinger's
О
Schrödinger's
Это я и хотел узнать
Eugene
Я о том что корректна ли запись -0xFA
Ну почему же, вполне корректна. Другой вопрос, то ли ты получишь, что хочешь? Это будет эквивалентно -250. Покажи конструкцию, в которой ты это хочешь написать?
Eugene
И что хочешь получить.
Schrödinger's
Это должно выйти мин число для знакового байта👀
Schrödinger's
Мб
Eugene
😁 Тут минус вообще ни на что не влияет :) Ибо байт 128 и -128 - это одно и то же.
Schrödinger's
Окей, тогда пусть -0х7f
Eugene
Аналогично -127 или 129 или 0x81.
Schrödinger's
Тоесть такое объявление применимо вполне?
Eugene
16-ричное число ничем, кроме формы записи (префикс + 16 вариантов цифр вместо 10) не отличается от десятичного.
Schrödinger's
Окей, спасибо
Eugene
Тут нюанс может быть таким, что NASM скорее всего примет в качестве байта значение от -128 до 255, поэтому, скажем, -0xFF не прокатит (скорее всего), т.к. это -255.
Marsel
чем можно вскрыть файл .dat 90х годов? там внутри текст, но блокнотом ее не открыть
Eugene
чем можно вскрыть файл .dat 90х годов? там внутри текст, но блокнотом ее не открыть
DAT-файл может хранить любые данные. И при чём тут ассемблер?
Eugene
Тем более про.асм.
­
DAT-файл может хранить любые данные. И при чём тут ассемблер?
Любые файлы могут хранить любые данные.
Marsel
DAT-файл может хранить любые данные. И при чём тут ассемблер?
вытащить текст через реверс инжиниринг вот при чем тут асемблер
radmir
вытащить текст через реверс инжиниринг вот при чем тут асемблер
А он чтоли на ассемблере написан? Или как? Если там текст есть, то он прям так в файле и будет, в виде текста
alexey ⚡️
С днём программиста
­
Вчера вроде был..
alexey ⚡️
Взаимно! 💥
пик балмера достигнут, пора покодить 😃
­
Хер с вами, с праздником
Прив челики, давно тут не появлялся.
В общем, расклад такой, что у меня gcc си-прогу так компилит, что переменные в стеке появляются в порядке отличном от объявленного.
Он буферы последними пишет.
Это что за поведение такое, как настраивается?
Aiwan \ (•◡•) / _bot
что за буферы? может это локальные переменные
Ну я сижу стэк ковыряю в gdb
Aiwan \ (•◡•) / _bot
char[]
продолжай мысль, но только одним сообщением
Пытаюсь переполнять буффер, а он по другому адресу, нежели я его ожидаю. Т.е. например объявлен первым, а по адресу последним.
Т.е. дальше всего от адреса возврата.
Aiwan \ (•◡•) / _bot
ну так и должно быть, в стек кладутся в обратном порядке при обявлении
ну так и должно быть, в стек кладутся в обратном порядке при обявлении
То аргументы, я про те, которые в теле объявляются
Aiwan \ (•◡•) / _bot
proc myproc param1,param2, ..., paramn push paramn ... push param2 push param1
aaaa
Ну да, не высказался понятнее. Переменные, что в теле объявлены.
Локальные
Aiwan \ (•◡•) / _bot
видду того что в стеке все наоборот мож данное поведение единственное правильное?
Т.е. объявлено main(){ char c[10]; int val; } А ближе к вершине стэка будет c[10]
Aiwan \ (•◡•) / _bot
ну так и должно быть, "ближе к вершине" это значит с наибольшим адресом
Вершина стэка с наименьшим адресом.
Aiwan \ (•◡•) / _bot
сначало стек съелся для char c, потом адрес уменьшился - съелся на int val
сначало стек съелся для char c, потом адрес уменьшился - съелся на int val
Так в том и дело, что он сначала на стэк int val кладёт
Я так понимаю, какая-то фича строки на самый верх тащить.
Aiwan \ (•◡•) / _bot
char c имеет больший адрес по своему абсолютному значению, но при этом смещени яотносительно ebp наименьшее (хотя не, не так сказал как то). с ——- ebp-10 val——-- ebp-14
>The compiler can decide on the order of variables for memory allocation
Ну вот такое получается
Видимо, раньше gcc этого не делал, а теперь делает.
Aiwan \ (•◡•) / _bot
так мож поэтому и надо писать на асме, а не на си? чтоб знать что в памяти лежит ровно то что ты туда положил
⸙ꠋꠋk̹̺ Seymøur
>The compiler can decide on the order of variables for memory allocation
Тут ещё можно вспомнить про выравнивание, которое в принципе тоже может повлиять на порядок
как гуглить?
alignment?
Eugene
То аргументы, я про те, которые в теле объявляются
А кто сказал, что C/C++ должен класть в стек переменные в каком-то определённом порядке? Он может оптимизировать всё это так, как ему больше нравится.