В этом треде мы изучаем самый компактный и низкоуровневый язык Ассемблер и смежную с ним область: Реверс-инженеринга (RE).
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда. Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Инструменты для RE: Дизассемблеры: 1) IDA Pro Torrent Edition 7.2 | 7.0 | 6.8 на выбор. Иногда ограничения версий x86/x64, патчинг, вылеты прилагаются 2) IDA Freeware 7.0 - бесплатная для некоммерческого использования Важные функции/процы/форматы не завезли, саппорт все обращения ксорит побайтово. 3) IDA Home - тем, кто реверсит для хобби 365$ в год, ага. Умеет на выбор PC|ARM|MIPS, обычные и х64. Завезли IDAPython, но забыли Decompiler. 4) Ghidra - главный конкурент IDA Pro, разработка NSA под свободной лицензией. Тормозной Java UI, гипотетические звездно-полосатые анальные зонды в комплекте. 5) Radare 2 | Cutter - консольный + гуй на Qt дизассемблер. Умеет в Ghidra decompiler. Предположительно нужен только клиническим, не умеющим в скачивания торрентов, пользователям альтернативных ОС. 6) Hiew - Hex-редактор и легкий x86|64|arm дизассемблер за копейки. AV-ресечеры текут, вирьмейкеры боятся, поклонники st. Криса грят малаца. 7) Остальное
Отладчики: 1) x64dbg - х86/64 юзерспейс виндовый отладчик с открытым кодом не Olly же в 2020, верно?; 2) WinDbg - родной виндовый дебаггер от MS 32/64 битные приложения, драйвера, анализа аварийных дампов - это все к нему;
>>2079347 > недотред никому не нужен Именно. Из-за отсутствия нормального треда засирается весь /pr/. Сейчас на борде, так-то, две #asm нити, помимо этой, и тьма вопросов в нюфаг-треде
>>2080764 По моему дилетантскому мнению, я не программист и вообще не касался ассемблера для ПК, идея крайне сомнительная. Если хочешь что попроще, то можешь изучать на примере AVR или чего-нибудь аналогичного. Оно хотя бы относительное современное и при этом совсем простое.
Аноны, вкатился немного в nasm, хочеца идти дальше в сторону reverse engineering. Что почитать/посмотреть о c++ reverse engineering? То есть о сопоставлении c++-шного сахара с конструкциями на asm.
>>2080877 >Зачем учиться мёртвому Под мертвое есть куча годного контента: книги, туториалы, справочники, исходники и т.д. Причем некоторые из них признанная классика, типа старой книги Хайда. Под фридос же вряд ли что-то лучше найдется чем унылые доки.
>>2082564 Читай то, что читают когда хотят освоить веб без асма. Тебе придется использовать апи для доступа к сети, и неважно на каком языке ты к нему будешь обращаться
>>2082628 Это какое-то табу? Вся мяготка асма в сети. Просто везде стандартные - как работает память и push ax. А тут обсуждения как написать свою ОС на асме. Серьёзно? Теперь надо бояться того что ты умный или как?
Просто представьте, вот мой код>>2080901 и исходник. Я в асме дно(не смогу написать ОС). У меня задача - сделать печаталку клавиатуры. И как по логике должно работать, оно не работает. Но мне стоило поменять, чтобы функция чтения клавиатуры вызывалась до того как инициализируется окно программы, и вот результат. Высокоуровневые не смогут так сделать, проверил. А вы тут обсуждаете всякие ос, хуету. Никто вам не заплатит за это, заплатят только за то когда ты поменяешь байтик на нужный.
>>2082903 Ты правда не понимаешь? Поясняю. Асм это инструмент для работы с информацией, при помощи асма с информацией можно делать любые манипуляции, вообще любые то есть. Но это конечно же никому не интересно пока это происходит на твоём локальном пк. При всём этом существуют миллионы языков для веба, но они не могут делать любые манипуляции с информацией, как это может делать асм. И вот я вижу что на яве всё расписано для веба, а на асме ничего нет вообще, глушняк. Конечно же юнные вкатывальщики будут вкатываться в яву например, чем в асм. Ну и поэтому у меня вопрос: а не искусственно ли это табу?
>>2082970 Ты на ассемблере писал хоть раз? У тебя в голове о нем какие-то маняпредставления, поясняю: в асм ты можешь делать все угодно только в режиме ядра, в режиме пользователя ОС будет игнорировать команды вроде in, out, и прочие Т. е. у тебя есть два варианта работы: 1. Пишешь все в пространстве пользователя, но тут увы придется использовать апи, а условный win32 одинаков и для асма и для си и для джавы и для питона. Уже на этом уровне весь функционал для твоего хацкерства или как ты это в голове считаешь доступен - можешь дрочить пакеты вплоть до сетевого уровня. На асме никто веб не пишет потому-что это долго, тяжело, много багов и лучше условные кресты какие-то 2. Ты можешь высрать драйвер для работы с канальным/физическим уровнем, драйвер работает в режиме ядра и все команды будут доступны. Но тут созревает вопрос нахуя это нужно, вся задача этих уровней просто передать поток битов и все.
>>2083050 Пишет про то что можно делать любые манипуляции с помощью ассемблера, следовательно пишет не про реверс а про программирование на нем. Но вот ведь незадача - другие языки вполне себе могут менять байты в потоке байт, вот и любые манипуляции
>>2083061 Ну вот я не хочу чтобы >>2080901 это печаталось. Хочу чтобы это вот посылалось сразу в сеть. Чёто нет такого на других языках. Абстракции я понимаю и рассчитываю на то, что и ты тоже их понимаешь.
Например, как мне написать программу так, чтобы я написал сообщение в блокноте, а после запуска проги моё сообщение из блокнота отправилось в этот тред? Не перепечатывалось, а именно чтобы вот отправилось как будто я его написал и нажал кнопку отправить.
Анон просто придумал какие-то фантастические свойства асму и удивляется, что это не так. Тот же спп компиляется в такой же машкод. Всё что ты можешь сделать на асме, можно сделать и на спп.
>>2083402 Ладно, примем по умолчанию что я долбоёб. Как например добавить тэг к тсп пакету, инкапсуляцию там и такие вот всякие штуки. Примеры нужны. Возможно у меня каша в голове, но я не знаю с чего начать её разгребать.
Короче, я сформулировал задачу, мне нужно написать прогу которая просто пульнёт созданный мной пакет на указанный адрес. Думаю надо с этого начать. Я наверно заебал уже, но надеюсь прийти к общему знаменателю.
>>2080764 Зачем на виртуалку, тогда уж на флешку и учиться не по книгам, а как Крис Касперски, по хардкорному - смотреть воздействие каждой инструкции на процессор и память, через DEBUG.COM ;)
>>2079195 (OP) >IDA Freeware 7.0 Уже IDA v7.6 >>2081146 >1 доллар, епта Я бы ему сраный аналог бакса в битке/эфире намайнил, но на пулах обычно вывод от $20-30(( Сори, но кэш не стану переводить.
>>2083774 > >Зачем на виртуалку, тогда уж на флешку и учиться не по книгам, а как Крис Касперски, по хардкорному - смотреть воздействие каждой инструкции на процессор и память, через DEBUG.COM ;) Современные компы не умеют в ДОС.
>>2084469 Насчет Qemu н знаю, но на bochs успешно заводил оригинальную Windows 95 и там прям четенько второй пень себя ведет, можно любые древние тулзы использовать.
>>2079195 (OP) Аноны, поясните за порядок префиксов в инструкциях х86. Я в курсе что процу похуй на порядок, но меня больше интересует как обстоит дело с компиляторами. У них соблюдается порядок по группам или у всех по разному?
>>2084469 Если сравнивать QEMU и bochs, то последний гораздо лучше поддерживает все тонкости, особенно если это касается реального режима. Т.е., условный бутлоадер с переходом в защищенный режим может отлично работать в QEMU, но падать в bochs и на реальной машине.
Все прерывашки из ITV 0x00-0x0F относятся только к бивусу, а всё что выше - к дос и шиндус кернел, правильно? возможно я очень слеп, но не могу нагуглить подтверждение или опровержение
>>2089233 > 0x00-0x0F относятся только к бивусу Исключения процессора обрабатывает каждая уважающая себя ось. Ремапнуть их нельзя. А вот все остальное можно ремапить как угодно.
>>2089273 Вагную, что учебная программа не менялась как раз с конца семидесятых. А вообще начинать с любого хуй-86 это такое себе, студенты ведь потом будут думать, как утята, что так и должно быть. Блядь, брали бы хотя бы 6502, если такие ретрограды ебаные, там хотя бы архитектура вменяемая да и досконально разобраться можно как сам чип устроен http://www.visual6502.org/JSSim/ Сука, как же я ненавижу рашкинское образование: прогрессивное человечество дало им RISC-V, всё под опен сорс, нахуй, - нет, хочу жрать говно. Пиздец.
>>2089710 Бит это абстракция над электрическим сигналом. Чтобы обойтись без всего - покупаешь процессор, изучаешь его цоколёвку, для интеловских есть в документации. Потом или покупаешь или сам делаешь сокет который будет соединятся с выходами процессора. Вот и все, можешь дрочить процессор электрическими сигналами, разумеется нужно знать элеткротехнические спецификации которые используют процессоры, но и они указаны в интеловских документах
>>2089713 > Бит это абстракция над электрическим сигналом. Это уже ненужное усложнение. Минимально возможная программная абстракция это бит. А то что электрон это абстракция над какими-нибудь кварками, с точки зрения софта практического применения не имеет.
>>2089725 > and al, 0x01 > mov bl, al Это байты + ассемблерные инструкции. Бит имеет два значения - ноль и целковый 1. Так вот, вопрос в том, можно ли с процессором работать на уровне битов, или байт (машинный код) это минимум?
>>2089402 а у нас ебланы просто говорят, что мол им не идут современные программы на комп, поэтому дали этуй хуйню, преподша ещё говорила, что мол даже на виндовс 98 пойдёт
Гугли команды сдвига, логические и перехода. Все они работают с битами. В зависимости от ассемблера можно использовать биты и в обычной записи, заменяя префикс 0х на 0b или ставя b в конец константы: >an al, 01b ; добавить второй по порядку бит >mov bl, al
>>2089722 Минимально возможная программная абстракция данных - это минимально адресуемая ячейка памяти в данной архитектуре. Примем за минимально адресуемую ячейку памяти байт. Минимально возможная программная абстракция кода - машинная инструкция, которая храниться как массив байтов некой длины. С памятью можешь работать как с массивом бит изменяя байты трогая при этом отдельные биты. С процессором только через машинные инструкции, большего на программном уровне ты добиться не сможешь. Можно отправить несуществующие инструкции или недоступные инструкции но он их вроде обычно игнорирует как будто там nop'ом все засрано
>>2089402 > прогрессивное человечество дало им RISC-V, Это не прогресс. Из-за того, что в RISC-V целиком и полностью состоит из необязательных фич, и из-за того, что он открытый - получится линукс. Куда ни ткни в линуксе: у одного альса, у другого пульса. Хочешь под это писать - страдают все. У третьего пайпвайр - у одного пердит, у второго микрофон не работает, у третьего вообще звука нет.
>>2083132 Да вабщем та все просто. Для этой задачи подойдет даже питон, что тут думать та? Открываешь файл на чтение, считываешь сообщение в буфер, дальше содержимое буфера отправляешь post запросом в дивы хуивы сосача.
>>2079195 (OP) Антуаны, есть ли среди вас те, кто зарабатывает себе на хлеб с помощью реверса? Если да, то, пожалуйста, поделитесь своей историей и опытом. Как вкатились? Чем обычно приходится заниматься на работе? Как с реверсом обстоит ситуация у нас в СНГ? Есть ли работа на черном рынке? Есть ли перспективы для вката новичкам? Заранее спасибо.
>>2093219 X86-64 = AMD64 ≠ IA64 - это и есть ISA (архитектура набора инструкций дословно, система машинных команд по-русски). У разных моделей процессоров и у разных микроархитектур могут быть разные расширения одной ISA. Например в моделях от AMD (пока) нет векторного расширения AVX-512. У Intel-ских микроархитектур до Хасвелла не было битовых расширений BMI.
>>2107992 Знания в предметной области. Грубо говоря, если собираешься реверсить игру, тебе будет гораздо проще жить, если ты сам что-то писал и можешь заранее представить себе вероятную архитектуру.
Граждане байтоебы, помогите пожалуйста советом. Есть одна мертвая игра - Квейк ЛутбоксЧемпион, в которой я хотел бы вкурить режим работы спектатора. В этом режиме внизу экрана отрисовывается панелька с ником игрока / советами спектатору, а при определенных событиях в игре или нажатом самим спектатором TAB-e она скрывается. Предпологаю, что для самой панели есть некий объект с нужным свойством видимости/отрисовки, но как по быстрому это свойство найти в памяти я не представляю - это же не условные ХПшки или XYZ позиция энеми, которые можно просто менять и насканить чит энжином(( Или тут только курить в статике километровые простыни статических анализаторов и иначе никак?
>>2120832 >В чём твой вопрос? Как сделать так, чтоб эта панелька не отрисовывалась. Как по фасту найти условный метод Visibility условного класса BottomPanel не вкуривая несколько десятков мегабайт машинного кода/данных
Почему в 16-битной программе для dos возможны операции над 32-битными регистрами? При этом с 64-битными регистрами это не работает. Разве префикс 66 не должен работать только в 32-битных программах при w=1 (см. пик 2)?
>>2123953 > Разве префикс 66 не должен работать только в 32-битных программах при w=1 (см. пик 2)? Да, его для этого сделали. Но этот префикс меняет дефолтный для текущего режима operand size на противоположный (без REX 16/32, с REX 16/64). Для инструкций, не работающих со словами (в том числе для w=0), он игнорируется (если он не переиспользован, как часть инструкции, конечно).
> При этом с 64-битными регистрами это не работает. use64 не забыл? Работает. В 64-битном режиме: 48 83 с0 03 - add rax, 3 ; REX 48 66 83 с0 03 - add ax, 3 ; REX, size override 83 c0 03 - add eax,3 ; нихуя 66 83 c0 03 - add ax,3 ; size override Найдти сходства и отличия сам. А в 16/32 битных режимах REX в принципе не существует, поэтому никаких тебе 64-битных регистров.
>>2124018 >use64 не забыл? Работает. В 64-битном режиме: Я к тому, что если у меня use16, почему я вообще могу пользоваться 32-битными регистрами? 64-битными не могу, это понятно, но 32-битные - пожалуйста. Если бы было use32, я бы аналогично мог пользоваться 64-битными регистрами?
>48 83 с0 03 - add rax, 3 ; REX >83 c0 03 - add eax,3 ; нихуя >66 83 c0 03 - add ax,3 ; size override Получается в 64-битном режиме по умолчанию команда ADD работает с 32-битными регистрами, а для уменьшения/увеличения размера операнда используются разные префиксы?
>>2124018 >>2124035 Если я правильно понял, 16-битная программа, содержащая, например, команду 6683C003 = add eax,3 может быть запущена только на 32-битном процессоре, потому что этой фичи с префиксом изменения размера не было в 16-битных процессорах, как и extended-регистров? Хотя казалось бы, 16-битная программка же.
>>2124035 > Если бы было use32, я бы аналогично мог пользоваться 64-битными регистрами? Вот этот вопрос пропустил. Нет. 32-битные фичи - это расширение системы команд 16-битных процев с практически полным сохранением набора инструкций (выкинули две с половиной инструкции, притом недокументированные - гугли loadall). 16-битного кода тогда уже было написано дохуя, а памяти еще мало, поэтому существует 16-битный защищенный режим и прочие извращения. И так как по большей части разница между 16-битным и 32-битным режимами всего в одном бите дескриптора сегмента, то интелу ничего не стоило сделать так, чтобы 66/67 работали в обе стороны. От этого ничего не сломалось.
Для 64-битного расширения набора команд AMD поступила по-другому: взяла и выкинула сразу пачку разных однобайтовых инструкций, в том числе и inc/dec reg (40-47/48-4f соответственно), сделав из них новый префикс (REX). Точнее, так как у REX 16 возможных значений, то это по идее семейство из 16 REX-префиксов, ну да и похуй. И вот тут уже надо было как-то отличать, декодировать ли байты по-старому или это префикс. И поэтому только в 64-битном (long mode) режиме декодер считает, что это REX или нихуя (PUSHA, например, не декодируется), а в остальных (legacy modes) он работает по-старому и декодирует в привычные инструкции.
> Получается в 64-битном режиме по умолчанию команда ADD работает с 32-битными регистрами, Да. А чтобы указать 64-битный регистр вместо 32-битного, используется бит REX.W (вот это самое 8 в 48). Чтобы указать один из новых регистров (всякие там dil, r9d или r11) в разных частях инструкции, используются остальные три доступных бита REX. Но REX доступен только в лонгмоде, поэтому без лонгмода ты никак до 64-битных регистров не доберешься.
Сап, реверсаны. Есть одна дико обфусцированная китайская вариация AES. Основной алгоритм разобрал, S-боксы и прочую хуйню вычленил, короче сам алгоритм вроде отреверсил нормально. А вот key scheduling не выходит. На руках есть только один набор раундовых ключей.
Все очевидные вещи уже перепробовал, с раундовыми константами поиграл, сдвиги и S-боксы поперебирал - нихуя, не выходит каменный цветочек. Надо нырять в математику, но не очень хочется.
>>2127663 Да ладна. Add ax,bx понимаешь, add eax,ebx тоже самое. Джамп, проц, push одинаковые. Делай заготовку для 32битного приложения и вперёд. Функцией CreateFile создаёшь файл, функцией CreateFileMapping отображаешь файл в память, своей прогой делаешь с этими данными всё что угодно и выгружай через новый CreateFile результат. Вперерывах написания кода, загружаешь его в olly, проверяешь как он работает, писать весь код сразу не обязательно, просто поставь брэкпойнт где закончил и проверяй этот написанный участок кода, чтобы делал точно то что ты хочешь.
>>2128211 > Зачем вообще учить ассемблер x86, если по нему в РФ ноль вакансий? Блядь, с какими же довенами я сижу на одной доске. Чтобы понимать, блядь, как там все ниже сишки работает. Чтобы научиться векторизации. Чтобы реверсить. Чтобы написать свою крохотную ОС. Все это нужно для общего фундамента, блядь. Ебаные вкатыши, нихуя не умеют, нихуя не интересно, лишь бы вакансии под их говностек были. Тьфу, блядь.
>>2128231 >Все это нужно для общего фундамента, блядь. Ебаные вкатыши, нихуя не умеют, нихуя не интересно, лишь бы вакансии под их говностек были. Двачую. Зачем вообще идти в программисты с таким подходом к делу? Если нужны тупо бабки пусть идут в продаваны, толку больше будет.
>>2128324 Есть slz decompressor, мне надо написать slz компрессор, чтобы запихивать изменённые буквы и ссылки на эти буквы в архив. В описании указано 2/LZSS+RLE. При slz0 в куске ничего не меняется, тупо добавляется заголовок с размером куска. При slz1 вставляется двухбайтная ссылка на строку, где первые 4 бита +3(если там 0, то размер 3 байта) размер строки, это и есть LZSS я понимаю. slz3 нету. slz2 какая-то белиберда. На пикчах выделил заголовок, ff - оставлять как есть, ef - 1110 1111 то есть пятый байт это двухбайтная ссылка на что-то - 00 f1, в несжатом куске это - 00 00 00 00. При чём есть какие-то странные повторы 8с 00 00 00 00.
format PE GUI entry start include 'win32wx.inc' section '.code' code executable start: invoke GetOpenFileName,GeneralOpenFileName test eax,eax jz mExit invoke CreateFile,\ ; FileNameString,\ ;pointer to name of the file GENERIC_READ+GENERIC_WRITE,\ ;access (read-write) mode 0,\ ;share mode 0,\ ;pointer to security attributes OPEN_EXISTING,\ ;how to create 0,\ ;file attributes 0 ;handle to file with attributes to copy save FileHandle invoke GetFileSize,[FileHandle],0 save FileSize invoke GlobalAlloc,GMEM_ZEROINIT+GMEM_MOVEABLE,[FileSize] save MemoryHandle invoke GlobalLock,[MemoryHandle] save MemoryPointer invoke ReadFile,[FileHandle],[MemoryPointer],[FileSize],FileSize,0
>>2128546 Критика. >invoke ReadFile,[FileHandle],[MemoryPointer],[FileSize],FileSize,0 ReadFile лучше не использовать, это устаревшая жопа, вместо этого юзать CreateFileMapping и MapViewOfFile. Тогда весь файл подгружается в оперативку, там меняешь что нужно. Просто я именно это советовал выше.
>>2128561 Не буду врать, когда я это писал году в 2009 где-то, уже был маппинг и я осознанно от него отказался, потому что слишком сложно для школоло. Сейчас это уже история и переделывать точно не стану Там главное fasm установить и win32api.chm и includes скачать (некоторых констант из gdi32.dll нет в стандартном fasm), остальное по ходу дела гуглится.
>>2128563 Кстати, в стандартной поставке fasm есть отличный и короткий документ с полным описанием как вкатиться. Очень рекомендую для начала. Если нужно на русском, загугли, вроде переводы кто-то делал.
>>2128561 > ReadFile лучше не использовать, это устаревшая жопа, вместо этого юзать CreateFileMapping и MapViewOfFile ты токой MapViewOfFile, а юзер токой дерг флешку, и ты токой ой, программа допустила недопустимое, выполнила невыполнимое. хотите рассказать об этом своему психиатрумайкрософту? А вот ReadFile тебе просто ошибку вернет.
Нет, у отображений ограниченная область применения. Чаще всего Read/WriteFile подходят лучше. Особенно асинхронные.
>>2129329 Я пошёл трудным путём) Изучаю как игра распаковывает этот кусок, распакованные данные совпадают. Но чёто пипец сложно, а там всего 15 строк..
Разобрался, сишники проверяйте). Если второй байт F1-FF, как на скрине 00F1, то это RLE, надо взять первый байт(00) 1+3 раза. Если 0820 например на скрине, то это LZSS, 2008 - 2+3 байта надо взять по смещению -080, это 3с00000000.
>>2079195 (OP) На собесе был вопрос "Что происходит на низком уровне когда вызывается винапи функция". Я начал отвечать про конвенцию вызово, стек, регистры, ленивую линковку, но всё общее для винды и линукса. Даже примеры в для линукса приводил типа гот плт таблицы. А меня спрашивали конкретно про винду. Типа стэк везде стэк. Плт таблица в винде по-другому назвается и не так работает. В итоге интервьюер заебался меня поправлять и сказал хватит. А как всё-таки надо было правильно ответить? Гугл говорит, что в винде ничего особеного для вызова винапи функций нет и они вызываются почти так же как везде
>>2129682 Ну хуй их знает, что они хотели от тебя. Если конкретно про вопрос о вызове Windows API, то: call и конвенции, нахуй (не) нужны thunks (jmp IAT), API sets и форварды, wow64, трансляция A/W, вызов FuncEx из Func, нейтив апи-сисколл-KiFastSystemCallRet. Это вызов. Ну и линковка, если тебе вперлось про нее рассказать: директории импорта/экспорта (ординалы/форварды/bounds imports/delayed imports), dll search path (altered, KnownDLLs), activation contexts и манифесты, чего-нибудь про лоадер и PEB, наверное.
>>2129682 Да ебланы какие-то, не переживай, скоро развалится их говноконтора рога и копыта. Меня тоже однажды спрашивали какими способами можно отформатировать винт. Короче, судьба тебя отвела от ненужных проблем. немного припекло
>>2131411 Не могу понять, ты всерьёз объясняешь или нет, но ладно. Это всё понятно. Другое дело, что гугл даёт практически нулевые результаты что по "TNT Embedded Kernel", что по "ETS Kernel", да и про утилиту DOSBOOT не знает. Это какая-то древняя RTOS. А хотелось бы узнать больше, прежде чем лезть дампить память железки (с процессором i386, ёпта), на которой это всё работает.
>>2131451 Мы тут в байтах ковыряемся, ты можешь это понять? А ты какие -то ошибки вбрасываешь. Спасение утопающих - дело рук самих утопающих! Чел годно ответил, ещё и картинку хорошую прицепил.
>>2131539 Картинка никак к досу и риалмоду не относится. В риалмоде нет защиты, а значит нет и колец. Алсо, картинка показывает влажные фантазии интела в восьмидесятых, в реальности же кольца 1 и 2 практически никем не использовались.
Тем не менее никто из-под доса не запрещал самопальный маняпротектед использовать, все экстендеры памяти это делали и было куча протектедных движков вроде dos4gw под которыми всякие думы и квейки крутились. Очень много дос софта юзало протектед.
>>2131381 Нет вакансий. Пиздец, ещё вчера читал отзывы, там пизда удивляется - почему такую тяжёлую работу работают только женщины. Ну вот, я пришёл, но там 100% "по блату" взяли какую-то пизду.
>>2132675 Есть такая хуйня - непредсказуемость будущего. Я с асмом на вы ещё со спектрумовских времён. Так вот, в нулевых асм был посмешищем, c++ ну вроде ок. Сейчас крен сдвинулся и вроде С уже норм, а asm для реверса можно и нужно юзать. Считаю что крен этот сдвигается потому-что всё что выше это фантики, общество потихоньку начинает понимать. А суть то в том, что только asm работает с инфой непосредственно, без надстроек. А инфа уже сегодня имеет ценность, а что будет завтра?
>>2129772 Этот вопрос задавал директор того самого GReAT
>>2129740 Спасибо. Во второй части большинство из этого знаю, но не додумался упомянуть. А в первой что между таблицей джампов и неэтив апи я не знаю. Выходит вопрос хороший и я его зафейлил
>>2133627 Ну, тут хотя бы опкоды расписаны. ISA эльбрусов потихоньку реверсят энтузиасты, мцст то ли не хочет, то ли боится нормальные доки публиковать
Аноны, помогите разобраться. Не могу понять, где я ошибся. Даны точки на плоскости, нужно найти все пары точек с максимальным расстоянием между ними. Ответ получается неправильный. Это не лаба, решаю для себя, пожалуйста не бейте
>>2134455 Надежнее было бы посчитать гипотенузу через fsqrt. Только по итогу получится, что работает весь алгоритм с перебором каждой точки к каждой другой точке даже медленнее, чем n^2
>>2134441 > Можешь объяснить, как может быть несколько пар с максимальным расстоянием. Не понимаю. Вот например даны точки: 0. (0, 0) 1. (1, 7) 2. (-1, 7)
Расстояние между 0 и 1 максимальное и равно расстоянию между 0 и 2. В ответе две пары: 0-1 и 0-2.
>>2134583 Ну типа да, расстояние считается по формуле sqrt((x2 - x1)2 + (y2 - y1)2). Но я, естественно, сравнивал квадраты расстояний, чтобы не считать корень, и остаться в целых числах. На глаз код, вроде, правильный, но что-то не так, не могу понять.
>>2134545 А, забыл легенду. Три точки, три операции (вызова функции для расчёта длины на самом деле) 4 точки - шесть операций и т.д. В целом, число вызовов совпадаёт с числом рёбер
>>2135112 Это плохая конструкция. Цена одна команда, а код нечитабелен - уменьшение ecx, от какого значения? Начинаешь искать этот мув, а точно это тот мув который нужен? Хорошо бы ещё убедиться что нет других mov ecx. По какой-то причине не сработал джамп, тогда в ecx ffffebcd. Из-за этого значения дальше весь код по пизде идёт и показывает хуй знает что. А так не сработал.. и у тебя в есх вместо 10 оказалось 500, и ты видишь что весь остальной код работает правильно, просто джамп не сработал.
>>2135140 >Цена одна команда, а код нечитабелен Одна команда из четырёх. Поэтому код сейчас и генерирует компилятор, чтобы читабельность не была фактором.
>>2135166 Это же не равно 25% кода. У тебя один, два цикла будет, зато сам не будешь теряться в своём коде. Ну если много циклов, ну оптимизируй потом под dec ecx. Зато конструкция с inc позволит тебе творчески подходить к написанию кода, в этот цикл будешь вставлять переход на другой итд. А так, как будто сам себе рамки выставляешь этим mov ecx. Но рамки эти на самом деле написаны в учебнике.
Чел, ты просил не усложнять. Вот я тебе и упростил. Твои проблемы с чтением программ и поиском мувов, твои проблемы с отладкой и неработающими переходами - твои проблемы.
У меня все заебись и если программе не нужны значения от нуля, я пишу именно через декремент. Так проще и понятнее, что хотел сказать автор программы, а именно - это просто фиксированный цикл ради цикла, арифметики с индексом скорее всего не будет, косвенной адресации к массивам не будет почти наверняка, просто прогон кода N раз.
А у тебя нужно весь цикл прочитать чтобы узнать, зачем тебе нужен именно такой набор индексов. Понятно, что цикл придется читать в любом случае, чтобы понять его работу, но в твоём случае это придется сделать на один раз больше.
Не знаю кому ты там пишешь хороший код, я пишу для себя.
>>2135419 >>2135421 Да оно теоретически то все будет работать, просто у самого было такое, получалось не очень. Как-нибудь до джампа более точно описать условие, чтобы только два варианта было - да нет. Например, если получается отрицательные числа и положительные, то просто прибавить что-нибудь чтобы всегда получались положительные и проверять одно условие в положительных числах.
>>2134255 Короче, я понял, где ошибка. Я пытаюсь посчитать (x0 - x1)^2. x0 и x1 это signed word в диапазоне от -2^15 до 2^15-1. Вычитаю одно из другого, не проверяя, какое из них больше. По идее, должно получиться значение от -(2^16-1) до 2^16-1, но так как результат вычитания шестнадцатиричный, получается черт знает что. Значит мне нужно проследить, чтобы всегда меньшее вычиталось из большего. Тогда я получу значение от 0 до 2^16-1, и его уже необходимо воспринимать как unsigned. Дико тупая ошибка, конечно. Попробую исправить.
Так, такой вопрос. Вот я реверснул файл на си, все как в гайдах, но вот я ревершу файл на питоне, и там нету этого самого кода на асме, что не так с петухоном, стоит его реверсить, или нет, или там прослойка байт кода все парашит?
>>2139027 Ну, во-первых, import dis, во-вторых, есть и внешние дизасмы. А для случаев, когда оно выполняется отдельным питоном, в котором опкоды поменяли местами, всегда можно написать свой.
>>2139039 Это неправильная интерпретация байткода питона в виде x86-64 кода. Ты точно так же можешь какой-нибудь жипег ему подсунуть, и он тоже это дизассемблировать будет, только кодом оно от этого не станет.
Пиздец, что вы развели. Питон компилируется в байткод, потом этот байткод можно развернуть обратно в исходник, очевидно же. Патчить тоже можно, но нахуя?
>>2139037 Байткон питона нельзя дизассемблировать в привычном смысле этого слова. Максимум, что можно сделать, это получить на выходе расшифровку байткода, что собственно и делает dis (см. пикрил).
>>2139052 > Он хочет реверсить, про ассемблерный код он пизданул в этом контексте. Он прямым текстом с самого начала написал, что хочет код на асме -->>2138943 > но вот я ревершу файл на питоне, и там нету этого самого кода на асме, что не так с петухоном
>>2139137 >в привычном смысле этого слова Дизассемблировать, то есть преобразовать машинный код в ассемблерный код, что не понятно? Смотри на контекст обсуждения.
>>2139154 Для виртуальной машины питона машинный код - байткод. Мы его преобразовываем в читаемое представление. Это называется дизассемблированием. Можешь плугин для радара или иды написать, чтобы то же самое смотреть там. У них уже есть, например, плагины для джавы, и у джавы тоже виртуальная машина, поэтому дизассемблер показывает байткод JVM. Если у тебя собственный мир с собственной терминологией, нужно предупреждать сразу.
>>2139159 Я это всё понимаю. Ещё раз, смотри на контекст обсуждения. Речь шла именно про язык ассемблера (см. >>2139053). Что по-твоему значит "код на асме"?
>>2139167 Значит, что он ожидал >>2138943 получить нативный машинный код, но дизассемблер сопротивлялся как мог, а вы, вместо того, чтобы написать ему нечто вроде >>2139159 устроили тут непонятно что. И он таки нихуя не понял, раз продолжает натравливать >>2139039 cutter на .py-файлы.
>>2138943 питон это интерпритируемый язык, он не компилируеться в исполняемый файл. если хочешь "реверсить" прогу на нем, просто открой в текстовом редакторе исходный файл .py
>>2139931 Интерфейс для рептилоидов, кривые лоадеры, кривой отладчик, нет поддержки проектов в привычном смысле слова, зато есть эмодзи-хексдамп, снежинки и ванильные цитатки при старте. Но если ничего другого нет, пользоваться можно.
>>2140231 Я там сжульничал немного, поставил брейкпоинт, скриптами в иде пропатчил память с буквами. Чтобы всё это закатать на диск надо написать архиватор, а это фак,фак,фак.... Или найти такой же архиватор, или я долбаёб и есть способ проще.
>>2140239 Ты имеешь ввиду не пригоден для промышленных масштабов в лабораториях касперского? Но там комунити, можно писать на питоне какие-то дополнения, и в целом норм доки.
Такой вопрос по ре. Только без снобизма и отсылки к тоннам книг. При реверсе файлов на что следует обращать внимание, на аномалии, или что-то еще. Или все зависит от цели. Хочу попрактиковаться на крэксми. Скачал файл. В подобных примерах, надо типо найти пароль или нечто подобное. Есть алгоритмы или нечто подобное чтобы искать. Хз как сформулировать, но пусть пока будет так.
>>2143624 Я хотел бы понять суп ре без умствований. Вот есть файл, с чего начать, ну пусть будет крексми. В манах того же радара просто команды. Но я хотел бы понять логику, с чего начать, некий алг что ли. Можно же смотреть в книгу и видеть фигу. Надо знать что искать к примеру.
>>2143893 Создание программ на ассемблере для доса отличается только тем, что доступен только реальный режим процессора, и плюс дос предоставляет некоторые функции, и всё. Ты по-прежнему работаешь с регистрами непосредственно, и твоя программа по-прежнему состоит из ассемблерных инструкций. Я еще понимаю, если бы речь шла о формате PE, но этого я не понимаю.
>>2143896 Нет, я хотел вкатиться в ассемблер, а мне сказали, что современный ассемблер теперь игрушечный и в каком-то эмуляторе запускается. Дико с этого проиграл и решил вкатиться во что-то другое.
>>2143936 То, что это сложнее, еще не значит, что оно более низкоуровневое. Архитектуру можно было бы назвать более низкоуровневой, если бы x86 инструкции было возможно разложить на более элементарные команды для данной архитектуры.
>>2143781 Можешь начать с тестирования, там макачьих гайдов полно. Реверсинг, пентест и тестирование это одно и то же, просто чуть под другим углом. Но всё учит как бы ебануть что плохо прикручено.
>>2143956 >если бы x86 инструкции было возможно разложить на более элементарные команды Разве за тебя это не делает микрокод? Ну и вообще, по такой логике, мипсы окажутся самой лёгкой архитектурой просто потому что у них команд меньше и приходится всё расписывать вручную, что в CISC'ах уже давно делается одной инструкцией
>>2143966 Строго говоря, нельзя, сравнивая две разные архитектуры, сказать, какая из них более низкоуровневая. Но если две архитектуры взаимозаменимы, то можно условно сказать, что более высокоуровневая та из них, инструкции которой во второй архитектуре реализуются последовательностью команд. Напимер, какая-нибудь архитектура, типа x86, но в ней, например нет инструкций, типа push, pop и т.п.
А где можно брать всяких червей, бомбы, крекми и тд для учебы? Например, хочу посмотреть как выглядит переполнение буфера с точки зрения радара и понять логику. С крекми и бомбами вроде ясно, но есть очень сложные примеры, хочется по нарастающей. И еще такой вопрос. Что нужно знать, уметь, чтобы стать классным реверсером и все текли.
Им же, всяким англичанам, французам, испанцам. Им же проще всё это делать. Тупо меняешь глифы в тексте. А тут под глифы нужна память, и чтобы имя перса было в оригинале а сам текст на русском. У сука...
Короче триллер. На первом пике разжатый кусок, на втором сжатый. В кружочке 0604, к 04 надо прибавлять 3, потому что меньше трёх байт нет смысла сжимать, 06 это минус смещение от текущей позиции каретки. Получается, надо взять 7 байт по смещению -6. КАК? Откуда должен взяться седьмой байт, он потерян при сжатии. Но разжимается. Просто я когда писал, то сделал джамп если коретка доходит до текущей позиции, потом сравниваю полученный результат с исходным и охуеваю.
>>2147928 >Надо просто разместить в правильном месте А как? Вот я ассемблировал свой код, получил code.bin на выходе. Что с ним делать? Я пробовал genisoimage -o code.iso code.bin. Загрузил этот образ в virtual box: он говорит no bootable medium found. В чём я неправ?
>>2147973 Открой в hex-редакторе образ системы, найди там mbr. Почитай где он должен быть расположен(в образе наверно будут доп.заголовки всякие). Скопируй в свой образ, измени стартовый адрес кода на свой код.
Ты осознаешь что это пук в космос? Тебе надо как минимум чтобы в коде был минимальный драйвер видеокарты, чтобы ты смог увидеть результат своего кода. Ты запустишь свой код, проц его выполнит и давай до свидания, он тебе ничего не должен.
>>2147989 В свою молодость я загружал bmp файл из флешки прямо в видеопамять. Vesa режимы рулят. К слову загрузку секторов кода я так и не осилил, так что код там совсем маленький.
>>2147993 >>2148814 Думаю тут 2 варианта ошибки: код исполняется, но результат не отображается(ошибка в обращении к видеопамяти). Код не исполняется, ошибка с загрузкой кода.
>>2149000 Поэтому нужен код и скриншот первого сектора. Остальное не поможет.
Скину то что нашел у себя в закромах. Давно уже не помню что именно делают эти int13 вызовы. А то у нас совсем тред без кода почему-то. Так неинтересно.
mov di,cop mov ax,[ds:di] mov [es:si],ax inc si inc di inc si inc di mov ax,[ds:di] mov [es:si],ax inc si inc di inc si inc di mov ax,[ds:di] mov [es:si],ax jmp $
mov di,cop mov ax,[ds:di] mov [es:si],ax inc si inc di inc si inc di mov ax,[ds:di] mov [es:si],ax inc si inc di inc si inc di mov ax,[ds:di] mov [es:si],ax jmp $
Сап, /pr/, просьба не пиздить за нейминг, я скрипткидди. Тулза - ida, очевидно. Есть бинарь (.dll), ижектится в другой, вешает разные хуки. Какие-то я нашел, но подозреваю что не все в .text есть портянка кода, я нашел место где уже .dll получила данные из основного бинаря, немного их обработала, после места еще один обработчик, и вызов хука чтобы положить обратно измененные. Т.е.:
- какой-то хук - какой-то код обрабатывающий полученное - место которое я обнаружил, если поставить бряку - она триггерится - еще обработчик - найденный мной хук чтобы собственно вернуть взад
Как функцию ида то место не распознает, подозреваю что там jmp по рантайм адресу. (а может и статике, я хуй знает как понять). Собственно вопрос - как найти откуда вызов, блядь? Помогите нубасу, молю.
Палю годноту реверсачерам. Вчера первый день на почте. Суть: приходишь на почту(она рядом с домом) к 11. Ждёшь когда приедет машина с почтой. Потом берёшь почту на свой участок, сортируешь и составляешь маршрут, так чтобы было удобно разносить и ничего не перепутать. Составляешь маршрут так, чтобы последним был самый дальний дом. После того как всё разнёс берёшь бутылочку пива и пиздуешь на остановку. В 5 уже дома. 20к зарплата. Не ебу зачем дауны яндекс-еду разносят.
Знаете ли вы ресурсы на которых можно найти описание деталей процесса кряка современного софта (текстом/видео/как угодно)? Речь не про поправить условный переход в какой-нибудь древней шароваре, а именно что разбор потрохов алгоритма активации шиндоуз/адобов и т.п. монструозных вещей
У меня такой нескромный вопрос. Как я понимаю ре - это когда ты колупаешься в по без сырцов, так? То есть имея сырцы можно понять, логику, архитектуру по и прочее. А вот только по исполняемым файлам можно восстановить все что задумывал автор? Ну вот в руки конкурентов попали исполняемые фалы, без сорцов. Возможно ли понять и восстановить и монетизировать то что попало в руки?
>>2152902 Я так полагаю что тема с ре не паблик, а есть кейсы, мб у местных. Тема то такая. Ладно я выучу что-то, а где найти работу? И есть roadmapы по ре? По тип питона или явы. Ну типа чеклистов, роудмэпов, читшитов или мастридов?
>>2146925 > Получается, надо взять 7 байт по смещению -6. КАК? Звучит как типичный LZ77 с окном. Копируешь по одному, из -6 скопировал байт в конец, вот уже и седьмой байт. но ты уже давно разобрался
>>2153719 Не разбирался, это получается на место седьмого байта вставляешь первый в окне, на место восьмого второй и т.д. Как бы сжимается и разжимается без этой тонкости. Но если понадобится, добавлю в код, спасибо.
Хочу изучить сам ассамблер, есть ли свежая литература? Самая свежая в шапке датируется 2003 годом, насколько я понимаю, процессор процессору рознь по архитектурной составляющей. В чем же смысл тогда учится по книге в которой пентиум, который я никогда даже не видел в живую, называют последним словом в технике? Реквестирую что-нибудь современное, если есть. Желательно, конечно, еще и на русском.
>>2154824 > процессор процессору рознь по архитектурной составляющей У них у всех архитектура x86. Вряд ли тебе придется писать под ARM. А если все-таки захочется, тогда конечно придется с ними отдельно разбираться. Кроме того, фичи типа MMX, SSE и т.п. тоже везде работают одинаково, хоть и не все процессоры их поддерживают. Просто со временем складываются стандарты, потому что так удобнее.
Пойми, программирование на ассемблере - методология старая и глубоко продуманная. Так что есть смысл изучать классику: и Нортона, и Абеля, и Абраша и т.д. Что касается X86 - у него ведь (некоторая) пресловутая обратная совместимость. Так что тот же Юров актуален где-нибудь на 70% (и как первый учебник весьма годен).
Можно считать, что знания программирования на ассемблере складываются из нескольких источников: • Описание/спецификация системы машинных команд (ISA); • Руководство для ассемблера / диалект языка ассемблера; • ABI программного окружения; • API рантайма/библиотек (если есть).
Так что, в принципе, можно и без учебника вникать.
Привет. Выполняю первую лабу по ассемблеру и вроде делаю всё пошагово, изменил файл .ASM перекомпилирую, а значение регистров не меняется после изменения переменных. Я правильно понимаю что есть вот эти варА,Б,С их надо менять тогда регистры и флаги поменяются? Тогда почему у меня не меняется ничего.
>>2156394 А разве имена переменных не нужно поместить в квадратные скобки, чтобы показать, что это адрес, а не непосредственный операнд? Хз как в тасме, но обычно так.
>>2156474 >>2156394 > изменил файл .ASM перекомпилирую, а значение регистров не меняется после изменения переменных. Да, наверняка так и есть. Хотя странно тогда, что тасм не ругается на mov al, imm16.
>>2156522 Видимо да, и как видишь синтаксис разный. Наверное когда указываешь имя переменной, скобки не нужны, а когда адрес этой же самой переменной числом - нужны.
>>2156530 > Наверное когда указываешь имя переменной, скобки не нужны, а когда адрес этой же самой переменной числом - нужны. Вряд ли. А иначе как например загрузить в регистр сам адрес, на который указывает метка?
>>2156945 Вообще lea считает конечный адрес из любого вида адресации. Например, команда > lea ax,[ bx + si + 12] делает то же, что и > mov ax,bx > add ax,si > add ax,12 В 32-битном режиме можно даже так: > lea eax,[ebx + 4*ebx] То есть, с помощью lea можно, например, эффективно выполнять некоторые арифметические операции.
>>2156945 Я как-то видел в интернете объяснение в духе > нуу lea это то же самое что и mov но оно работает по-другому Я подумал, ну охуенно, решил, что это очень сложно, и забил хуй. Разобрался, по-сути, только недавно.
Перевожу потихоньку, рутинная работа, вопросов пока нет. Хочу весь пролог сделать для начала. Оцените качество глифов и самого перевода: I don't want to get scolded by mother again
На хабре любопытная что крайне удивительно статья о том, как чувак переписал 2048 на асме, потому что прихуел от потребления памяти js|электроно реализацией, а в статье ссылка на еще более годный фак для вкатывающихся в современную байтоеблю: https://sonictk.github.io/asm_tutorial/ Может закинуть в шапку, если доживете до переката?
>>2165375 Пироговские книги - это тупо пересказ документации для тех, кто не умеет читать по-английски. Писались они тогда, когда издательства тупо не могли найти нормальных авторов. Это шлак. Можно взять Ирвина или документацию от Интела.
Как вывести число на экран в TASM/MASM? Почему нихуя нет в интернете по ассемблеру, неужели за 60 лет ни один человек не додумался сделать нормальную шпаргалку с примерами базовых действий, арифметических операций, ввода с клавиатуры, вывода в консоль и тд.
>>2170779 >нормальную шпаргалку с примерами базовых действий, арифметических операций, ввода с клавиатуры, вывода в консоль и тд. В книжке Зубкова - "Assembler для DOS, Windows и UNIX" это всё есть.
>>2154860 Кстати, для понимания быстродействия того, что ты напрограммировал, ещё нужно знать (в большей или меньшей степени) архитектуру целевого процессора. Не знаю много, ли есть смысла заниматься программированием на АСМе, не имея в виду быстродействие. Кроме того, что касается специфики программирования на АСМе, здесь гораздо более критично понимание/умение алгоритмов и теории кодирования, чем для каких-нибудь ЯВУ.
>>2174624 >Не знаю много, ли есть смысла заниматься программированием на АСМе, не имея в виду быстродействие. Программирование на асме ничем не обязывает. Порриджи сюда не лезут, кабаны не лезут, деньги сюда не текут. Это джунгли, здесь выживает сильнейший и если он выжил ему заебись именно здесь. Смотреть на ассемблер с точки зрения "вкачусь и буду грести бабло" не имеет смысла, конечно. Но это и не программирование, это бизнес.
>>2176924 Контекст то и непонятен. Там дальше, ее кун ей скажет что это были ее покупатели. И вот непонятно, толи она так сказала изза того что пролила воду, толи изза того что заподозрила чтото.
>>2079195 (OP) Я уже не могу, не пойму в чем проблема-то. Всё расписал в комментариях. Как тут может быть деление на 0, если для моего типа данных 2байтовых я беру ДХ, который после умножения равен 4 и делю его на 16битный делитель, я так понимаю он число выше берёт то есть ВХ = 4?
Я тут сохраню код никто не против? дома чтобы попробовать тоже самое проделать. ; СПО Л/р 1 (COM) ; Арифметические операции: вычисление D=(A-B)C ; Порядок компиляции программы: ; 1. Ассемблирование: TASM.EXE lab1com.asm ; - в результате создается объектный модуль lab1com.obj ; 2. Компоновка: TLINK.EXE /t lab1com.obj ; - в результате создается COM-файл, готовый к исполнению ;F = A - B C / D + E CODESG SEGMENT PARA ; определение сегмента кода ORG 100H ; стандартное начало COM-програмы .386 ; ASSUME CS:CODESG, DS:CODESG, ES:CODESG MAIN: ; исполнимая часть программы ; вычисление F = A - B * C / D + E SUB AX,AX ; обнулить регистр АХ SUB BX,BX;
MOV AX,varB ; записать в AX значение varB 2 MOV BX,varC ; записать в BX значение varC 2 IMUL BX ; АХ умножается на ВХ, 4 сохраняется в DX, а в АХ 0 SUB DX,DX; SUB AX,AX
SUB BX, BX; MOV BX, varD ; присвоим значение BХ = 4 IDIV BX; ; Поделим ДХ на BХ - 4:4 = 1, 1 запишется в AX SUB DX,DX;
; стандартное окончание программы MOV AX,4C00h INT 21h ;------------------------------------------------------------ ; определение данных внутри сегмента кода varA DW 6 ; cлово А (знаковый) varB DW 2 ; слово В (знаковый) varC DW 2 ; слово С (знаковый) varD DW 4 ; слово-результат D (знаковое) varE DW 2 ;
CODESG ENDS ; конец сегмента кода END MAIN ; указывает, что исполнимая часть программы ; начинается с метки MAIN
>>2177961 У тебя же буквально на сайте написано, что в операции деления учавствуют 2 регистра. Старшая часть лежит в dx, младшая в ах. Ты не можешь поделить на dx, он учавствует в делении. Рекомендую делитель хранить в памяти в качестве переменной. Также для вычислений тебе нужно знать про команды cbw, cwde и cdq. Почитай учебник Юрова, там про всё это написано.
>>2180661 >Количество инфы по теме уже давно перегнало ёмкость памяти человека, и дальше будет только хуже. Ну да... Расскажи мне как работает CD-ROM Playstation 1
Точно так же как и обычный (моторчик крутит диск, каретку грубо позиционирует шаговик, точно лазер позиционирует отклоняющая магнитная хуитка). Только может считывать антипиратскую инфу из зоны куда головка обычного привода дотянуться не может, а резак, соответсвенно - не может записать и которую можно изготовить только на заводе отсосони. Черный пластик - тупло для понта отсосони, так как у CD лазер и так инфракрасный.
Порты управления по адресам с 1F801801h по 1F801803h
>>2181288 >Только может считывать антипиратскую инфу из зоны куда головка обычного привода дотянуться не может, а резак, соответсвенно - не может записать и которую можно изготовить только на заводе отсосони. Я не знаю точно, но похоже на домыслы.
Ну так его и в CD контроллере PS1 нет. Все что умеет контроллер - это реквесты "сунь головку сюда" "качни ка мне этот сектор в свой манябуфер" и "сыграй ка мне этот музон" (да, CD Audio там отдельная аппаратная хуитка).
DMA и его канал 3 находится в CPU и к контроллеру CD о котором шел спич не относится.
Что то мне подсказывает, что петушочек-то ты залетный и выебнувшись про контроллер CD PS1 даже и не предполагал насколько тут тебя обоссут.
> Я не знаю точно, но похоже на домыслы.
Я уже понял что ты петушок.
> Почему на диске 1 файл, а CD-Rom подгружает и там и здесь?
Потому же почему почему в DOOM 1 файл а монстров и текстур в игре дохуя да еще и музон играет. И диск тоже в разных местах скрипит.
Ну и да, на диске PS1 должно быть как минимум ДЖВА файла и если ты мне сейчас не расскажешь прочему и какие, то я начну тебя обоссывать уже в полную струю, а там может твой пердак и до популярной нынче швабры дойдет.
>>2181288 >Порты управления по адресам с 1F801801h по 1F801803h Короче только это по существу, и чё делать? Даже DMA нет. Как, что, куда, почему? Где это написанно, покажи?
>>2180661 >Количество инфы по теме уже давно перегнало ёмкость памяти человека, и дальше будет только хуже. Ну что, признаём обосратушки? Ибо кроме вычитанных 4 портов контроллера нихуя не смог найти(даже DMA).
Значит так, обоссыш, во первых ты сейчас подставляешь рот и принимаешь в рот мочу.
Во-вторых ты сейчас ее проглатываешь и подставляешь рот во второй раз.
> Даже DMA нет.
А теперь я достопочтенным джентельменам обьясню, зачем этот >>2181348>>2181351>>2181371>>2181329>>2181217 петушок сейчас будет глотать мочу в третий раз. Дело в том, что петушок где-то выучил баззворд DMA и краем уха где-то там слышал про то как DMA работает на пекарне, а точнее на устройствах IDE и пришедшим к ним на смену устройствам SATA. В них действительно контроллер имеет всторенный DMA движок который позволяет по инициативе самого IDE устройства писать в оперативу хост машины. Вооружившись и экстраполировав это знание на всю технику петушок решил прийти на макач и, почувствовав себя невьебенно умным, начал высирать псто за пстом.
Только вот петушок не учел, что стандартом IDE из его манямирка мир не ограничивается и устройства могут реально быть устроенными по-иному. Как пример - упомянутый петушком контроллер CD из состава сосноли Sony PlayStation.
Данный контроллер не имеет на борту DMA функционала, характерного для IDE, поскольку архитектурно консоль устроена так что возмождности DMA впендюрены в многоканальный контроллер на борту CPU, с которым работает программист задавая ему команды по обмену данными между различными видами памяти и портами устройств (в противовес имеющемуся на ПК подходу, где DMA вызывается со стороны периферийных устройств).
А теперь, дабы петушок был окончательно обоссан и этот в этом треде все поняли кто этот обоссатый канючийся поридж, а так же для расширения кругозора прикладываю пик 2 и пик 3.
А теперь, петушок будет обязан найти на обоих пиках слово DMA иначе получит швабру в сракотан.
Но все же поговорим про контроллер DMA , который, как я упомянул ранее, является компонентом центрального процессора. Этот контроллер являет собой главную, наверное силу пикселеварни (даже пиксельный GPU стоит поставить на второе место, поскольку, в отличии от CD, работать с GPU без помощи DMA практически не возможно) и по-существу именно благодаря нему разработчики раз за разом находили потанцевал - еще бы, ведь это центральный узел системы, без преувеличения, отвечающий за разруливание данных между всеми кишками пикселеварни от сосни.
>>2181518 Ты мне так и не обьяснил как работает связка контроллер - DMA. IDE приплел зачем то. Ну да ваш гавпротык(хованский) сидит же, все мысли теперь о швабрах.
>>2181558 > обьяснил как работает связка контроллер - DMA
Точно так же как и без связки - пишешь в регистры контроллеру чо ему делать, контроллер высирает то что прочитал в свою маняпамять (у него собственный буфер чтения есть куда он и высирает). С DMA этот процесс попросту автоматизируется и позволяет частично разгрузить такты CPU на копировании этого буфера в основную оперативу..
>С DMA этот процесс попросту автоматизируется и позволяет частично разгрузить такты CPU на копировании этого буфера в основную оперативу.. Опять вода на самом интересном месте. Вот я тоже могу сказать - чтобы был дождь, надо просто просить Прометея сильней. А как это сделать? Где это написано?
>>2181599 Ты мне ссылки не кидай. DMA PSX я и сам могу вставить в гугл. Ты мне объясняй как это работает,.и описание этого простого механизма. А то по твоим словам ваще ниче делать не надо и все в память само копируется. Вот только куда?
Мне же надо указать адрес куда будет копироваться буфер контроллера через dma. Как это сделать, если все автоматически? У меня же программа, а не то что там у некоторых - скопировал один сектор хоть куда и радость.
>>2181642 Мне нужен полный механизм, от считывания сектора, до попадания данных в память по указанному адресу. Картинки ты искать умеешь, я понял, найди теперь нужную инфу.
Так и быть, напоследок подскажу: последовательность такая
Sync -> Setloc -> SeekL -> ReadN -> А вот тут ты начинаешь заводить свой DMA.
Каждая из этих команд бросает прерывание - какое описано в документации. Команды пишутся в регистр 1F801801h, параметры для них в регистр 1F801802h. В регистре 1F801803h ты настраиваешь, хочешь или нет получить в пердак прерывание после выполнения команды (бит 5) и должен установить 7 бит в 1 если хочешь получить данные с диска вместо хуя защеку.
Да, обрати внимание, есть еще регистр 1F801800h - в нем ты можешь смотреть флаги выполнения операций контроллером, но первые два бита отвечают за переключения банок у некоторых регистров у которых они есть.
> Че за фиксация на швабрах? Это в связи с чем?
Я понятия не имею, за чем ты своей дупой швабры ищешь. >>2181647
>>2181749 Тут получается такая хрень: 1 Как с авто, это коробка передач, это педаль газа, тормоза сцепление. А как на этом ехать инструкции нет. 2 Функции CD-ROM на С из библиотеки psyq. И для меня между 1 и 2 большая пропасть. Потому что я хочу наебать psyq, но чтобы наебать я должен знать как он работает на низком уровне, педали есть и что, там ньюансы есть - скорость считывания, свои трики какие-то. Мне щас это не оч. нужно, но было бы неплохо узнать. Я это не нашёл, на пикрелейтед максимум что я нашёл. Но на практике всё по другому.
Кто-нибудь может объяснить суть double free уязвимости? Я понимаю use after free, но про двойное освобождение даже на эльфийском инфы мало. Непонятно как ломается список чанков что появляется write what where условие?
>>2183867 При определенных ситуациях (ОЧЕНЬ зависит от аллокатора памяти) при двойном освобождении следующая аллокация может вернуть указатель, который уже указывает на какой-то валидный чанк. Результат - у тебя есть 2 указателя на один чанк. Имея возможность читать по вернувшемуся указателю - получаешь примитив чтения, имея возможность писать - портишь данные по указателю со всеми вытекающими. В общем и в целом, double free очень сложно эксплуатировать но возможно, особенно в современных аллокаторах памяти. В конечном итоге всё очень зависит от конкретного состояния программы во время триггера самого примитива double free, от защит, реализованных в аллокаторе памяти, и от банальной удачи.
>>2183920 Спасибо большое за ответ! Есть ли где инфа о том, по какому принципу можно понять когда будет производиться аллокация "поверх" другого объекта в различных аллокаторах?
>>2184550 Как я уже сказал, это ОЧЕНЬ зависит от реализации аллокатора. Нужно реверсить/читать код аллокатора памяти, дабы понять что произойдёт при двойном освобождении и есть ли вообще в аллокаторе митигации против этой атаки. По этой самой причине, эксплуатация double free - одна из самых сложных если не самая из всех остальных типов уязвимостей на уровне памяти.
Швабра-кун, ты тут? У меня есть для тебя задача которую ты не сможешь решить, даже теоретически. И решения ты тоже нигде не найдёшь. Задачка из RE, и в RE было бы неплохо знать её решение.
>>2187452 1 Примем за идеал реверсачера который оставляет минимум следов изменения. Минимум изменений - максимум эффективности. 2 Мне нужно изменить заархивированный код, я же его должен сначала разархивировать, потом изменить, написать архиватор и заархивировать. Заархивированный изменённый код получился меньше чем исходный. Вот и найди мне примерный алгоритм уровня a,b,c, с помощью которого у меня получится заархивировать изменённый код в точно такого же размера архив, как и у исходного кода. А то программирует мне мышкой тут...
Просто если нихуя не делать, то и не наткнёшься на проблемы для которых нужно решение. И поэтому "кажется" что всё уже решено. Я вот против этого с самого начала, а на швабра-куна ничего не имею.
>1 Примем за идеал реверсачера который оставляет минимум следов изменения. Минимум изменений - максимум эффективности. Можно конечно тут про швабры вспомнить, но что так, то так и будет.
Анонче, я вот начал читать Reverse Engineering для начинающих. И у меня вот проблема. Пытаюсь сделать листинг кода дефолтный хелоу ворлд на ++ в vs 2019. Пишу в консоли cl {Name}.cpp /Fa1.asm, все по методичке. Открываю 1.asm, а там пикрил на 8000 строк. А должно было бы быть как на 2 пикриле. Что делать? Я просто вторую сутку недосыпаю, и возможно разгадка у меня под носом, а я дурак не вижу. Помогите.
Ах и да. У меня вопрос. Если я не изучал ассемблер, но у меня есть опыт в программированиибольше чем хелоу ворлд, однозначно немного на плюсах, но в основном на шарпах. В основном вопрос к ассемблеру. Мне в этой книге все подробно разжуют, или лучше еще вместе с этой книгой, читать книгу по самому ассемблеру? Да и я сам хотел бы писать эксплойты, и читы. Что посоветуете?
>>2187705 Какой блять листенинг, высокоуровневый? В асме ты сам пишешь этот листенинг. Берешь пустой файл, переименовываешь его в .asm и пишешь код. У твоего листенинга ценность околонулевая. Написал код, запустил в отладчике, вот тебе и весь листенинг. Научись работать с отладчиком. Ollydbg тебе инструмент на всю жизнь.
В асме писать код и отлаживать считай тождественно. Написал,, проверил, отладил, написал проверил, отладил... Зато ты точно знаешь что будет делать твой код. Долго, зато работает как полагается.
>>2187705 Судя по листингу, там ещё адреса внешних ф-й. тебе же надо найти энтри поинт это обычно main, _main, _start, start, в винде свой формат вроде, там winmain@n, где n - размер аргументов в байтах.
Лоха увидел в низкоуровневом. Пиши в ЕСПЧ, в ООН пусть тебе предоставят алгоритм как сжимать до указанного размера. Алгоритм это последовательность действий.
Спасибо релеватному поиску, гуглится всё что угодно кроме того что нужно. Может кто подсказать, откуда это пошло/взялось: при переключении с русской (скорее всего и другой) раскладки на английскую, дополнительно появляется событие keyUp для Ctrl ? Eng 2 Ru: ``` KeyDown Alt KeyDowb Shift KeyUp Shift KeyUp Alt ``` Ru 2 Eng: ``` KeyDown Alt KeyDowb Shift KeyUp Shift KeyUp Ctrl KeyUp Alt ```
Анонче, я вот сейчас прохожу книгу калашникова, и я так понял там я буду кодить только для DOS. У меня вопрос, я ведь смогу потом без проблем кодить под x64, да и вообще под новые ОС? Есть ли смысл проходить Калашникова?
>>2189462 Калашникова не читал, но принципы что в DOS, что в винде, что в линупсах будут плюс-минус одни и те же, за исключением работы с ОС и железом.
>>2079195 (OP) Подскажите, пожалуйста, книгу по оперционным системам, которая бы описывала в общих чертах их строение как можно сделать на примере разных ос. Чтобы она не было тупо о винде или тупо о линуксе написана.
Алгоритм как сжимать до нужного размера: 1 Разбиваем файл на чанки, присваиваем чанку тег несжатого чанка. Вычисляем новый размер файла с тегами. 2 Сжимаем с проверкой размера. 3 Если размер после сжатия чанка стал меньше нужного, подгоняем последний чанк под нужный размер. Оставшиеся чанки оставляем как есть. Итог: сжатый файл нужного размера, распаковщик всё распаковывает.
>>2190016 Годная книга, но идёт тяжеловато, почему-то больше 30 страниц в день не осиливаю, толи переведена так толи я такой тупой, но до этого плюсы, си, архитектуру и микроарихитектуру читал там нормально шло.
Поясните, пожалуйста, каким образом посылаются команды на gpu? С моим нынешним уровнем знаний, я только знаю о том как команды на цп подаются и что этот цп через шину связан с северным мостом, который в свою очередь с видеокартой связан.
Так как команды на gpu подаются? Они напрямую программистом подаются или подаются на cpu и он решает что их нужно на gpu послать?
>>2195937 Хороший вопрос в целом. >Они напрямую программистом подаются или подаются на cpu и он решает что их нужно на gpu послать? А этот не очень. Не знаю, но предположу, что команды посылаются на определённые адреса памяти. Конечно программистом, а кем ещё?
>>2195937 Может поможет, не знаю. Короче на PS1 картинка рисуется слоями, самый первый слой это интерфейс. Если тебе нужно изменить инфу как здесь>>2116307, то ищи первый слой и как там происходит организация текста. Чем мог...
>>2195990 Ну я имел в виду что типа gpu он же другой по микроархитектуре и больше заточен на обработку графики. ну и типа я знаю только что программист имеет доступ к памяти(регистры, озу, жд), а вот про gpu не слышал. Следовательно наверное cpu определяет может по каким-то меткам какие команды лучше делегировать gpu.
Хотя это всё очень долго, особенно если через память делать, а gpu надо очень быстро работать, объём вычислений огромный
>>2196011 Спс, но я знаю как происходит отрисовка(поверхностно) мне интересно как команды на графический процессор подаются который и выполняет отрисовку.
>>2195992 Ну да, они состоят из блоков цифрой логики которая по совокупности конкретных цифровых сигналах на конкретных входах даёт конкретные выходы.
>>2196060 В асме ещё есть скрытый -1 уровень). >Ну да, они состоят из блоков цифрой логики которая по совокупности конкретных цифровых сигналах на конкретных входах даёт конкретные выходы. Только разница во времени, обычный cpu тебе даст на выход, допустим за 0,5 секунды, потому что он общего назначения. А видеопроцессор тебе даст на выход мгновенно, потому что он только под это и заточен, другие команды он не сможет выполнить. А как туда подаются команды я не знаю)
>>2196114 >Только разница во времени, обычный cpu тебе даст на выход, допустим за 0,5 секунды, потому что он общего назначения. А видеопроцессор тебе даст на выход мгновенно, потому что он только под это и заточен, другие команды он не сможет выполнить. Спасибо это я знаю.
Меня именно интересует как команда в gpu подаётся. У меня пока 2 варианта предполжений:
1. cpu сам определяет какие команды можно делегировать gpu а какие нет, но это долго. Пока это команда на cpu поступит с истоничка ввода, пока cpu обработает, пока она по шине придёт на северный мост, пока она её отправит на видеокарту, это колоссальные потери времени. 2. Команды для графики не попадают на cpu вообще, они с источника ввода подаются на южный мост, южный мост делигирует их на северный, а северный мост отправляет её на видеокарту, а видеокарта после обработки отправляет её на монитор.
>>2196120 > cpu сам определяет какие команды можно делегировать gpu а какие нет, но это долго. Да как он может чёто делегировать? У него уровень mov ax, bx. Ты может путаешь, считаешь что mov это команда, а ax, bx это переменные? Нет. mov ax, bx это одна команда, mov ax, cx это другая команда. У этих команд есть определённый двоичный код. У видеокарты может быть совсем другой код и мнемоники. У видеокарты может быть mov ax, ebx и соответствующий двоичный код. mov ax, ebx на процессоре общего назначения недопустима, потому что нарушает логику предназначения этого процессора. А на видеокарте вполне может быть.
mov ax, [bx] это тоже одна команда, она задана на заводе-изготовителе. А mov ax, [bx] это просто мнемоника, тупо чтобы не писать в своей программе двоичный или hex-код.
ЕЩЁ. ВСЕМ ВКАТЫВАЛЬЩИКАМ В ИТ! Вы должны понимать для чего нужен ISO - Международная организация по стандартизации. Именно там назначается двоичный код для мнемоники mov ax, [bx]. Там назначается вообще всё, поэтому структурировать знания лучше начинать с этого. Со стандартов. Россия, например, может назначить другой код для мнемоники mov ax, [bx]. Поэтому написанный в вашей программе mov ax, [bx] не будет работать на российский процессорах.
>>2196133 Ай блядь, вот я ебланище, даааа. Команды это же от архитектуры зависит, понятное дело что у видеокарты какая-нибудь своя архитектура и там другое всё.
>>2196157 >российских процессорах Гавно с 1 ядром и частотой 400 мега герц для разработки на котором нужно стоит невыездным хуесосом в оборонке на пожизненный срок? Спасибо, откажусь
>>2196203 Да не от архитектуры, а от стандартов. Свою архитектуру может любой дурак сделать, только она не будет совместима с архитектурой которая распространена по всему миру. Это важно! В этом и суть ISO, суть стандартов.
Да и видеокарта это очень быстрое устройство. В моём понимании это как блок выключателей пикселей, практически нет задержки. Ты отправляешь этому блоку данные, он сразу же отображает картинку, включает нужные пиксели. Понятно что там вычисления тоже есть, но все они сводятся к тому чтобы видяха фунциклировала как простой блок выключателей. Поэтому нет смысла посылать что-то процу, чтобы он подумал и потом делегировал.
>>2196295 Ты даже не представляешь насколько сложные вычисления у видяхи когда она обрабатывает 30-60 кадров в секунду какой-нибудь 3х мерной игры типа гта.
>>2196370 Не представляю. Но чисто логически, туда не могли запихать процессор, который делает mov ax, bx и вот эти все ненужные движения для отображения видео. Там наверно стоит проц со специфическими задачами, который не будет вычислять 3 в кубе(к примеру), а сразу выдаст прописанное значение. И как бы вопрос о сложности. Сложно по сравнению с чем, с человеком, с cpu, c другим gpu? Это чисто попиздеть, в специфики видеокарт я никакой.
То есть 3 в кубе. Можно послать процу двоичное три, потом ещё раз двоичное три, и проц выдаст двоичное 9. А на специфическом проце посылаешь двоичное 3, потом ещё раз двоичное 3, и он выдаёт двоичное 27. Одна операция, а вторая посложнее будет, но процам одинаково. Это -1 уровень асма для меня)
Понимаете меня или нет? Два проца делают одну операцию за один такт, но во втором случае операция сложнее.. для человека. Поэтому в приставках используются более слабые процы, потому что им не надо вычислять 3 умножить на 3, у них никогда такой задачи не будет. Утрированно всё. Без обид, написал как есть и похуй, заебало всё.
1 северный мост уже встроен в чип 2 у видяхи векторная архитектура 3 а) цп может отправлять данные в коммандый буфер б) видяха имеет dma и mmu для работы с ram, тогда цп просто шлёт команды
>>2196674 А я помню на CGA надо было ждать обратного хода лучша и только после этого писать в видеопамять, иначе помехи были на экране. На EGA уже пофиксили это.
>>2196721 3 а) тоже уже устарел. Тогда же прямо в видеобуфер писали. Сейчас же нужен драйвер и динамическая либа. Всё это пишут на яву. Даже для загрузчика ассемблер уже не нужен, есть uefi.
Вопрос как нахуй учиться если на любой вопрос по ассемблеру препод отвечает односложно. Ууу сука. Я может вас уже заебал но мне похуй я больше не знаю как тут выжить. INB4: Да я пытался в скобках переменные писать, еще пытался word [varA] и т.д., файл экзе. ТАСМ, i8086 Почему-то когда выполняю программу и вместо переменных использую числовые значения, то регистры работают так как надо, помещаю 2 в ах в регистре 0002, а если через переменную это делаю mov ax, varA то регистр заполнен FFF5.
>>2197856 > а если через переменную это делаю mov ax, varA то регистр заполнен FFF5. > еще пытался word [varA] Так а что получается, если написать mov ax, word [varA]?
>>2197943 >Так а что получается, если написать mov ax, word [varA]? по моей логике? или что по факту происходит EA00 записывается. Я вот ща думаю может там из-за того что тип данных такой большой dw записывается лишняя инфа
>>2197856 Чё у тебя там dw везде, если у тебя 16 битные регистры. Ты совсем чтоли тупой? 16 бит это word. 1 это бит ff это байт ff ff это слово ffff ffff двойное слово
>>2198037 dw это double word, двойное слово 32 бита. Значит задание у тебя с подъебоном и препод всё правильно сделал, потому что ты нихуя не шаришь. Тебе надо в команде написать указатель на данные в памяти, которые ты туда записываешь своими var'ама.
>>2198576 > Транслятор должен знать заранее, через какие сегментные регистры будут адресоваться ячейки программы, и мы сообщаем ему об этом с помощью оператора assume (assume - предположим). При этом в регистр CS адрес начала сегмента будет загружен автоматически, а регистр DS нам придется инициализировать вручную. Обращение к стеку осуществляется особым образом, и ставить ему в соответствие сегментный регистр (конкретно - сегментный регистр SS) нет необходимости.
ASSUME похоже просто указывает что за DS закреплена секция DATASG.
>>2198705 Я же. Так-то какой-то дибилизм. Зачем нужно указывать ASSUME DS:DATASG? Если DS всё равно надо инициализировать? Почему у нас такое образование? Зачем нужна эта хрень которая только запутывает? Возможно, если писать простыни кода эта директива окажется нужна, но лучше же научиться пользоваться в тот момент когда она будет нужна. Тогда и заучивать ничего не надо будет, сам поймёшь нужность и автоматом запомнишь. Как бы образование идёт от теории к практике, но по моему мнению лучше чтобы было наоборот. Это как минимум интереснее чем тупо заучивать. TASM уже нахрен никому не нужен, но заставляют заучивать эти директивы. Да тут рили свихнуться можно если заучивать директивы от всех ассемблеров, в голове просто не останется места для чего-то ещё. А код то в итоге получается одинаковый.
Допустим мы вводим с клавиатуры число 123, Записываем в массив, теперь чтобы вывести 2 хочется вписать String[1], но выдаст 23, как можно после String[1] добавить '$' чтобы вывод закончился на двойке?
Поясните, плиз, каким образом работают программы типа cheat engine или artmoney? Ты типа выбираешь процесс и они в диапазоне памяти где расположен текст программы этого процесса и его переменные\стеки\хуеки сканируют всё на наличие искомого значения? Я правильно понимаю принцип их работы?
>>2200706 Нет. Мне просто интересно решил плотно сесть в компьютер сайнс, читал книжки по архитектурам, микроархитектурам, по операционным системам читаю книжку(мне в этом треде) 2 недели назад посоветовали. Потом планирую про компиляторы почитать, про то как антивирусные программы работают.
>>2200710 Как я понимаю, они ищут в памяти изменяемые значения. Если значение не меняется, то ничего не найдёт. Например, меняется кол-во патронов, то можно найти. Статичные объекты не найдёшь. Я никогда не пользовался, отладчик есть. Лучше научиться пользоваться отладчиком. Мне он не пригодился ни разу, даже в трудных моментах. Возможно, лучше расскажут те кому он помог.
>Как я понимаю, они ищут в памяти изменяемые значения Я так понял в озу у каждого значения есть свойство типа read write и если там write разрешено то такое значение считается изменяемым, а если read only то и трогать его нельзя да и смысла нет особого
>>2079195 (OP) >Книги по ассемблеру: >"Архитектура компьютера" Э. Таненбаум Есть ли смысл читать если до неё прочитал книгу супругов Харрисов тоже по архитектуре?
>>2200773 Имел ввиду значения которые изменяются. Ну то есть если кол-во патронов изменилось, то значит изменились значения в памяти, вот artmoney и должен их показать. Это примерно, потому что я не пользовался artmoney и читенжином. У меня принцип - нет читерству.
>>2200854 В отладчике можно сделать почти также, может даже проще получится. Надо поставить один брейкпойнт перед стрельбой, второй после стрельбы. Сделать дамп памяти на первом брейкпоинте и второй дамп памяти на втором брейкпоинте. Два этих файла с дампами сравнить в hex-редакторе (neo например). Он покажет отличия, отличия которые для видеоотображения значения сразу отсеиваются. С остальными значениями можно ковыряться, ставить поочередно брейкпоинты на изменения этих значений. Постепенно найдешь значение в памяти которое влияет кол-во патронов. Чем лучше шаришь в реверсе и во всяких функциях, памяти и отладчиках, тем быстрее найдешь.
>>2200864 Мерси, спабо за подробное объяснение. Тогда после книжки по осям пойду читать про отладчики и компиляторы. А ты сам на каком стеке работаешь если не секрет?
>>2200870 Если честно, я даже не знаю что это значит. Мне надо было кучу файлов соединить в один, я знаю что можно это сделать при помощи досовской команды, я не вспомнил и не нашел, написал прогу на асме которая все соединила)
В реверсе решает практика. Ты хоть сто книжек прочитай и не увидишь в коде шифрования, а когда сам пару раз расшифруеш, зашифруешь, сразу увидишь. Это мои наблюдения, а не то чтобы я там спец по шифрованию.
>>2200892 Никто не спорит, но без книжек ты не будешь иметь общего представления что можно делать и вообще как к делу подступиться. Будешь как один кадр с моего предыдущего места работы который все знания получал через телеграмм каналы и статьи из поисковика. Он много лет работал и когда нужно было выполнить допустим 100 похожих команд где просто 1 число увеличилось на 1 он их копировал в редактор текстовый и там менял эти значения, хотя элементарно в консоли скрипт 5 сек написать чтоб он эти команды размножил и применил.
>>2200564 1. Для того, что бы вывести число, тебе надо сканкод клавиши, который ты получил при отконвертировать в ascii символ, который ты будешь выводить на экран. 2. Можно вывести напрямую в видеобуфер, можно вывести символ через int 10h, либо через int 21h, в последнем случае, перед выводом символа непосредственно запиши после него $ в область памяти.
>>2200902 Мм... Мне просто надо арабские цифры перевести в римские, я думал можно как-то отдельно массив отфильтровать и поставить 9 условий поставить if str[0] = '1' then str[0] = 'I' ну грубо говоря, хотя херня метод всё равно
>>2200909 Нет, он с обязанностями должностными справлялся, а это так маленький ньюансик. Человек пришёл с 0 опыта с компанию и тупо сам в процессе всё изучил через поисковики и телеграмм каналы, лол. Ни одной книжки он никогда не читал, на практике много что освоил, но вот такие пробелы когда он не знал про консольные скрипты и правил много однотипных команд через редактор текста присутствовали.
>>2200911 >>2200931 Я вот всё же думаю надо чтобы одна цифра занимала скажем 5 байт, то есть заполнить $ тогда типа если 1й элемент массива = '4$$$$', то можно будет его заменить на 'IV$$$'
>>2200938 Как бы сделал не знаю, первое что приходит на ум, как раз соответствие числа индексу в массиве с римскими числами. Да, пожалуй, лучше под римские числа отводить не байт, а 4 байта, но тогда вопрос, как конвертировать тысячи и тому подобное.
Ты что во что собрался преобразовывать? Арабские цифры в римские это не ответ. Для преобразования есть команда xlat. Символы они и есть символы, просто изображение чего-то. Это у тебя изображение чегото или что? Надо значения этих символов в памяти преобразовать в другие значения в памяти. До преобразования символов надо пересчитать значение из hex в dec, чтобы в памяти вместо FFh стало 255h, например. Потом это значение посимвольно преобразуешь в ascii-код(или что у тебя) символов I V через xlat.
>>2201038 >Надо значения этих символов в памяти преобразовать в другие значения в памяти. До преобразования символов надо пересчитать значение из hex в dec, чтобы в памяти вместо FFh стало 255h, например. Потом это значение посимвольно преобразуешь в ascii-код(или что у тебя) символов I V через xlat. Окей, попробую завтра тогда. Спасибо.
>>2079195 (OP) Поясните, если ли смысл пытаться обмануть системы антиплагиата? Насколько я понял тупо клонировать такие же символы только с другим кодом не вариант и программа палит. А как она палит? Графически чтоли текст распознаёт?
>>2201038 А если мы с клавы вводим числа 123 те же, в переменную InBuff label byte MaxSymb Db 9 RealSymb Db ? StringT db 9 dup ('$$$$') То там же хранится его десятичная версия в виде символом 1, 2, 3? Тогда и переводить из 16-ричной в десятичную не надо? или я не прав Тогда надо подумать как на разряды поделить.
>>2201654 Тогда не надо. Там же в переменной будет ascii 31h 32h 33h. Тогда надо отнимать 30h, иначе надо делать большой массив для xlat чтобы на 31 месте бы код I. Жопа, xlat наверно мало тут поможет, потому что уже для 2 надо II, а это два байта. Сложно.
Тогда наверно надо отнять 30h, потом из hex 010203 сделать 123h. Потом както дальше преобразовать в римскую систему счисления, а потом уже xlatом менять на ascii коды M C L X и т.д.
В общем у меня ща задача стоит получить отдельно разряды что пользователь ввёл, а вот отдельный разряд я умножу на 6, так как у меня между римскими числами 6 байтов разница 1й разряд (нулевой) = 06 = 0, выведет -I- 16 = -II- Ух бля, уже близко к победе
Почему mas[si] при si = 12h не выдаёт 12h элемент массива а какой-то мусор, в дебагере всё ок, си = 12h, а если вручную mas[12h] прописать то все правильно выводит. И если си не может быть в скобках, тогда как туда переменную можно засунуть?
Аноны, недавно более-менее разобрался, как работает Meltdown. Прлучается, имея железо с этой уязвимостью, я могу несанкционированно считывать любую инфу из оперативной памяти. Можно ли, используя эту уязвимость, получить доступ к сегменту кода исполняемой программы и дизассемблировать её? Если прога не большая, она ведь вся в памяти будет? И если можно, почему так ещё не делают, ведь это огромное упрощение реверса если прога как-то упакована или защищена, ведь её код можно просто спиздить из оперативки.
>>2203057 Если честно, препод какой-то полупидор с полумерами. Скажи ему что в /pr делают полноценные проги/конверторы и этой хуйнёй не занимаются. Хуйня не будет работать как надо, потому что она хуйня.
>>2203612 Из высокоуровневых ЯП ничего не знаю, только Си на троечку, если он считается. Пытаюсь вкатиться в асм потихоньку. Что не так с моим вопросом?
>>2202514 >она ведь вся в памяти будет Она и так вся в памяти в виртуальной >>2202514 >огромное упрощение реверса Нет, анпакать можно по частям в процессе исполнения, а если и нет, ты и так можешь все задампать, чем ебаться с дырами спекулятивного исполнения на проце
>>2204080 > ты и так можешь все задампать Могу задампать, если никакой защиты от пиратства нет. А если прогу каким-нибудь вмпротом упаковали или зашифровали, то ведь проще уже распакованный код считать напрямую из памяти. По крайней мере, хотелось бы знать, насколько возможно это реализовать? Типа, пока все пытаются бороться с программными уязвимостями, ты можешь воспользоваться уязвимостью железа (учитывая наличие оного) и полностью обойти какую-либо защиту.
>>2204102 >А если прогу каким-нибудь вмпротом упаковали или зашифровали Ну так и дампай из памяти после этапа расшифровки, и вообще, пчел, вмпротект - виртуализатор, как в условной яве есть байткод и ява-машина, так и тут своя виртуальная архитектура и команды поверх х86. В какой бы момент времени и каким бы способом ты не добыл содержимое памяти, на выходе получишь раздутый код, который в декомпилере выглядит как нечитаемая каша такая же, как у тебя в голове, без обид. Явное практическое применение подобных дыр - воровство данных и обход защитных механизмов для воровства данных. Пользы в обычном дебаге ноль, на своей локальной тачке с помощью подобных дыр нельзя сделать ничего такого, чего бы нельзя было сделать и без них.
>>2204122 Спасибо что разжевал, теперь понятнее намного стало. А насчет каши согласен - надо как-то инфу в голове упорядочить или более углублённо изучить вопрос. Мб посоветуешь какой-нибудь литературы по архитектурам? Сейчас мои знания на уровне этой книжки, что после неё стоит почитать?
>>2203770 Пиздец, не принял защиту, начал низкоуровневую хуйню спрашивать мол 'а что если вписать твою хуйню которую ты выводишь вывести еще раз в конце?' В итоге у меня затирается чутка текст а я не ебу как это исправить. сука Я ему объяснил всё что делается в коде, а ему похуй, Cпрашивает есть ли динамическое выделение памяти в ассемблере Спрашивал а че значит лейбл, стринг т сколько выделяет байтов после ввода в переменную ( я отвечаю что столько сколько в реалсимб будет храниться, он недовольный урчит) я хз как это защитить пизда
>>2204334 Так про память ссылки дал (тема сложнее, чем кажется на первый взгляд, советую видео посмотреть. Куча нюансов всплывает) Далее, как следует прокомментируй код, что бы было меньше деталей за которые можно зацепиться. Полный код программы можешь привести?
>>2204350 Посмотрел код. Он как существо Франкенштейна, собирался из разных частей? Выработай единый стиль написания кода. Либо все заглавными буквами, либо все строчными. Работай с целыми регистрами всегда (короче код), а с их частями - там где это необходимо. Правильно:
>MOV AX,4C00h >INT 21h
Неправильно: >MOV DH, 10 ; позиция по вертикали >MOV DL, 35 ; позиция по горизонтали >MOV AH, 02H ; установить положение курсора >INT 10H ; вызов прерывания BIOS 10H Прокомментируй весь код.
>>2204346 Уточню, что бы было понятно. Ассемблер - это инструмент. Сам по себе он ничего делать не может. Выделение памяти - функция операционной системы. Динамическое выделение памяти - работа с данными, размер которых заранее не известен. Достигается путем выделения нужных страниц памяти под данные по мере исчерпания свободного пространства уже выделенных страниц. Реализация - на усмотрения программиста. Дополнительную информацию я тебе привел.
>>2204334 >динамическое выделение памяти в ассемблере Нет такого понятия в АСМе. Ну то есть совсем. Уточни, что имеется в виду. Если, это понятие в рамках какого-то ЯВУ, ну так и смотреть надо, как это делается в рантайме конкретного ЯВУ.
>>2204334 Так ты и не шаришь же нихуя. Ты пытаешься как-то уйти от задачи, решить её на высоком уровне. А я же тебе говорил, что изображение на экране это просто изображение. Вся суть в вычислениях. Ты хочешь как-то хитро наебать ассемблер чтобы поменять одни символы на другие. Это так не работает.
>>2204364 Динамического выделения памяти не существует. Это просто большое по объему место в физической памяти которое выбрано и зарезерверивано ос для какой то перемнной в какой то программе
> Это просто большое по объему место в физической памяти > которое выбрано и зарезерверивано ос
Зависит от операционной системы. Если мы про linux - это объем неинециализированная память выделенная для программы. Прочитай что такое стэк (stack и heap). Я ссылку привел на книгу.
>>2207389 > Видеокарта определённо регистрируется в операционной > системе и она имеет свой драйвер. Да.
> Выходит всё таки что сперва процессор посылает сигналы на > видоекарту через видео драйвер? Нет, не выходит. Процессор вообще ничего не знает о наличии или отсутствии ОС. А архитектуре комьютера есть определенные участки памяти, которые отвечают за вывод изображения. Упрощенно - на них посылаются данные, после обработки которых выводится изображение.
>>2207535 Та, похоже, зря ты распинаешься. Этот щегол упорно не хочет читать ссылки, которые ты кидаешь, а предпочитает упарываться своими маня-гипотезами.
>>2207535 >А архитектуре комьютера есть определенные участки памяти А где они? В процессоре или в biosе?
У меня пробелы да, я читал про архитектуру, как там процессоры собираются из логических элементов, автоматов, триггеров, про асмы, про то как ввод вывод на сторонние устройства идёт, но нихуя не было там про работу видеокарты. Вот не знаю в какой книге этот пробел восполнить ты скинул мне ссыль я глянул вроде как эти адреса описсанные там к биосу относятся
>>2207535 Насколько я понял по ссылке там какие-то биос переменные так и что блэт ты хочешь сказать что время работы пк когда пользователь в игру играет сигналы на видеокарту поступают через микросхему биоса или что?
>>2207819 >сигналы на видеокарту поступают через микросхему биоса Ты тупой или да? Микросхема БИОСа - это ПЗУ. Туда программа записана ('прошита'). Как через ПЗУ могут "поступать сигналы" на какую-то там видеокарту?
>>2207831 Ну а как тогда? Ну блять ну у меня реально пробел в знаниях я не спорю. Я читал книгу по архитектуре да там про процессор был, как он там на кристалле построен из транзисторов, как эти транзисторы в цифровую логику собираются, про ассемблеры, комманды ввода вывода, шины.
Но блять про видеокарты нихуя кроме того что иногда видеосистемы могут размещаться на одном и тоже кристалле с процессором.
Щас вот читаю книгу которую мне здесь посоветовали про Операционные системы, Таненбаума, уже 400 страниц прочитал, на 5й главе щас про устройства ввода-вывода. Вот.
Ну по ссылке написано что это биос переменные что я должен был подумать? Вообще об этих биосах или уефи что там щас я знаю только то что они делают тест устройств на исправность и передают загрузчику ос управление. Всё.
>>2207840 >Видеокарта - это (внезапно) периферийное устройство, а значит обмен информацией с ней является вводом и выводом. Да? А я в этом посте что написал? >>2207389 Раз это устройство ввода вывода значит драйвер в процессоре посылает на её мирококнтроллер определённый ввод
>>2207846 Ну я читаю книгу про операционные системы там написано что переферийное устройство содержит у себя плату на которой есть пзу. Воооот. В ядре операционной системе есть драйвер этого устройства который используя CPU подаёт на этот пзу сигналы и получает от него ответы. Воооотъ.
Да ладно всвё я уже понял читаю щас про видеокарты как этот gpu отличается от cpu чтобы хоть поверхностно представление иметь
>>2207837 >делают тест устройств на исправность и передают загрузчику ос управление
BIOS - Базовая Система Ввода-Вывода. Это программа (прошита в ПЗУ, исполняется на CPU) для простых унифицированных операций ввода-вывода. В первую очередь - для этого. А затем ещё и для инициализирующего теста периферии и дальнейшей загрузки ОСи.
>>2207884 Я читал книгу супругов Харисс цифровой дизайн и компьютерная архитектура, там ассемблер кстати на примере архитектуры mips или как-то так она называется показан был в основном. Чё стоит перечитывать архитектуру таненбаума?
Ну я в любом случае операционные системы пока не дочитаю к новой книжке не преступлю
>>2208040 Можно предположить что это посто глобальнный счётчик всех загруженных фото на сайт, но в одной анкете в которой фото были добавлены в один деньги крайне сильная разница в суммах как здесь вот в примере >>2208040
из чего я делаю вывод что имена шифруются но по какому алгоритму я хз
>>2079195 (OP) >Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна! Прямая ссылка - https://yurichev.org/b564f46f1c207b2dbc84a2bd4a41ed4c/ Есть у кого-то ссылка на самую, или почти, обновленную версию его книги?
>>2079195 (OP) Мой ноутбук загружается в режиме uefi, даже специальный efi раздел есть. Таблица разделов жёсткого в gpt, тогда почему во всех системных параметрах в ноуте записано что у меня bios версия bios и т.д.?
>>2210730 Да, последняя, которую я находил, была датирована декабрем 2020 года. Ну, кто-то же должен сливать в сеть новые версии его книги, правда? Как-никак больше 300 патронов у него. Я нищеброд, да.
>>2211973 Игра dark sun 1, в системках написано, что минималка для нее 386 Вообще, я уже гидру попробовал, она как-то лучше справляется или чего-то не так понял, ведь я ньюфаг
>>2211994 Ghidra определяет DSUN.EXE как 16bit real mode. Перед дизасмом екзешника не забудь пройтись по нему утилитой unpack, мало ли, а то он запакован.
Здесь про процессор подробно расписано начиная с самого маленького транзистора. Там он внутри состоит из миллонов транзисторов микроскопических которые образуют логические цифровые элементы И ИЛИ НЕ из них уже защёлки автоматы собираются, короче там просто не раписать, извини.
Аноны, вопрос наверное больше архитектурный, но думаю вы тут разбираетесь. Хочу углублённо изучить устройство кеш-памяти (проблему арбитров, многопортовость), можете посоветовать какую-нибудь литературу по этой тематике, желательно для вузов?
Собрал некоторые ASM-рилейтед ссылки. Выборка получилась однобокой, видимо (Разработка IBM PC X86 WIN). Не охвачены темы: написание драйверов, виртуализация, микроконтроллеры, эмуляторы... (Т.К. не разбираюсь в этом. Не знаю, надо ли это вообще) Не добавил ничего по инфосеку (пентест, хакинг,...), т.к. есть отдельный тред. Надо ли его упоминать? Хоть шапка и получилась большая, но я не уверен, что это плохо. Пытался не упустить ничего ценного по теме. А то нынешние зумеры совсем одичали, не знают, что там внизу можно делать. Нет вменяемых подборок и программ даже для университетских курсов.
Давайте ваши советы: что добавить/убрать/заменить/передвинуть. Несите свежие ссылки на актуальный софт/книги/сайты. Критикуйте. Не перекатывайте пока.
>>2212947 Книжки по архитектуре совсем уж протухшие. Там издания 1975-198х годов. Я бы хотел что-нибудь предложить, да только сам не могу ничего достаточно годного найти по архитектурам.
>>2212947 Несколько лет назад, меня тут с говном пермешали за то, что я предложил Абеля добавить в шапку в треде. Мол, говно старое, нахуй тут MS-DOS не нужОн. Подкину ссылок еще: Ed Jorgensen - x86-64 Assembly Language Programming with Ubuntu http://www.egr.unlv.edu/~ed/assembly64.pdf
Ed Jorgensen - MIPS Assembly Language Programming Using QtSpim
>>2217422 Сделай нормальный конвертер он тебе полюбому поставит зачёт. Логика такая: Ты вводишь в консоль 2021, в памяти появляется значение 32,30,32,31. На выходе надо получить MCMLXXXVI, это в памяти должно быть 4D,43,4D,4C,58,58,58,56,49. Надо из 32303231 логическим путём получить 4D434D4C5858585649. Вся логика на пикче, надо просто её написать ассемблеровскими инструкциями. Но есть ньюанс, нельзя логически получить значение 4D434D4C5858585649 из 32303231. Поэтому надо получить другие значения, потом с помощью xlat преобразовать в 4D434D4C5858585649. А потом просто отобразить. Лень думать если честно.
Ребзь, а как вы арифметику с отриц. числами выполняете? varB dw -1 это вроде 65535 и если поледить это число на, скажем, 5 то получится 3333h, а это уже хрень какая-то, неясно это положительное число или отрицательно. Да и с 65535 непонятно какое число взято
Читаю тут книжку что мне анон советовал ещё в октябре про операционные системы Таненбаума, ну короче читаю главу про виртуальные системы, автор с таким придыханием рассказывает(2015 года книга) про то какие они пиздатые, какое это будущее, как там всё продумано.
В итоге читал так что аж самому захотелось какую-нибудь 98ю винду на виртуалке накатить. Ну короче 98se тупо не накатвыается потому что гипервизор не может корректно обработать служебные команды операционной системы и тупо куча ошибок и система не ставится, в интернете сказали что только первая редакция может встать, ну встала, да, тоже с ошибками но встала. Ну короче смысла от них, систему то они могут запустить, но она там в таком состоянии выходит что на ней врядли какую программу можно запустить корректно.
Изучаем masm32, дали задание 3. Напишите инструкцию OR для логического сложения: ж) содержимого регистра АН с данными по адресу WHEN, с сохранением результата по адресу WHEN. Как я понимаю, WHEN это название переменной. Очевидное решение or [WHEN], ah не работает, наверно потому что нельзя вернуть значение из памяти по адресу из памяти. Возможно ли это вообще сделать одной инструкцией?
>>2210236 >Мой ноутбук загружается в режиме uefi, даже специальный efi раздел есть
У тебя GPT совместимый с бивусом. Бутинг начинается с бивуса, который загружает легаси MBR из первого сектора. Таблица разделов MBR указывает на единственный раздел, который должен охватывать весь диск. А уже на следующих секторах - GUID таблица, которая в общем случае мапит все логические разделы диска
Помогите дубинушке с пониманием виртуальной памяти. Вот у нас есть система где физическое адресное пространство меньше виртуального. Допустим есть процесс (или группа процессов, что наверное не так важно), который занял всю main memory, т.е. количество пейджей адресного пространства процесса равно отношению размера всей памяти к размеру пейджа. Далее процесс запросил аллокацию памяти, соотвественно ось должна выделить еще стока-то пейджей (ведь аллокация происходит пейджами, а не байтиками?) Значит далее аллокатор сейвит в диск в( swap файл или раздел) один из пейджей, попутно выставляя absense битик, и на его место кидает новый?
И типа таким образом за счет swap пространства мы добились увелечения адресного пространства всей системы?
>>2223004 алсо какой смысл пейджинга и виртуальной памяти в общем, когда физической памяти больше виртуальной? ведь тогда все пейджы могут распологаться в main memory
>>2223015 >физической памяти больше виртуальной Не понял тебя. Виртуальная память - это буквально механизм трансляции эффективных адресов в физические. Это нужно, чтобы управлять памятью т.е. свободно перемещать части памяти задачи непрозрачно для исполнения этой задачи и, в конечном итоге, для изоляции задач.
>>2223004 >добились увелечения адресного пространства Размер адресного пространства фиксирован для конкретного ядра и никак не зависит от общего объёма доступной RAM. В страничный файл, по задумке, выгружаются не востребованные на данный момент страницы.
Сорян, я про адресные пространства. Т.е. к примеру размер входа mmu 32 битика (итого 4 ГБ), а установленной памяти больше 4 ГБ
>Виртуальная память - это буквально механизм трансляции эффективных адресов в физические.
Сам механизм трансляции ясен как божий день. Только вроде на вход MMU идет логический адрес. Эффективный это вроде как оффсет внутри пейджа
>Это нужно, чтобы управлять памятью т.е. свободно перемещать части памяти задачи непрозрачно для исполнения этой задачи и, в конечном итоге, для изоляции задач
Я понял концепцию set working. Я не понял, есть ли выигрыш в бОльшем количестве памяти. Попробую задать вопрос покороче и в более глупой форме: может ли set working процесса(-ов) быть суммарно больше, чем размер физической памяти?
>В страничный файл, по задумке, выгружаются не востребованные на данный момент страницы.
Это даже страничный файл, а не своп, как мне показалось? Оке.
>>2223058 >Эффективный это вроде как оффсет внутри пейджа Я имел в виду x86-64, конечно. В Long Mode эффективный и линейные адреса совпадают.
>концепцию set working Working sets, видимо.
>есть ли выигрыш в бОльшем количестве памяти Не вижу смысла, если часть RAM процессор не сможет адресовать, и она останется недоступной для него. Кроме того, в адресное пространство не только RAM отображается.
>>2223058 И ещё, пейджинг, разумеется, позволяет сделать так, чтобы суммарная выделенная память всех задач (и даже только одной задачи) была больше объёма доступной RAM. Но это не тоже самое, когда RAM больше адресного пространства.
>>2223105 Ну вот у меня там в программе выводятся римские числа, если потом, после выполнения всей логики программы, вывести хеллоу ворлд то надпись не выведется, а затрёт предыдущий текст. И надо объяснить почему не выведится. Я не понимаю как это происходит изнутри. >>2204350 код
>>2223579 Сори, я может не совсем пони, а зачем у тебя дергается вывод AskClient в самом конце проги (уже после лупа с выводом результатов и отступов)? Я к тому, что при выводе отступов (пробел + 0Dh,0Ah,'$' это и есть тот перевод каретки о котором говорил) у тебя курсор переносится к началу следующей строки, но в самом последнем выводе этого нет - выходит последующая печать на экран должна засрать предыдущий текст
>>2223933 >а зачем у тебя дергается вывод AskClient в самом конце проги (уже после лупа с выводом результатов и отступов)? Да это препод попросил в конце еще раз вывести проверить затирается там че или нет. А если затирается, то почему не полностью, как это всё объясняется
Ничего там не затирается все как надо работает, я не помню почему когда в первый раз запускал по его просьбе что-то не так выводилось. Может я и препода в заблуждение ввёл, он просто неизмененный код смотрел на доверии спросил по телефону (удалёнка) затирается ли там что или нет, я ответил ему что затирается. еще раз извините
Спрошу у коллективного разума. Есть некий модуль DXE, исполняется внутри UEFI загрузки.
Модуль считает некий хеш на основе 20 байт серийного номера HDD.
Если я правильно понимаю код, то в 4й снизу строке произойдет оверфлоу PasswordBuffer, потому что byte ptr [rcx+r11] будет явно больше 31, буфер 32 байта.
Коротко - он считает сумму всех байт в s/n жесткого диска, делает с ней XOR 0x1f, и потом пытается поочередно засовывать каждый байт из Diskserial в локацию в PasswordBuffer, выраженную index ^ сумма_байт ^ 0x1f
Что то не сходиться. Потому что код работает. Логично если бы там было & 0x1f, но там реально ^ 0x1f
Средствами дебага UEFI на живой машине пока не располагаю - пытаюсь понять в теории по коду
>>2224963 >Если я правильно понимаю код, то в 4й снизу строке произойдет оверфлоу PasswordBuffer, потому что byte ptr [rcx+r11] будет явно больше 31, буфер 32 байта. Я понял что прога просто положит 20 раз байт по адресу PasswordBuffer + поксоренный rcx. movzx eax, r8w ? там типа в последнем байте серийника сумма какая-то зашифрована? Или зачем она его ксорит?
>>2225871 так RCX указывает offset от начана PasswordBuffer
и он будет > 31 возмжоных позиций. r8w будет перед movzx eax, r8w будет уже содержать сумму всей байт в серийнике, ну если я конечно правильно понимаю.
>>2224963 Последние 5 бит суммы инвертируются, наверное как часть работы хэш-функции.
И ты уверен, что размер хэша - 32 байта? Максимальное значение серийника fffff fffff fffff fffff, значит максимально возможная сумма - 300 (15*20) атсаси у тракто
Возможно размер хэша примерно равен этому значению и уже инициализирован чем-то, а байтики из серийника раскидываются по этому полю. Других версий у меня нет
>>2228375 Размер "хеша" - он же пароль ATAsec 32 байта
Размер серийника 20 байт, то есть макc сумма 20 * 0xff = 0x13ec (5100)
Проблема в том, что ^ 0x1F как бы ни на что не влият при макс возможном значении 5100
Тут логически должно быть & 0x1F, это как раз ограничивало бы это самое значение в нужном нам диапазоне 0...31
Но там реально XOR, а не AND Вот я и пытаюсь понять что упустил.
Пока приходит в голову только то, что это очередная хитрая уловка, и происходит изменение этого кода во время исполнения, из какого то другого места до его вызова.
Бля ору. Препод не принял опять программу потому что в теории в консольке можно ввести другие символы кроме арабских цифр, поэтому надо заменить их внутри строки.
>>2079195 (OP) Приветствую, работяги. Обьясните, пожалуйста, малиновому про YASM. Какие перспективы? Какие отличия от других ассемблеров? Годнота ли вообще? NASM или YASM?
Анон, поясни плз за микрокод. Я понял только, что это средний слой между ISA и CPU, вроде как связывает отдельные значения с отделными регистрами, входами АЛУ. Но нахуя оно нужно и где это локализуется - я так и не понял
Помогите отследить движение информации по регистрам.
Короче ломаю одну игру через артмани, нашёл адрес значения, но когда меняю оно изменяется на визуальное и возвращается на исходное. Стал в отладчике отслеживать откуда идёт запись в эту ячейку памяти. И нашёл только 2 строчки, как попасть с верхней строчки на предыдущую операцию с ebx+00000718 мне нужно знать как туда инфа попала. Может есть какой-нибудь поиск? или отслеживание по регистру я хз Там много инструкций очень просто
>>2232872 >>2232871 Алсо допишу сразу что игра полностью автономная и выполняется на компе никаких удалённых серверов нет и искомое значение также хранится в оперативке во время выполнения ни из каких файлов она не читается. Мне нужно просто отследить движение инфы по регистрам и операции в ходе которых она получается найти.
Привет, как установить или инвертировать определенный бит в числе? Заранее не знаю, какая позиция будет, это всё в цикле происходит. Есть переменная с позицией где установить.
Препод сказал что это не структурная схема для ПЕРСОНАЛЬНОГО компьютера. А для однопроцессорной системы. Как он это понял? во-вторых, в чем отличие, мне нужна схема ПК
>>2233065 Препод еблан какой-то на персональных компьютерах 1 процессор установлен нахуй в 99% случаев. Ну или может быть он ядра в процессоре считает за отдельный процессор я хз или он ещё за процессоры считает всякие микросхемы, процессоры на видеокарте, микросхемы на сетевой карте я хз.
Пиздец вам эти совковые преподы мозги ебут конечно в ваших вузиках и вот вместо того чтобы делом заниматься асмы дрочить ассемблировать, дизассемблировать человек носится пол года доказываяя\пытаясь понять старого маразматика что за какую-то мелочь к которой он приебался
>>2233065 >Препод сказал что это не структурная схема для ПЕРСОНАЛЬНОГО компьютера. А для однопроцессорной системы. А персональный компьютер это что у нас? никак сервер мультипроцессорная система?
>>2233672 >Какое отношение это имеет к АСМу? Потому что АСМ это отражение мышления. У высокоуровневых такого нет, у них отражение мышления разработчика языка, но не программиста. Все типа ищут решение во вне, а надо искать решение в себе. И для этого надо уметь правильно рассуждать. По желанию.
Ещё одна безумная идея. Есть какая-нибудь прога, типа Автокада, в которой можно делать проекты-конструкторы из логических элементов? Вроде простенького контроллера или калькулятора. Может тоже в шапку?
>>2234699 Да, короче, я ему сделал джампом, сравнивается аски код если меньше или больше чисел то джамп. Он мне сказал типа надо чтобы символы оставались а заменялись только числа. Как можно это сделать когда у меня римское число может хранить 6 байт? '-VIII-' хотел сначала xlatb, но он только для 1байтовых. То есть fv123 в "fv-I--II--III-" https://pastebin.com/D6bqXisg
>>2079195 (OP) Посоветуйте книгу, пожалуйста, по ассемблеру(на английском) где разбираются подробно все эти команды регистрцы и т.д.
Я хотел Э. Таненбаума, но его книга из шапки архитектура пк, там много уделено внимания микроархитектуре, логическим винтелям и всяким транзисторам, резисторам. Хотелось бы онли команды, потому что про винтили и микроархитектуру я уже читал.
И ещё вопрос а что щас актуальнее учить x86_64 или x86_32 сильно они синатсически отличаются?
>>2238066 >subscripiton model У них там щас новый тренд на всё, включая автомобили вводить подписку. Даже тойотаа вскоре планирует запустить тачки по подписке: ты покупаешь машину и платишь каждый месяц сколько-то бабок, если перестаёшь платить ключ блокируется и машиной ты пользоваться не можешь, нет подписки.
В никсовских файловых системах используются не смежная запись данных, в отличии от фат или нтфс. Понятное дело, почему это свойство освобождает первые фс от скорой надобности в дефрагментации. Но я так нигде и не нашёл ответа на вопрос, можно ли выполнять дефраг в общем случае (типа троллейбус из хлеба) ? Причина вопроса: нужно читать некоторые данные из определенного файла при бутинге, а я не пойму, можно ли смело читать прямо через ай-нод (заранее прописанный в МБР), или желательно полное имя файла, так как ай-нод в ходе других манипуляций с ФС может быть перезаписан?
>>2237152 Таненбаум конечно охуенен, если оценивать по охватываемому материалу, но подчас слишком много отступлений. Ну вот зачем студентоте знать, сколько стоил юнит такой-то памяти в конце 70-х.?
>>2238524 Лучше Таненбаума книг я ещё не читал, по его книгам больше всего инфы получил. Если ты стремишься в системное программирование то курс Эндрю Таненбаума обязателен ящитаю.
Вчера племяшке сделал домашку на паскале, в одном задании нужна была сумма двузначных чисел кратных 6. И я написал For x:=10 to 99 do Как называется эта болезнь? Как её лечить? Постоянно проверяю в дебагере эту хуйню.
>>2079195 (OP) >Randall Hyde: The Art of Assembly Language Так в ней ведь HLA рассматривается. Это какая то высокоуровневая дичь а не Asm. Как это в RE поможет?
>>2268777 Аноны, а реально найти себе репетитора за вменяемые деньги который бы провёл мимо подводных камней? учусь в местной шараге, вроде бы учат целый семестр всякой лаже типа mov, cmp и проч... но нихуя не понятно(