Это копия, сохраненная 19 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вы пишите на ассемблере или собираетесь начать на нём писать? Программируете микроконтролёры, пишете драйвера для ОС, а то и саму ОС? Вам сюда.
Вы изучаете алгоритмы работы закрытого софта, пишите патчи бинарников? Вам тоже сюда.
Попрошайки с "решите лабу по асме за меня" идут в общий тред, а лучше нахуй.
Книги по RE:
Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
Прямая ссылка - https://yurichev.org/b564f46f1c207b2dbc84a2bd4a41ed4c/
Рикардо Нарваха: Введение в реверсинг с нуля, используя IDA PRO https://yutewiyof.gitbook.io/intro-rev-ida-pro/
Введение в крэкинг с помощью OllyDbg https://backoftut.gitbook.io/intro-cracking-with-ollydbg/
https://mega.nz/#!Bc9VVAYC!Vk6CFlW6VIoskLNgDKXbsL6FacDQeOKe6LX92wNicKY Нарваха практический курс по дебагингу
https://www.goodreads.com/shelf/show/reverse-engineering - список книг
Сайты по RE:
http://wiki.yobi.be/wiki/Reverse-Engineering
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a_modest_proposal_absolutely_no_babies_involved/
http://www.program-transformation.org/Transform/ReengineeringWiki
http://blog.livedoor.jp/blackwingcat/
https://yurichev.com/blog/
http://wiki.xentax.com/index.php/DGTEFF
https://exelab.ru/
Инструменты для 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 битные приложения, драйвера, анализа аварийных дампов - это все к нему;
Все книги и статьи Криса Касперски (R.I.P.)
https://yadi.sk/d/CxzdM1wyea4WP
https://rutracker.org/forum/viewtopic.php?t=5375505
https://rutracker.org/forum/viewtopic.php?t=272818
Книги по ассемблеру:
"Архитектура компьютера" Э. Таненбаум - https://www.libgen.is
Юров В.И: Assembler http://booksdescr.org/item/index.php?md5=73957AEFEADCB7F0C112DCAED165FEB6
С.В. Зубков: Assembler. Язык неограниченных возможностей.
Randall Hyde: The Art of Assembly Language http://booksdescr.org/item/index.php?md5=9C0F88DC623FCE96A4F5B901ADCE95D3
Сайты по ассемблеру:
Замена почившему wasm.ru- https://wasm.in/ , архив старого сайта https://rutracker.org/forum/viewtopic.php?t=407571 или восстановленный https://vxlab.info/wasm/index.php.htm
https://www.unknowncheats.me/wiki/Assembly
http://asmworld.ru/
https://software.intel.com/en-us/articles/intel-sdm
http://www.nasm.us/doc/
https://sourceware.org/binutils/docs/as/index.html#Top
https://msdn.microsoft.com/en-us/library/afzk3475.aspx
https://conspectuses.blogspot.com/2019/03/fasmg.html
Дизассемблер онлайн:
https://onlinedisassembler.com/
Сборник компиляторов онлайн:
https://godbolt.org/
Для ковыряющих винду и софт под неё, сайты с описанием структур со смещениями и разными версиями оных:
http://msdn.mirt.net/
http://terminus.rewolf.pl/terminus/
http://geoffchappell.com/
«Внутреннее устройство Windows» интересующего издания.
Документация Intel:
https://software.intel.com/en-us/articles/intel-sdm
Документация AMD:
https://developer.amd.com/resources/developer-guides-manuals/
Документация Arm:
https://developer.arm.com/documentation/
Разное:
Michael Abrash's Graphics Programming Black Book Special Edition http://www.phatcode.net/res/224/files/html/index.html
http://www.phatcode.net/res/224/files/html/index.html
https://www.agner.org/optimize/
http://booksdescr.org/item/index.php?md5=5D0F6DBC1410E10BC489167AFE8192DF
https://www.cs.cmu.edu/~ralf/files.html
https://www.sandpile.org/
http://ref.x86asm.net/index.html
https://pnx.tf/files/x86_opcode_structure_and_instruction_overview.png
http://www.jegerlehner.ch/intel/
Предыдущие:
№9 https://2ch.hk/pr/arch/2019-11-11/res/1439555.html (М)
№10 https://2ch.hk/pr/arch/2020-03-11/res/1499956.html (М)
№11 https://arhivach.net/thread/560997/
№12 https://2ch.hk/pr/res/1748635.html (М) https://arhivach.net/thread/594187/
https://yutewiyof.gitbook.io/intro-rev-ida-pro/
>Сажи годному треду!
Дабл сажи эпичному треду.
>>1837863 →
>также шизику с копированием строки
И где сравнение скорости на разных камнях? Где сравнению с копированием в цикле? Где?
Android NDK
Основная идея - после распаковки глифов изменить джамп на свой код который меняет глифы на русские. Нужный джамп найден, код написан. Где разместить этот код? Оказалось что игра начинается со 150 сектора, видимо так сделано для того чтобы не изнашивался cd-rom приставки(догадки). Значит я могу разместить этот код в 149 секторе, считать его в конец user_memory и пусть он там лежит и ждёт джампа.
Но надо где-то разместить код на считывание этого сектора. Нашёл кусок кода который можно спокойно занопить, около 20 команд получилось, оказалось мало. Решил в начале этого 149-го сектора разместить код который бы сразу исправлял все джампы и возвращал код в исходное состояние. Сделал. Теперь игра запускается только на эмуле ePSXe, видимо другие эмули не понимают изменения кода после того как запущена игра.
Решил найти побольше места чтобы разместить "полноценный" код на считывание сектора, без всяких изменений кода после запуска. Сделал, пикрилейтед.
Теперь внимание вопрос: зачем вообще вся ебала с этим сектором, если в том месте где я разместил код свободно 1000 байт, 250 команд. Я же могу просто там сразу разместить код на изменение глифов без всяких секторов.
Отладчик psx это. кстати оч. годный. Mips
ну и да, зачем ты какие-то там сектора пердолишь, я не понимаю, на всех дисках плойки один и тот же формат - исполняемый elf файл с именем в виде сосоневского кода релиза и system.cnf, где биосу указывается какой файл читать.
XXXX_NNN.NN (Boot-Executable) (filename specified in SYSTEM.CNF)
FILENAME.EXE (General-Purpose Executable)
PSX executables are having an 800h-byte header, followed by the code/data.
000h-007h ASCII ID "PS-X EXE"
008h-00Fh Zerofilled
010h Initial PC (usually 80010000h, or higher)
014h Initial GP/R28 (usually 0)
018h Destination Address in RAM (usually 80010000h, or higher)
01Ch Filesize (must be N*800h) (excluding 800h-byte header)
020h Unknown/Unused (usually 0)
024h Unknown/Unused (usually 0)
028h Memfill Start Address (usually 0) (when below Size=None)
02Ch Memfill Size in bytes (usually 0) (0=None)
030h Initial SP/R29 & FP/R30 Base (usually 801FFFF0h) (or 0=None)
034h Initial SP/R29 & FP/R30 Offs (usually 0, added to above Base)
038h-04Bh Reserved for A(43h) Function (should be zerofilled in exefile)
04Ch-xxxh ASCII marker
"Sony Computer Entertainment Inc. for Japan area"
"Sony Computer Entertainment Inc. for Europe area"
"Sony Computer Entertainment Inc. for North America area"
(or often zerofilled in some homebrew files)
(the BIOS doesn't verify this string, and boots fine without it)
xxxh-7FFh Zerofilled
800h... Code/Data (loaded to entry[018h] and up)
The code/data is simply loaded to the specified destination address, ie. unlike as in MSDOS .EXE files, there is no relocation info in the header.
Note: In bootfiles, SP is usually 801FFFF0h (ie. not 801FFF00h as in system.cnf). When SP is 0, the unmodified caller's stack is used. In most cases (except when manually calling DoExecute), the stack values in the exeheader seem to be ignored though (eg. replaced by the SYSTEM.CNF value).
The memfill region is zerofilled by a "relative" fast word-by-word fill (so address and size must be multiples of 4) (despite of the word-by-word filling, still it's SLOW because the memfill executes in uncached slow ROM).
The reserved region at [038h-04Bh] is internally used by the BIOS to memorize the caller's RA,SP,R30,R28,R16 registers (for some bizarre reason, this information is saved in the exe header, rather than on the caller's stack).
Additionally to the initial PC,R28,SP,R30 values that are contained in the header, two parameter values are passed to the executable (in R4 and R5 registers) (however, usually that values are simply R4=1 and R5=0).
Like normal functions, the executable can return control to the caller by jumping to the incoming RA address (provided that it hasn't destroyed the stack or other important memory locations, and that it has pushed/popped all registers) (returning works only for non-boot executables; if the boot executable returns to the BIOS, then the BIOS will simply lockup itself by calling the "SystemErrorBootOrDiskFailure" function.
The PSX uses the standard CDROM ISO9660 filesystem without any encryption (ie. you can put an original PSX CDROM into a DOS/Windows computer, and view the content of the files in text or hex editors without problems).
ну и да, зачем ты какие-то там сектора пердолишь, я не понимаю, на всех дисках плойки один и тот же формат - исполняемый elf файл с именем в виде сосоневского кода релиза и system.cnf, где биосу указывается какой файл читать.
XXXX_NNN.NN (Boot-Executable) (filename specified in SYSTEM.CNF)
FILENAME.EXE (General-Purpose Executable)
PSX executables are having an 800h-byte header, followed by the code/data.
000h-007h ASCII ID "PS-X EXE"
008h-00Fh Zerofilled
010h Initial PC (usually 80010000h, or higher)
014h Initial GP/R28 (usually 0)
018h Destination Address in RAM (usually 80010000h, or higher)
01Ch Filesize (must be N*800h) (excluding 800h-byte header)
020h Unknown/Unused (usually 0)
024h Unknown/Unused (usually 0)
028h Memfill Start Address (usually 0) (when below Size=None)
02Ch Memfill Size in bytes (usually 0) (0=None)
030h Initial SP/R29 & FP/R30 Base (usually 801FFFF0h) (or 0=None)
034h Initial SP/R29 & FP/R30 Offs (usually 0, added to above Base)
038h-04Bh Reserved for A(43h) Function (should be zerofilled in exefile)
04Ch-xxxh ASCII marker
"Sony Computer Entertainment Inc. for Japan area"
"Sony Computer Entertainment Inc. for Europe area"
"Sony Computer Entertainment Inc. for North America area"
(or often zerofilled in some homebrew files)
(the BIOS doesn't verify this string, and boots fine without it)
xxxh-7FFh Zerofilled
800h... Code/Data (loaded to entry[018h] and up)
The code/data is simply loaded to the specified destination address, ie. unlike as in MSDOS .EXE files, there is no relocation info in the header.
Note: In bootfiles, SP is usually 801FFFF0h (ie. not 801FFF00h as in system.cnf). When SP is 0, the unmodified caller's stack is used. In most cases (except when manually calling DoExecute), the stack values in the exeheader seem to be ignored though (eg. replaced by the SYSTEM.CNF value).
The memfill region is zerofilled by a "relative" fast word-by-word fill (so address and size must be multiples of 4) (despite of the word-by-word filling, still it's SLOW because the memfill executes in uncached slow ROM).
The reserved region at [038h-04Bh] is internally used by the BIOS to memorize the caller's RA,SP,R30,R28,R16 registers (for some bizarre reason, this information is saved in the exe header, rather than on the caller's stack).
Additionally to the initial PC,R28,SP,R30 values that are contained in the header, two parameter values are passed to the executable (in R4 and R5 registers) (however, usually that values are simply R4=1 and R5=0).
Like normal functions, the executable can return control to the caller by jumping to the incoming RA address (provided that it hasn't destroyed the stack or other important memory locations, and that it has pushed/popped all registers) (returning works only for non-boot executables; if the boot executable returns to the BIOS, then the BIOS will simply lockup itself by calling the "SystemErrorBootOrDiskFailure" function.
The PSX uses the standard CDROM ISO9660 filesystem without any encryption (ie. you can put an original PSX CDROM into a DOS/Windows computer, and view the content of the files in text or hex editors without problems).
Надо отдохнуть. Там ещё ссылки на глифы же. Я, допустим, изменю глифы, так надо же чтобы глифы писались в нужном порядке. А я пока не знаю структуру этих ссылок, может и не зря сектор этот. Чем дальше, тем больше проблем. Как искать весь текст в игре? Все диалоговые окна, ладно, это потом.
Ты же понимаешь что лучше иметь портфолио, чем не иметь. Редко когда желаемое совпадает с действительностью, выстрелит в другом месте, может даже не в программировании. Но по любому ты ничего не теряешь, а только приобретаешь.
Меня больше напрягает не сложность это освоить, а то, что этого уровня недостаточно для больших достижений. Предел мечтаний большинства айтишников это попасть в кремневую долину и это многим удаётся. Даже индусам. А вот реверсеру с навыками даже чтобы пройти весь flare on всё равно сложно туда попасть. Было бы гораздо легче если бы существовал какой-нибудь достежимый порог пройдя который можно было бы получить офер на зарплату мечты.
Потому что работа реверсера в корне отличается от работы дева. Более того, около 90% вак на реверсера - это в ЛУЧШЕМ случае серая работа, а порой и черная.
обращаюсь к треду вообщем,не только к тебе
не понимаю вашего желания РАБотать
Вот ты весь такой супер гений,ищешь зиродеи,реверсишь все что запускается и не запускается,дебажишь ядро винды с закрытыми глазами и сука хочешь работать в обоссаной антивирусной конторе с анальными зондами в жопе чтобы потом сидеть ковырять сраную обфусцированную,виртуализированную и 100500 раз поморфленную малварь за не самые большие бабки
Еще за это место жопу надо рвать,какие-то конкурсы решать,ехать куда-то в жопу мира на собес
Вы ебанутые?
Двачую, 2.5 года РНН. Надеюсь продержаться 3.
Это удел лузеров
мимо зиродей хантер, не работающий на дядю и живущий на выплатах зиродиума на широкую ногу
Это назвается амбиции
854x640, 0:16
Стань тян, хлопай глазками на камеру, собирай тонны нефти и живи где хочешь.
Асм и реверс - онли хобби для себя, или там черех хекс сделать так чтобы у перса не было лука как в фар крае лол. Практической пользы от вашего асма то бишь обертки для си - нету. Лучше учить питон тогда или си шарп на крайняк. Да и порог вхождения - легче блять королеву британии выебать чем выучить асм рили. Я уже не говорю про диалекты. Кароче, скачал радар, написал хелло ворд на си, посмотрел оп коды в асме. И все. ДАльше не могу понять куда это применить.
Все так, но это уже завод, производство, те - это уже не рашка - порашка, и опять же - порог вхождения, либо с детства надо дрочить, либо акью должно быть выше 150 как минимум. В рашке - тем более что процы - это не ее конек, и при то что вся тех документация на ангельсом, и еще для каждого проца - куча разных регистров и прочая хуйня, с асмом рашке и реверсом - делать нечего вообще. КРоме хобби, или чернухи, но там трабла с трафиком уже.
Не все так печально. В срашке-парашке, конечно, с этим куда печальнее, чем в нормальных странах, но даже в парашке можно устроиться малварщиком в ту же лабораторию касперского. Да, нужно быть пиздатым, но это возможно.
Там же платят копейки ебанные,не?
слышал о 50-70к не на юниора,а на нормального вираналитика
В дс на эти деньги жить тяжело,только если у тебя своя хата мб
Ну и хватит тебе, ты же байтоеб, зачем тебе столько денег?
Деньги нужны тем, кто их тратит. Каждому по потребностями.
в парашке, равно как и во всей СНГ-помойке, только вебмакакой и работать, другие отрасли в айти просто мертвые. Хочешь получать много денег за байтоебство - тебе за бугор.
Интеграторы вроде гребут лопатой деньги и платят со старта как вебмакакам с опытом в год.
Есть онлайн игра есть для нее читы и есть один тип который релизит очень быстро - после обновления или патча самой игры... Быстро где то 3-4 часа край 5 часов...
Как так быстро? И почему другие так немогут ?
>Как так быстро? И почему другие так немогут ?
Потому что он в жопу ужаленный, очевидно, или ужаление в жопу имеет коммерческий интерес - кто первый чит тому и бабки.
Интересует как он быстро релизит с технической стороны...
Читы его постоянно не в детекте + встроенный hwid spoofer
Может есть какие то автоматизированные штуки на основе (SDK IDA PRO)по поиску оффсетов и рефлекшен классов объектов и прочего ...? А тоя в этом неособо сильно шарю как этот тип
Он может просто хорошо знать устройство взламываемой системы, думать на несколько шагов вперед, предсказывать какие дырки будут залатаны и иметь в запасе запасные эксплойты.
А я тут простенький радар не могу быстро зарелизить пиздос я долбоеб
Товарищ майор, спросите лучше ваших каллек из управления К - где они вам находят рабов что бы предлагать пойманым мамакиным какерам вместо срока под знаменем летучей мыши ГРУ взламывать американские сервера.
Для крутых ребят даже не чернуха приносит ебейшие бабосы. В зиродиуме фулл чейн на андроид стоит 2.5 ляма вечнозеленых. Да даже за RCE в ссаном роутере могут до 10к баксов заплатить. И это белая (на бумаге, по крайней мере) тема. Чернуха - умножай все суммы на 10-15, но там и шанс присесть очелом на бутылку, ибо система не любит махинаций с большими деньгами.
Интересный вопрос. Вот есть рце, я ее нашел, мне заплатили. Ок. Но на всех рце не хватит. Как быть? При условии еще что я еще ищу один, что я один самый умный, что кроме меня больше никто не ищет. Да и могут патч выпустить. Да можно еще присесть на бутыль и во время поиска. Так что это тоже такое - как хобби.
Это не белая работа
Зиродиум занимается незаконной деятельностью
Не продавайте им эксплойты,не подставляйте себя
Ну, во-первых, секьюрити - это гонка со всем миром. Кто первый успел, того и тапки. Во-вторых, есть огромное количество софта, часть которого очень сложно поддается анализу. Пример - baseband прошивка смартфонов, которая крутится на отдельном процессоре проприетарной архитектуры. Чтобы подебажить/пофаззить такую прошивку, нужно, помимо реверсинга кода прошивки, реверсить ISA и писать кастомный эмулятор. Чем геморнее цель, тем меньше вероятность что кто-либо ее качественно анализировал на предмет уязвимостей. Ну а самый веский аргумент, повторюсь, количество софта в мире. Даже если взять отдельные крупные проекты, например, гугл хром, где общая кодовая база ~90 млн. строк кода почти полностью на С++, в таких кодовых базах ВСЕГДА будут уязвимости. Либо давно существующие и незамеченные, либо новые. Это игра в кошки-мышки, вечная гонка.
>>1847851
Есть страны, где свод законов позволяет подогнать деятельность зиродиума под незаконную, но деятельность зиродиума не незаконная в глобальном смысле этого слова. Так что тут зависит от того где ты живешь.
Уже можно. У него также есть гуй - Cutter. Можно писать скрипты на пайтоне как в айде, есть отладчик, анализ кода при дизассемблировании, работает с огромным количеством архитектур (больше, чем топ версия айды), есть декомпиллятор от Гидры, переписанный на С++, которые выплевывает очень достойный декомпилированный код. Лично плюс для меня - с радаром удобно реверсить драйвера в Линуксе, чего не скажешь об айде, которая с этим не дружит от слова никак.
Вердикт - в чем-то айда лучше, в чем-то радак лучше, но сказать можно точно - айда не стоит своих денег. Лет 8-10 назад айда была безоговорочным топом, никакой другой дизассемблер не имел и 1/100 ее функционала, но сейчас картина несколько изменилась. Помимо бесплатного радара есть платные, но не такие дорогие, аналоги айды - binary ninja, hopper, которые уже дошли до определенного уровня пиздатости, чтобы быть либо вровень, либо лучше айды в определенных задачах.
В прошлых тредах приносили ссылку на возбужденное по 273 УК РФ дело против читодела - тут главное наличие желания у органов исполнительной власти.
Имхо, поиск/написание/продажа дыр/эксплоитов для кого угодно вполне укладывается в описание данной статьи.
Они типа пыневиков-вагнерков поварских чтоле? А то тут уже в штатах заочно банду сычей майоров ГРУ (которым вместо тюрячки предложили на ГРУ работать) осудили.
Реверс это почти всегда в лучшем случае серая работа,как сказали выше
Если не брезгуешь,то блек форумы всегда рады квалифицированным лоу левел кодерам
А какие направления перспективны? Что востребовано на черном рынке? Например, я все таки захотел этим занятся, найтие черные форумы тоже не проблема. Вопрос что им нужно? Просто продавать зиродеи?
Есть смысл в подобном чтобы прокачать навыки?
Блечерам интересны зиродеи,лпе например
Но не только,из реверса и низкоуровневнего так же например обходы антивирусов
а выхлоп? в рашке - никакого, только хобби. Если знаешь все, то нахуй вообще нужен этот реверс. Если знаешь пыху, яву и пистон - то ты уже бог. Может как-то оправдаетесь?
На вторую команду м.б. переход.
Этим из-за интереса занимаются.
вывод - не занимайся реверсом в рашке. Либо пиздуй в нормальные развитые страны, либо будь веб-макакой и мни себя богом, говнокодя на макака-скрипте.
>без длительных прелюдий
Не получится. Напиши что-то более или менее серьезное на С/С++, окунись с головой в кишки того, как работают ОС, выучи асм хотя бы одной архитектуры. Реверс не для новичков.
В качестве хобби развлекаюсь с микроконтроллерами. Кодинг занимается много свободного времени. На удовольствия, интересы, книги, фильмы, игры времени не хватает. Стоит ли дальше становиться задротом, или работа не смысл жизни и лучше быть крутым и умным лайфхакером, который всему самому лучшему в жизни обязан не трудолюбию и интеллекту, а лени, поиску легких путей, похуизму и гедонизму? Все равно сдохнем, но задрот сдохнет за пекой в луже мочи, а нормальный человек поживет себе в кайф, пропутешествует по миру и умрет среди своей семьи.
Если будешь ограничивать себя, деградируешь. Если будешь пробовать все что хочешь, всегда будет вариант вернуться к старому. Это беспроигрышный вариант.
А у меня новое хобби появилось - удалённо преподаю студентам раз в неделю. Каких-то заметных денег эта работа не приносит, но приятно делиться опытом. Забавно что студенты не знаю как я выгляжу, но хорошо знакомы со святым - видеотрасляцией полноэкранного режима.
Есть вкатившиеся в RE cо стороны? Как ощущения?
мб компилили с какой-нибудь отладкой и флагом сначала, а потом заменили флаг и такая хуйня высралась по итогу.
>>1837224 →
>>1840449 →
- Реверс ПО в коммерческих интересах - нарушение сopyright law (уголовное преследование, если речь о значительном ущербе + возможный аналог гражданского иска).
- Использование PoC для дыр в ПО/системах без одобрения владельца - нарушение CFAA (уголовное преследование/гражданский иск).
https://clinic.cyber.harvard.edu/files/2020/10/Security_Researchers_Guide-2.pdf
Так вот, чем её компилить-то? Чтобы ничего лишнего не было. Если компилить как библиотеку, много странной ерунды внутрь суётся
>Так вот, чем её компилить-то?
Вопрос неправильный.
Правильный вопрос - какой ключ на твоём компиляторе компилирует в ассемблер.
А тебе ли не похуй, что в библиотеке лишнее? Своя сошка/дллка + небольшой лоадер, впатченный в целевое приложение - это самый удобный способ.
>Я хочу написать программу, которая инжектит программу (не асм стаб, а целую программу со всеми импортами SOшек) в адресное пространство другой программы, насколько это заебисто?
Примерно так (только на ассемблере) (где pid - идентификатор процесса):
Ну и потребуется рут, в обязательном порядке.
Для каждой архитектуры свои заморочки + есть вероятность соснуть тунца с ASLR
#include <sys/ptrace.h>
#include <stdio.h>
char file[64];
sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);
waitpid(pid, NULL, 0);
off_t addr = ...; // target process address
pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);
ptrace(PTRACE_DETACH, pid, 0, 0);
>Я хочу написать программу, которая инжектит программу (не асм стаб, а целую программу со всеми импортами SOшек) в адресное пространство другой программы, насколько это заебисто?
Примерно так (только на ассемблере) (где pid - идентификатор процесса):
Ну и потребуется рут, в обязательном порядке.
Для каждой архитектуры свои заморочки + есть вероятность соснуть тунца с ASLR
#include <sys/ptrace.h>
#include <stdio.h>
char file[64];
sprintf(file, "/proc/%ld/mem", (long)pid);
int fd = open(file, O_RDWR);
ptrace(PTRACE_ATTACH, pid, 0, 0);
waitpid(pid, NULL, 0);
off_t addr = ...; // target process address
pread(fd, &value, sizeof(value), addr);
// or
pwrite(fd, &value, sizeof(value), addr);
ptrace(PTRACE_DETACH, pid, 0, 0);
бля, ну я же написал - не асм стаб) Это и я знаю, я говорю про инжект полноценной программы в формате ELF, которая импортит СОшки и которую можно просто на С написать, не дроча асм стабы. Асм стабы хороши для инжекта простого кода, если же код сложный и требует работу аллокатора памяти, например, то правила несколько меняются.
Да вы заебали со своей модой. Пишите на понятном, человеческом языке задачу, будут вам ответы.(может и сами поймёте в процессе формулирования). Написал высокоуровневый запрос, получил высокоуровневый ответ. Всё так.
другой кун
Тебе нужно отобразить код из файла в память, а потом из программы сделать джамп на этот код?
Не стоит, поймают менты когда в падике закладку будешь пытаться найти и придется несколько лет дизассемблировать только свой пердак после того как его твои сокамерники попользуют.
Да там сроки небольшие по первоходу и маленькому весу так что норм! скорее всего условно будет! он реально про наркотики я чё то не понимаю???
clown
При чём здесь шапка, если очевидно, что наебала его шлюха соседка?
Python?
Вопрос вот в чём - я может туплю, но почему так мало регистров в в процессоре, если транзистров в нём миллиарды? Если это (транзисторы и регистры) разные вещи, то почему в кэше L1 указано 100+КБ, а всех вместе взятых регистров на байт эдак 10-20. Или регистрами завутся множество однотипных регистров вроде:
Поместить (MOV) в один из н-ых тысяч существующих регистров класса EAX системный вызов 1.
Надеюсь написал не слишком бессвязно.
Я не знаю.
Если зеленый-проходи мимо, если по чесноку такой дебич -
http://microelectronica.pro/wp-content/uploads/books/digital-design-and-computer-architecture-russian-translation.pdf
>если по чесноку такой дебич
За книгу спасибо, но нахуя её кидать если я по твоему мнению это всё от рождения знать должен7
НОРМ если я НУБ чи Не чи Да?
На мипсе много. Своими словами - разная философия к подходу написания программ, мипс более низкоуровневый чем x86 как мне показалось, сам проц более вовлечен в выполнение программы. К примеру есть регистр zero, который всегда содержит 0, программисту уже не нужно думать где взять 0 и т. д. И лучше подходит для одних задач. x86 как бы для всех задач, и 4 общих регистра должно хватать для вычислений, которые должен делать прогер.
Не знаю как правильно объянить, тупой. Как то так, а может нет.
Или вот так:
если бы x86 использовался только для написания офисных программ, к примеру, то к нему бы прикрутили доп,регистры для облегчения работы программиста в написании офисных программ. Никто же не знает как будет использоваться x86. Вот и сделали 4 общих регистра.
Правильно я понимаю?
Нет, вопрос скорее в том, являются ли регистры в терминологии ассемблера физическими регистрами процессора. Если нет, то какое реальное, физическое кол-во регистров на чипе.
Архитектурных регистров (которые видит программист) мало, потому что команда имеет ограниченную длину. А физических регистров сейчас делают 160 и больше, но не очень много, потому что иначе доступ к ним замедлится.
Получается если программист использует самые распространнённые регистры, то обработа данных выходит 5-10 (64 бита одного регистра * 8) байт за такт процессора?
>К примеру есть регистр zero, который всегда содержит 0, , программисту уже не нужно думать где взять 0
xor rax, rax
Надо где-то сохранять rax
bgt v0,12345678,label # если регистр 2 больше 12345678, иди на метку
>Архитектурных регистров (которые видит программист) мало, потому что команда имеет ограниченную длину
Поясни
В х64 давно не 4 регистра, там есть и r8-r15 и XMM0–XMM7
Как бы абсолютные адреса вообще не нужны и даже вредны.
Вот моей железке нет ни одной инструкции с абсолютным адресом.
Что для вкатывания в ASM читать то, из шапки честно говоря смутно понял, так-как первыми пунктами идёт информация по Реверсу.
Пойму ли я эту книгу без знаний в области ASM?
Подскажите книги по самому ASM тогда в пару к этой:
Денис Юричев: "Reverse Engineering для начинающих"
в самой книге Юричева написано следующее
Q: Что необходимо знать перед чтением книги?
A: Желательно иметь базовое понимание Си/Си++.
Насколько это критично? я не знаю нихуя
Не знаю, стоит начать с этого?
Архитектуру пока не знаю какую, но наверное можно пока без этого что-то начать учить?
Или это тема только для хороших мальчиков которые в школе были золотками и умничками?..остальным дорога в питон и хтмл сиэсэс?)
Стоит начать с двоичной и логических элементов, чтобы знать, как камплюктер работает.
https://ru.wikipedia.org/wiki/Электричество
https://ru.wikipedia.org/wiki/Закон_Ома
https://ru.wikipedia.org/wiki/Резистор
https://ru.wikipedia.org/wiki/Диод
https://ru.wikipedia.org/wiki/Транзистор
https://ru.wikipedia.org/wiki/Синусоида
https://ru.wikipedia.org/wiki/Модуляция
https://ru.wikipedia.org/wiki/Ряд_Фурье
https://ru.wikipedia.org/wiki/Двоичная_система_счисления
https://ru.wikipedia.org/wiki/Логические_элементы
Пока это, я сегодня добрый.
Надо начинать с первой ссылки. Но самое главное забыл. Это надо читать в первую очередь:
https://ru.wikipedia.org/wiki/Абстрактное_мышление
Если не получается, то и не стоит начинать, а то ку-ку кто в домике.
Это лишние сущности, а вот элементы надо знать, чтобы не было удивления при виде каких-нить флажков переноса и четности.
Не смотрю спойлеры, одними спойлерами пишут только бомбящие недоумки, которые начитались книжек и не знают куда это всё теперь девать.
598x360, 4:17
Привлёк тем, что я работаю с терминалами сбора данных, с достаточно древними системами такими как windows c.e 5.0, 6.0
И многие вещи ещё древнее, иногда бывают жесткие проблемы с драйверами и прочей поддержкой этого оборудования с современными системами
А самое главное, это то, что есть теоретическая и практическая возможность миграции с например windows mobile 6.5 на windows c.e 6.0 и просят на рынке за готовую прошивку от 30к зелени.
Куча моментов которые требуют допиливания с точки зрения тех же драйверов
И меня это так заебало, что я решил костьми лечь но лучше понимать то с чем имею дело
В идеале нужно С знать, но и ассемблер и реверс нужен тоже, это со слов китайских коллег.
Поэтому буду выкатываться сюда потихоньку, сейчас мне 27, цель к 30 хотя бы понимать на уровне начинающего, то с чем работаю.
В идеале самому устранять вещи которые даже официалы отказываются делать потому что политику EOL EOS никто не отменял
ТСД это тема. Как искать таких клиентов? Там у юзверей свои законы - у нас есть 1с погромист который всё сделает. Как доносить таким людям что можно забесплатно и лучше?
По твоему вопросу, просто тупая банальная логика. Научись понимать логику в первозданном виде так сказать. И ковыряй потихоньку, интерес должен сам появиться, там одно цепанёт тут другое. Тут все мучаются 100%, нет тех кто сразу всё знает как решить. Ну будешь ты знать как это работает, и что? С другой стороны то тоже не дураки сидят, закодили так чтобы хуй кто догадался, опять задача которую надо разгадывать. Так начинай разгадывать прямо сейчас, легче не станет.
Анон, я не жду когда станет легче, и ковырять это собираюсь не из-за какой-то выгоды особой, есть гораздо более лёгкие и денежные пути
Это дело принципа, я всегда с техникой имел дело по работе, но никогда не разбирался в этом на глубинном уровне а ползал лишь по верхам, поэтому хочу понять как это устроено, пусть это будет что-то вроде хобби.
Но для меня важно понимать одну вещь - то что я учу, это то что мне нужно, ибо времени не так у меня много что бы ходить по кругу и заниматься далекими от этой тематики делами.
Всем спасибо кто советовал и кидал какие-то ссылки.
Анон который кидал про компоненты электронные я надеюсь ты пошутил, потому что мне пока тяжело понять какое это отношение имеет к делу.,,это я и так знаю, потому что паять умею и чинить элементарные электрические цепи тоже
>Анон который кидал про компоненты электронные я надеюсь ты пошутил, потому что мне пока тяжело понять какое это отношение имеет к делу
Прямое. Асм это системное программирование.
Это логично. Надо просто понимать что логично. Есть у тебя какой0то вопрос, надо думать как бы это сделали другие логически. Вот тебе и все секреты ассемблера.
Смотреть интервью какое-то с каким-то кодером, говорят asm всегда будет пользоваться спросом и мол вообще мало специалистов в этой теме
Правда или поклёп и нужны только джава бояре
>говорят asm всегда будет пользоваться спросом
Правда, всегда нужен тот кто будет ремонтировать твоего домашнего робота. Ну и если у робота будет ИИ то он скорее убъёт хозяина чем того кто будет его "лечить".
>Анон который кидал про компоненты электронные я надеюсь надеюсь ты пошутил
Схуяли?
Книга была скинута в ответ на вполне конкретный вопрос:
> Вопрос вот в чём - я может туплю, но почему так мало регистров в в процессоре, если транзистров в нём миллиарды?
> Если это (транзисторы и регистры) разные вещи, то почему в кэше L1 указано 100+КБ, а всех вместе взятых регистров на байт эдак 10-20. [/b]Или регистрами завутся множество однотипных регистров вроде:
>Смотреть интервью какое-то с каким-то кодером, говорят asm всегда будет пользоваться спросом и мол вообще мало специалистов в этой теме
Да, всегда, когда баблом и кекогерцами за бабло проблему производительности не залить, все алгоритмические оптимизации использованы, то в джело вступает АСМ.
Или когда железку оптимизируют по стоимости - скажем делают бюджетную стиралку и прошивка на языке высокого уровня при той же функциональности потребует более мощного МК и, как следствие, увеличения себестоимости производства.
А так как стиралка у нас для бюджет, а не премиум, то это недопустимо - быдло должно иметь возможность после всех накруток её купить, а дорогой мк сделает ее неконкурентоспособной в нише бюджетных стиралок - конкуренты за такую же цену продают стиралку уже умеющую в глубокий минет помимо 100500 программ стирки.
> Что, страшно? А ведь предупреждали.
Страшно на самом деле то что управлять всем этим будет не бездушная машина, а вполне конкретные охуевщие кожаные мешки-успешнобляди вроде брина, цукера и прочих мамутов, пынь и сечиных поменьше.
Да нет. Предположим коронавирус искусственно выпустили в открытый мир. Сильно сомневаюсь что это было по указке винни или его подчинённых. Кто-то хотел ёбнуть всех этих охуевших старпёров без зачатков разума, чтобы не мешали своими указаниями и управлениями.
Как минимум угроза, короче.
>Предположим коронавирус искусственно выпустили в открытый мир.
Есть маза, начнем с того, что корона - это не единственный вирус, который выпустили. И весь этот маскосрач затеян сугубо с целью скрыть этот факт - что вирусов выпустили так то дохуя.
Куча людей конкретно переболевших делала анализ на антитела по короне и нихуя.
совершенно верно, подтверждаю.
И русская прошивка мало кого беспокоит а вот некоторые другие вещи очень востребованы...и стоит это космических бабок.
Поэтому и решил вкатываться в эту тему.
Достаточно хорошо знаю этот рынок, и совершенно точно могу сказать что существовать он будет еще минимум лет 10, конкретно у нас в СНГ
https://www.youtube.com/watch?v=yDh6z7pKa_k&ab_channel=TimcoreМихаилТарасов
ps - анон которые выше спрашивал с чего вкатываться с 0
Сложно взять и начать делать хоть что-то.
Можно подключить виндовскую функцию MapViewOfFile, проблема решена.
А что если её просто нет на устройстве. Как делать поиск?
Вот тут и нужны низкоуровневая логика, чтобы понять тонкости поиска и написать самый оптимальный код.
Может ли быть такое, что число, которое отрисовывается как часть интерфейса, не хранится в памяти, а вычисляется при каждой отрисовке?
Чтобы вызвать какую-то функцию нужно подгадать место и инжектнуть код? Особенно в тех случаях, когда функция меняет что-то извне.
Может. Число это может быть просто спрайтом, который нарисован заранее с тенями, фоном, цветом и т.д. А игра просто отрисовывает этот спрайт.
>Чтобы вызвать какую-то функцию нужно подгадать место и инжектнуть код? Особенно в тех случаях, когда функция меняет что-то извне.
Нихуя не понял. Тебе нужно поставить хук/брейкпоинт перед тем как отрисуется твоя цифра. Потом раскручивать почему она отрисовалась именно так.
Тут два случая:
1. Предположим, что игра высчитывает число построенных лесопилок каждый кадр - как узнать вне игры это число? На первый взгляд тут только чтение и можно воссоздать функцию, без необходимости инжектить код.
2. Нужно как-то дать понять игре, что игрок хочет купить или продать ресурс. В идеале это была бы внедренная в игровой цикл проверка и вызов функции "продать/купить" при необходимости. Но можно ли обойтись без инжекта?
Я ебу? Твоя игра, ты и разбирайся.
> А вот когда написал прогу и запускаешь её в отладчике, и молишься чтобы она заработала с первого раза, потому что у тебя уже нет сил, полное истощение.
До чего знакомое состояние...
Пуджа.
Нужно все серии просмотреть
Насколько я знаю, DEP устанавливается компилятором. Чем код компилишь? В GCC можно передать аргумент -z execstack и DEP отрубается
https://yurichev.com/writings/UAL-RU.pdf
Компилятор просто размечает секции как не исполняемые. Я же DEP отключаю на уровне системы, но это нихуя ни на что не влияет. По идее в системе вообще не должно быть не исполняемых страниц памяти.
Возможно это зависит от операционной системы (в чем я сомневаюсь), но в Линуксе DEP (он же NX) - это митигация НЕ на уровне системы, а на уровне компилятора. Пример митигации, которая действует на уровне всей системы - это ASLR. Почти на 100% уверен, что на винде та же песня. Каким компилятором пользуешься? Просто поищи флаги/опции по отключению разномастных фич, среди которых должен быть DEP (в gcc это флаг -z execstack)
По идее написано, что System and app-level https://docs.microsoft.com/ru-ru/windows/security/threat-protection/microsoft-defender-atp/customize-exploit-protection, но там же написано и про то, что это только для x86. Про компилятор я знаю, конечно если система изначально пометит страницу как RWX то все работать будет, было интересно попробовать исполнить код на странице с RW, но с выключенным DEP.
А вот так. Яхз как работает аппаратная поддержка, но в том же Линуксе можно отрубить NX через компиль, либо же в рантайме сделать стэк/кучу исполняемыми через системный вызов mprotect.
>>1870801
>попробовать исполнить код на странице с RW, но с выключенным DEP.
Нет. Policy данной митигации таков - любая страница виртуальной памяти не может быть одновременно исполняемой и разрешенной к записи (либо то, либо другое, но не вместе). Именно поэтому эта технология еще называется W^X, если знаешь таблицу истинности операции XOR, то поймешь в чем прикол.
Имея страницу RW, ты не сможешь исполнить код в ней, банально потому, что у нее нет прав на исполнение. Попытка сделать это просто сгенерирует сегфолт и программа крашнется. Погугли насчет изменения прав страниц виртуальной памяти в рантайме, хз че там по винде, в Линуксе это сисколл mprotect.
>Денис Юричев: "Reverse Engineering для начинающих"- бесплатная современная книга на русском языке. К прочтению вкатывающимся и прочим ньюфагам обязательна!
>Прямая ссылка - >https://yurichev.org/b564f46f1c207b2dbc84a2bd4a41ed4c/
Мало того что из треда в тред кочует дохлая ссылка. Так теперь она и не бесплатная. Есть у нас тут патроны Юричева?
>Денис Юричев: "Reverse Engineering для начинающих"
http://libgen.li/search.php?req=Денис+Юричев:+"Reverse+Engineering+для+начинающих"&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def
Недавно только закрылся, на днях эту ссылку >>1870420 смотрел.
>>1872765
На либгене древности. Тут версия на сентябрь этого года - https://web.archive.org/web/20200916091349/https://yurichev.com/writings/UAL-EN.pdf
https://web.archive.org/web/20200916091349/https://yurichev.com/writings/UAL-RU.pdf
Это конечно Юричева личное дело, что делать с книгой. Но сам подход с гнильцой, разрекламить книгу под CreativeCommons, а потом начать продажи (пусть идет в пешее эротическое, мамкин предприниматель).
Сори, еще начало ноября есть на ангельском:
http://web.archive.org/web/20201111194549/https://yurichev.com/writings/UAL-EN.pdf
в либген такое точно не стоит лить, так как постоянно обновляется.
>>1873108
в вебархиве чекал, но какие то не те ссылки. Не нашло. Благодарю.
>личное дело
да всякое на самом деле бывает. Патреон так то вполне себе неплохой вариант, но вот полностью закрывать и убирать старые версии. грусть :( может хочет проверить интересно ли вообще кому то или он зря сидит дописывает, столько лет как никак. (патрон как раз будет показатель заинтересованности, но пока там раз два и всё подписчиков)
>На либгене древности.
>http://libgen.gs/ads.php?md5=d0b446c55976b63c8597db11f7772aa6
>Версия этого текста (31 мая 2019 г.).
>https://web.archive.org/web/20200916091349/https://yurichev.com/writings/UAL-RU.pdf
>Версия этого текста (25 июля 2018 г.).
https://wasm.in/resources/reverse-engineering-dlja-nachinajuschix.201/
>Версия этого текста (4 октября 2019 г.).
поищу потом. может дома где нибудь завалялась версия посвежее
Изначально нет. Но в некоторых случаях возможно. Зависит от кода и от компилятора.
А лицензию то вы читали? или только видите слово "комунити" ?)
По двухмерным массивам самое то бегать. И не только.
Константа часто используется как смещение поля внутри структуры.
x86 кончено говно, но адресация у неё красивая и удобная.
Да,твою маму всем тредом
Работаю с emu8086.
Нашел код, который складывает два числа, и проверяет результат. Если сумма равна 0 — выводится одно сообщение, если нет — другое.
start:
mov eax, 123
mov ebx, -90
add eax, ebx
test eax, eax
jz zero
invoke MessageBox, 0, chr$("В eax не 0!"), chr$("Info"), 0
jmp lexit
zero:
invoke MessageBox, 0, chr$("В eax 0!"), chr$("Info"), 0
lexit:
invoke ExitProcess, 0
end start
Однако реализовать в emu его почемут не получается. Пробовал и в com, и в exe, и в bin - везде одно и то же.
Сначала ругается на eax, ebx. Если их заменить, выдает другую ошибку - о том, что
invoke MessageBox, 0, chr$("В eax не 0!"), chr$("Info"), 0
invoke MessageBox, 0, chr$("В eax 0!"), chr$("Info"), 0
не верны.
Как мне эту прогу правильно для 8086 написать?
>ты пытаешься скомпилить код с masm макросами. Все эти invoke, MessageBox, ExitProcess это макросы над винапи. Нагугли другой пример
mov ah, 0x13
mov bl, [foreground]
mov al, 1
mov cx, [msg_length]
mov dh, [msg_y]
mov dl, [msg_x]
int 0x10
mov bp, msg
Ты про это?
mov ah, 0x13
mov bl, [foreground]
mov al, 1
mov cx, [msg_length]
mov dh, [msg_y]
mov dl, [msg_x]
int 0x10
mov bp, msg
Куда это вписывать? После моего кода, или в дату, или вместо чего-то?
Вместо кода вывода на экран.
Только mov bp, msg подними до вызова прерывания. В регистр BP помешается адрес выводимой строки.
Координаты и цвет задай константами.
msg_lenght посчитай заранее.
Приведи обсе строки к одной длине.
Я пишу API для инлайн хукинга для никсов.
Программа, в целом, приаттачивается к процессу, мапит немного RWX памяти и пишет туда код, который должен исполняться при триггере хука. Казалось бы, это можно решить куда более легким способом - просто заинжектить СОшку с кодом агента. Проблема в том, что это не работает на статически слинкованных бинарях.
У меня два стула - писать код агента на ассемблере, что больно, но возможно, или же изъебнуться, заинжектив в процесс целый бинарь, прыгая каждый раз в адрес ммапа + оффсет до функции агента, но это попахивает хуями. Что посоветуете?
push cs
pop ds
lea si, адрес строки с атрибутами
push 0b800h
pop es
lea di, 0
mov cx, 20
renz movsw
?
Есть такой вот лог файл: https://hastebin.com/nuxunofumu
Из него вытащил само задание: https://hastebin.com/qikirofoli
НоооОО! Код зашифрован. Я насколько понял - пароль 3 символа UTF-8!!!!!! Те 100к в 3 степени вариантов? Это легально?
Помню, 3 года назад был такой крякми, там в пароле был смайлик из юникода, но сейчас уже не могу найти тот врайтап. Помогите с паролем(((((
Есть идея проверить utf-8 рендж у соли и прочих base64 строк чтоб на основе этой гадости генерить варинаты под брут пароля. Но это низкобальное задание, вряд ли там настолько все сложно.
Надеюсь на силу легиона!!!!!!!!1 Или мб кто врайтам трехлетней давтности вспомнит и найдет.....
вот новые:
https://ghostbin.co/paste/73dey
https://ghostbin.co/paste/oczmz
https://justpaste.me/ngK8
https://justpaste.me/ngMO
У тебя уже шиза развилась на фоне инжекта.
Ситуация такова: нужно вычислить размер бинарника который получится (ну, это просто - x equ $ в конце файла) и разделить на 16, так как это вычисляется адрес сегмента.
Код схематично выглядит так:
y equ (x + 1)/ 16
...
x equ $
Выдает ошибку division operator may only be applied to scalar values.
Зачем нужен регистр cs, когда память уже давно не сегментирована в виду использования модели виртуальной памяти? Это типа просто легаси и все?
тяжело тебе будет, если даже шапку прочитать не можешь.
Вопрос еще актуален, буду благодарен если кто-то ответит.
Профессора математики получают меньше, чем прогеры.
Тут вопрос не в уме или таланте, а в рыночке.
Это первое.
Второе.
Молодежь не понимает, что мир не работает на основе меритократии.
Реверс в 95% случаев нелегален, поэтому такие вакансии попросту не афишируются. Но корпоративный шпионаж и хакерство не являются редкостью в ходе рыночной конкуренции, поэтому реверсеры нужны еще как.
Более того, уголовно наказуемая, 272 ук рф. Помнится по ней даже в мацкве мусора палки на студентах делали в конце нулевых, условку за прошивку PSP.
>Неправомерный доступ к охраняемой законом компьютерной информации
>Информация хранится на твоем пека
Проиграл.
xorq <s>, <s>
movl $4, <c>
L0:
cmp <n>, <c>
jg vyhodym_eez_cycla
movq <c>, <a>
subq $4, <a>
mulq <c>, <a>
addq <a>, <s>
inc <c>
jmp L0
лол
Причиной форка разработчики называют стресс и неуважение, которое они испытывали при работе в сообществе сложившемся вокруг radare2, и для дальнейшего развития в сторону ценностей, которых они придерживаются, 8 декабря был создан форк и написан CoC.
Основная команда Cutter (это GUI для radare2), которая также была частью основной команды radare2, покинула radare2 и стала соучредителем Rizin. После этого Cutter переключается с radare2 на Rizin в качестве бэкэнда.
https://rizin.re/
Для x86-64, без проверки условия на n.
MOVZX RCI , <n>
XOR RDI , RDI
MOVZX RCX , 4
M1:
MOV RBX , RCX
SHL RBX , 2
MOV RAX , RCX
MUL RCX
SUB RAX , RBX
ADD RDI , RAX
INC RCX
CMP RCX , RCI
JNZ M1
; RESULT IN RDI
Толи JNA, вроде. Короче, я не запускал. Проверь сам.
говно без задач, зачем это, если есть r2 с точно таким же функционалом, который тоже продолжает развиваться? А для гуя есть каттер (и похуй какой там бэкэнд, будь то r2, будь то rizin). Имхо, все эти форки от обиженок - бич опенсорс проектов в целом.
Ну если эти форкнувшие граждане действительно core developer team, то радар и потонуть может. А так в принципе тоже все равно, как оно будет называться, лишь бы пилили понемногу.
Листал их анонс вдоль и поперек, так и не понял, кто и как их там угнетал в r2.
Если у тебя не легаси говнецо вместо компа, то там уже в помине нет MBR, ибо он не совместим с UEFI. Там GPT вместо MBR.
если у него не легаси говнецо вместо компа то там виртуальные машины и интерпретируемые яп по тянет
Да и хуй с ним. Им кто то пользуется вообще? Я думаю тройка (ида, гидра, бинджа) удовлетворят потребности любого пользователя, прежде чем он узнает о радаре.
Cutter гуй для Radare использует декомпилер от гидры, но написан на Qt. Отсутствие жирной Java для кого-то плюс.
Ну а как тогда прочитать данные с диска? Как я понял в защищенном режиме нет прерываний биоса
-мимосикрок
https://github.com/mytechnotalent/Reverse-Engineering-Tutorial
Согласен. По моему мнению это лучший из тредов на программаче: по крайней мере, тут люди занимаются тем, что им на самом деле интересно, не думая о деньгах.
640x360, 2:24
Ешё бы результаты труда увидеть. А то одни вопросы и книжки почитать. А мне стимул нужен, где его взять, все на хайпе читают чёто. Вот к примеру чел с mbr - сделай и всё, покажи как надо делать. Это же информация и микропроцессор - это полная свобода действий, делай всё что душе угодно, в этом заложена вся суть асма. Давайте в 2021-ом году переломим этот тренд и будут результаты.
С НОВЫМ ГОДОМ!!
1280x720, 1:18
Просто захотел сделать и сделал, теперь выёбываюсь.
Бля, пацаны, а есть какой веб фреймворк или еще что типа того? Чет ваще нихуя не понятно, какие-то edx, щас туториал открыл а тут текст какой-то пиздец ваще нихуя не понятно регистры там чета. Есть какие либы, чтобы можно сразу было программы писать, а не ебаться со всей этой хуйней, слышал асемблеры ваши быстрые, думаю для своего пхп проекта применить, но чет жесть. Я даже мейк вон написал, автоматизация производства, так сказать. А коассы ваще можно создать или это ФП язык типа джаваскрипта?
> выстрел в голову высокоуровневым винтикам
А на другой винде запустится, а на amd? А на линуксе?
> выстрел в голову высокоуровневым винтикам
Так у восокоуровневых нигде не запуститься, не могут написать код.)))))
>тся
Не могут физически и ментально.
Не, наврятли. Задача найти последовательность 12XX56XX9, где XX может быть любым значением. Пусть пробуют, я за движ науки.
> Задача найти последовательность 12XX56XX9, где XX может быть любым значением
12 + rand(0,99) + 56 + rand(0,99) + 9 ))))00
По каким принципам найти то? Их тут всего тыща будет, лол. Чтение файлов в raw режиме есть почти в любом высокоуровневом языке, даже в пхп ты можешь побайтно читать, не говоря уже о всяких плюсах, голэнгах и т.д.
Покажи
Ну вот тебе задана строка, к примеру 1000 байт. Ты знаешь что в этой строке 528 байт - 1D. 545 байт - АА. Начинается строка с FF.
Надо найти все строки.
> Надо найти все строки.
Так какие строки найти то надо? Я не байтоеб и сходу не пикаю что ты конкретно хочешь
> Ты знаешь что в этой строке 528 байт - 1D. 545 байт - АА. Начинается строка с FF.
Это что значит? 1D1D1D1DAAAAAA?
Это значит что нужно найти все строки в 1000 байт, которые начинаются с FF, в которой 528 байт 1D, и 545 байт АА. Всё что между ними игнорируем.
Ну я тышу загнул конечно, но хотябы строку в 10 байт.
> Это значит что нужно найти все строки в 1000 байт, которые начинаются с FF
Еще раз - что за строки. Ну начинается она с FF, а длина какая должна быть? Я могу тебе от FF прям до конца файла отхуярить, вот тебе и одна строка.
> в которой 528 байт 1D, и 545 байт АА
Ты просто повторил, что написал до этого. Я просил пояснить, что это значит. 100 байт, 528+545 из которых - тупо мусор? Верно? А найти нужно конкретно "FF"?
Потому что не сможешь, так и говори. Твои рандомы в формуле как минимум ушатают производительность.
>12 + rand(0,99) + 56 + rand(0,99) + 9
Это вообще не работает. Чё вы тут мне голову пудрите, у меня новый год уже.
Делай блять, дави капиталистов, не играй в их конкурсы а делай что можешь, то и делай.
Да я сам капиталист
У меня проблема. Вот тут>>1840188 я писал что надо сделать перерыв. Сделал. Теперь я не помню на чём остановился, начал смотреть свои черновики, а там чёрт ногу сломит. Уже несколько раз пытался начать(хотел до НГ сделать что-нибудь). Думал что это из-за бухла не идёт ничего, две недели не бухал, интерес так и не появился. После НГ попробую опять.
На пике черновик, я ебу, мне кажется что это кто-то другой делал и писал.
Да особой разницы то нет.
Я какбы хотел описать проблему, потому что считаю её объективной. Высокоуровневые напишут комментов к своим 100 строкам кода и норм, а тут.. вот я весь механизм отрисовки текста уже вскрыл, но я не помню что и где именно находится, все нужные джампы там и т.д. Комментить каждое своё действие.. ну такое, ещё больше работы получается. Надо как-то решить эту проблему, может перед паузой писать типа письма себе, но это уже шизой попахивает.
Что написать то? Там байтоёбство в чистом виде. Прогу которая будет менять байты на те что нужно? Зачем тут си?
http://vsokovikov.narod.ru/New_MSDN_API/Menage_files/fn_mapviewoffile.htm
Если что. Вот две функции, вызываешь их, и в памяти меняешь что нужно через mov eax и т.д. Очень просто.
640x360, 2:11
Можете кратко пояснить ассемблеры в вакууме? Начал изучать вяленько для саморазвития и понял, что нужно очень глубоко шарить за регистры и вообще за железо, немного прихуел (хотя не пхп макака, лол).
Объясните кратко как из этих команд всех получается какое-то ПО, типа суть в том, чтобы тупо гонять инфу по регистрам и памяти и джампать туда сюда?
>как из этих команд всех получается какое-то ПО
Бесконечные наслоения абстракций поверх бесконечных уровней легаси абстракций
Да я не про это. Я именно про ПО, которое на асме хуярят, его принципы работы. Например как мелкие модули к сям и в таком роде.
Вызвал системный вызов (если прога в юзерспейсе работает) - вылезло окно, или вывелась строка на экран. А если это операционная система - обратилась к железу, например, видеокарте или монитору, и вывела на экран пиксели. Естественно, все это вызывается в зависимости от выполнения тех или иных условий, с определенным количеством аргументов и так далее.
>>1896909
Да, те же ощущения. До того, как прочитал Таненбаума, даже не представлял, какое важное знание мог бы упустить...
> Ну и мой коронный выстрел в голову высокоуровневым винтикам
Мне почему-то кажется, что там тупое сравнение, даже не КМП, и уж тем более не Рабин-Карп. Потому что именно в этом вся суть любителей асма - кричать о быстродействии, а реализовывать наиболее простой (и тормозной) алгоритм из существующих.
> юзерспейс
А я могу в кернеле ебануть ошибку или отработать конфликтный код, чтобы система крашнулась?
Файл 700мб, менее 0,1 секунды нашлись все строки. Я же специально последнее смещение заснял.
Чел, это не круто.
Да, например, вызвать HardFault.
Переведу, чуваки из 2011-го, переведу.
>регистры NASM'a
Чего?
>Нафиг нам RAM? Нам ведь регистров завсегда хватит.
Ты прочитай про General-Purpose Registers в ISA-мануале.
У тебя по крайней мере не задействованы EDX, ESI, EDI.
> Чего?
Регистры процессора, которые доступны к взаимодействию через среду NASM'a. Что не понятно?
> Ты прочитай про General-Purpose Registers в ISA-мануале.
> У тебя по крайней мере не задействованы EDX, ESI, EDI.
Я когда гуглил где-то в табличке с этими регистрами прочитал, что они Pointer registers, я нихуя не понял, но подумал, что их трогать не стоит. Потом в каком-то краш курсе увидел, что их как раз и заюзали для вывода текста в цикле. А почему нельзя в .bss хранить все это?
> Самое простое - в стеке, push pop
Пиздос
Что пиздос? Для твоей задачи самое оптимальное решение.
Ну хули, кури кучу манов чтобы хеллоу ворлд сделать.
бля...
Почему до этого не додумались капиталисты и не убили на корню весь реверс-инжиниринг?
Что мешает сдампить расшифрованую программу из памяти, или извлечь ключ из ядра ОС?
шифрованые бинарники делают уже лет как 30 минимум. В основном конечно вирусы, но и шаровары этим промышляют. Вроде как старые версии скайпа (до покупки майкрософтом) были шифрованые
А, ну да, точно, я тупанул. На пекарнях теряется смысл по той причине, что загрузчик, бивис, ОС и софт спокойно меняется и не бывает вшитым. Зато во всяких электронных устройствах такое практикуется: загрузчик вшит намертво, прошивка сжимается, и расжатие загрузчиком происходит в самом устройстве после закачки в него.
а на рутрекере IDA без зондов поставляется?
Нахуй у ваших ассемблеров такой разный синтаксис? В одном ебаные проценты свистоперделки, в другом dest и src местами поменяны, еб твою мать. Не могли сделать единый стандарт, красноглазые?
Пидора ответ
С добрым утром, в соснулях для защиты от пиратства такая хуета уже 15 лет:
https://www.galu.info/pliki/591-paper_xbox.pdf
Why Does MS Secure Xbox 360:
-Copied Games
-Unlicensed Games
-Cheating
-Linux
-Homebrew
Xbox Checks:
System Startup<-check-> Windows (in ROM)<-check-> Game (DVD)
Savegame Check:
System Startup<-hacked-> Windows (in ROM)<-check->Game<-no check->Data (Gamesaves)
DVD Drive fail:
the drive firmware is not protected
Hypervisor:
-Manages page tables and TLB
-W^X Enforced everywhere
-Games cant make data executable
-Games cant chainload code
Memory Hashing infoinfo:
-for every cache line on RAM
-on write: store hash in CPU-internal RAM
-verify on read
-DMA into hashed memory will make CPU panic on next read
-must be turned off for pages that require DMA
-very effective
-needs lot of CPU- internal RAM
cache line: 128 bytes
secure hash: 16 bytes
-only feasible for -1 MB of external RAM
-can only protect HV
Memory Encryption:
-Encrypt/decrypt memory on cache fill/writeback
-must be turned off for pages that require DMA
-DMA will jsut destroy the contents
*can be used to destroy e.q. blacklists
-Not as effective as hashing
-protects HV and game code
-also protection against dumping HV, game code, HD-DVD keys, thought DMA
Random number generator:
-encryption should not be predictable
-random number generator inside CPU
-ecryption key different on every boot
-prevent DMA replay
EFUSES!
-DISABLE JTAG
-unique per-box key
-flash crypto
-DVD pairing
Secure BOOT:
-32 KB internal ROM
-64 KB internal RAM
-Modified SHA-I , RC4
Hypervisor:
-128 KB of code
-manages page tables
--enforces W^X
--all HV pages : hashed
--all code pages: encrypted
-can make page executable
Hashing/Encyption:
-PPC64 supports 64 but addressing
-everything fits in 32 bit on the xbox360
-upper 32 bit are used as flags by L2 cache
00000100 (CPU internal security flags)
0000201c (Physical address which will go to the bus)
Hashing:
-implemented by L2 cache
-16 bytes SHA-I per 128 bytes cache line
-stored in 64kb CPU-internal SRAM
Encryption:
-implemented by L2 cache
-key taken from random number generator
eFUSES:
-768 bit
-JTAG disable
-unique key for Flash decryption
-devkit/retail indentifier
-update sequence counter
Paging:
-page tables map 32 bit virtual address to 64 bit physical address
-upper 32 bits of physical address are crypto/hash
Hypervisor;
-encrypted and hashed
-running without paging
-HRMOR
Manufacturing:
-all efuses are 0
-xbox boots a generic flash image
-xbox generates unique key, stores it in efuses
-xbox personalizes flash image
-xbox stores encrypted DVD key in flash
Load Executable:
-Xbox kernel loads executable into memory
-kernel hands code section to hypervisor
-if signed properly, makes code executable
-double mapping memory as code and data, copy from data to code
Return to HV:
-thread states are saved in unencrypted data segment
-register can be overwritten
--load registers with syscall parameters
--set PC to syscall intructions
Why Does MS Secure Xbox 360:
-Copied Games
-Unlicensed Games
-Cheating
-Linux
-Homebrew
Xbox Checks:
System Startup<-check-> Windows (in ROM)<-check-> Game (DVD)
Savegame Check:
System Startup<-hacked-> Windows (in ROM)<-check->Game<-no check->Data (Gamesaves)
DVD Drive fail:
the drive firmware is not protected
Hypervisor:
-Manages page tables and TLB
-W^X Enforced everywhere
-Games cant make data executable
-Games cant chainload code
Memory Hashing infoinfo:
-for every cache line on RAM
-on write: store hash in CPU-internal RAM
-verify on read
-DMA into hashed memory will make CPU panic on next read
-must be turned off for pages that require DMA
-very effective
-needs lot of CPU- internal RAM
cache line: 128 bytes
secure hash: 16 bytes
-only feasible for -1 MB of external RAM
-can only protect HV
Memory Encryption:
-Encrypt/decrypt memory on cache fill/writeback
-must be turned off for pages that require DMA
-DMA will jsut destroy the contents
*can be used to destroy e.q. blacklists
-Not as effective as hashing
-protects HV and game code
-also protection against dumping HV, game code, HD-DVD keys, thought DMA
Random number generator:
-encryption should not be predictable
-random number generator inside CPU
-ecryption key different on every boot
-prevent DMA replay
EFUSES!
-DISABLE JTAG
-unique per-box key
-flash crypto
-DVD pairing
Secure BOOT:
-32 KB internal ROM
-64 KB internal RAM
-Modified SHA-I , RC4
Hypervisor:
-128 KB of code
-manages page tables
--enforces W^X
--all HV pages : hashed
--all code pages: encrypted
-can make page executable
Hashing/Encyption:
-PPC64 supports 64 but addressing
-everything fits in 32 bit on the xbox360
-upper 32 bit are used as flags by L2 cache
00000100 (CPU internal security flags)
0000201c (Physical address which will go to the bus)
Hashing:
-implemented by L2 cache
-16 bytes SHA-I per 128 bytes cache line
-stored in 64kb CPU-internal SRAM
Encryption:
-implemented by L2 cache
-key taken from random number generator
eFUSES:
-768 bit
-JTAG disable
-unique key for Flash decryption
-devkit/retail indentifier
-update sequence counter
Paging:
-page tables map 32 bit virtual address to 64 bit physical address
-upper 32 bits of physical address are crypto/hash
Hypervisor;
-encrypted and hashed
-running without paging
-HRMOR
Manufacturing:
-all efuses are 0
-xbox boots a generic flash image
-xbox generates unique key, stores it in efuses
-xbox personalizes flash image
-xbox stores encrypted DVD key in flash
Load Executable:
-Xbox kernel loads executable into memory
-kernel hands code section to hypervisor
-if signed properly, makes code executable
-double mapping memory as code and data, copy from data to code
Return to HV:
-thread states are saved in unencrypted data segment
-register can be overwritten
--load registers with syscall parameters
--set PC to syscall intructions
Хотя вроде разобрался
20 байт это два с половиной регистра.
> addl 0, %eax
дописать?
В конвенциях вызовов нет никаких гарантий для флагов, поэтому так
TEST EAX, EAX
JS _
или так
CMP EAX, 0
JL _
Вопрос по ассемблеру для 8088. Точнее наверное про регистры проца.
В самоучителе написано, что в идеале DS CS SS регистры содержат начало 64к сегмента и сами, соответственно, занимают области памяти по 64к.
Но правильно ли я понимаю, что всё это рандомные адреса, и размер сегментов тоже ничем не ограничивается в меньшую сторону?
То есть, например, если я запишу в DS адрес 1000, а в CS 1010, проц не будет считать, что сегмент кода нагло залез в 64-килобайтную область сегмента данных? Просто под данные будет выделено 10 байт, а под код всё что дальше. Так?
Олсо, вопрос вдогонку. Только что прочитал про debug, дескать в нём можно вводить машинные коды. Интересует, какую он память использует во время работы? Прямо обращается к оперативке или что-то делает в своем загончике, с виртуальными адресами?
А то как-то боязно, что наэкспериментирую с записью-чтением в оперативку, и винда слетит.
Благодарю.
А достать sf сразу как-то можно? Я только такое пока выдумал
lahf
rold $(0x01), %ax
andd $(0x01), %ax
У меня советская пекарня на 8088. Лет 20 назад играл на ней в игори, кодил на бейсике. А ассемблер так и не смог освоить (потому что в документациях про него ничего сказано не было, кроме пары скудных примеров)
Решил всё таки исполнить мечту юности - стать полным богом и властителем этой пекарни. Заодно попробовать декомпилировать игори (кассеты с записями сохранились). Разобраться что там за что отвечало, может быть даже замоддить.
Благо 64кб текста это ни о чем. Я на дваче в несколько раз больше пощу за неделю.
как установить дебаггер на ИДУ?
как декомпилировать gch?
что за хуйня запускаю idу на exe, она мне выдает
7FFC43413B29: unknown exception code 4242420 (exc.code 4242420, tid 4748)
и все, сам по себе exeшник работает
Посоны, а есть смысл вкатываться, если не хочешь ничего взламывать, а просто лампово программировать embedded, IoT, без попутного изучения архитектуры всего чего только можно вплоть до 8086? Или это один и тот же багаж знаний, который будет требоваться везде?
Ларпер, плиз. Кому обязан? Тебе чтоле блядь?
> Но правильно ли я понимаю, что всё это рандомные адреса, и размер сегментов тоже ничем не ограничивается в меньшую сторону?
Сегмент - это сорт оф виртуальное понятие. В реалмоде почти x86 все, что делает сегмент - это предоставляет базовый адрес почти, потому что если ты сделаешь mov word[ds:ffff],ax - получишь фолт.
> Прямо обращается к оперативке или что-то делает в своем загончике, с виртуальными адресами?
В каком-нибудь досе - к реальной оперативке, к реальным портам, к реальному жесткому диску. В винде, естественно, он работает внутри NTVDM, который обычный процесс со своей собственной виртуальной памятью, и поверх этого эмулируется реалмод.
бля помогите плз. IDA не дебажит программу выдаёт exception на старте.
7FFE867F3B29: unknown exception code 4242420 (exc.code 4242420, tid 8208)
я читал что то про tls callback, но что конкретно нужно делать чтобы исправить? x64dbg может дебажить с enable debug privilege
Ну или может кто-то может рассказать зачем оно нужно и как и когда его правильно делать?
https://en.wikipedia.org/wiki/Data_structure_alignment
Насколько я понял, ЦПУ берет за раз из памяти паттерн определенного размера. Если нужно взять объект иного размера (к тому же не кратного предыдущему), то процессор производит дополнительные исчисления.
Следовательно, объекты желательно выравнивать по n-байтной границе.
Сам читал по диагонали. Поправьте, если где-то не прав.
Вопрос еще актуален, я так и не понял как. Прошу вас, уважаемые
Мне непонятен флаг MH_TWOLEVEL - The image is using two-level namespace bindings.
Что это и зачем нужно?
владел примерно той же инфой. Но тут меня заверили что на маке делать выравнивание обязательно, без дальнейших обьяснений
Ещё одному параметру лучше выделить место на стэке или свободный регистр?
push reg
mov reg, <param>
...
pop reg
или:
sub esp, <param_s>
mov [esp], <param>
...
add esp, <param_s>
Спасибо за ответ, анон.
>я думал он там уже есть
на слайдах сноудена была инфа что тип есть, ну короче он был но не в паблике.
чем идентичный лол? По ссылке параша уровня справочника по ассемблеру. Сначала немного про архитектуру, а потом разбор каждый команды и как она работает. У Нарвахи курс по Ольке и то содержательнее чем эта херня.
(RE4B Выбор другой строки из исполняемого файла)
И нахуя ты это высераешь?Тебя ебет кто чем занимается? Реверс ненужон?Ну и пошел нахуй отсюда к пхп макакам
А как ты уязвимости будешь в софте искать без знания асма и реверсинга, чмонь? Пошла нахуй в жс-тред, макака.
>Address space layout randomization
Ага, почитал про эту тему.
>Это скрин из книги Юричева?
Оттуда. Пытаюсь вкатиться в ассемблер, почитываю разные книги.
22 сентября 2020 г. Свежее у меня нет.
https://mega.nz/folder/1q4lVQaD#3sdApZbrSdnaCuqn53nKGw
Лол на асме писать одно удовольствие, как на пианинке хуячить.
>диолекты
И смена синтаксисов, и переходы на разные архитектуры дело плевое.
правда жаль это действительно никому не нужно
мимонарик-с-мд5
Для реверса на самом деле очень полезно общее понимание основ. Иначе можно иметь на руках какую-нибудь древнюю программу и сосать бибу.
> Кароче, скачал радар, написал хелло ворд на си, посмотрел оп коды в асме
может вычислить строку в хексдампе и заменить хеллоуворлд на хуевёрт или подобное.
mov bx, 35000
cmp bx, 0
Вопрос - почему после исполнения sf (sign flag) устанавливается в 1? У нас ведь число больше 0
Шестнадцатеричный доп. код числа 35000 есть ...00 88 B8.
Ассемблер формирует непосредственный операнд в инструкции для MOV по размеру равному первому операнду (BX), и отбрасывает старшие разряды его доп. кода. Получаем 88B8H - отрицательное число -30536 (с установленным старшим битом - битом знака).
я вот человек, недавно закночивший вуз, поработавший 2 года бойтоебом ( а последние два игроделом)
во времена байтоебли меня привлекал RE. Скажите, насколько это востребованный навык? Где он может пригодиться или даже сыграть решающую роль? Наверняка же рядом с ним нужно еще что-то знать
Алсо, с чего бы начать учить эту область? Насколько опыт на поделках релевантер тому, чем нужно заниматься на работе?
спасибо
В целом невостребованный, из работы только чернуха по сути. Как хобби норм, особенно для байтоеба, но если ты это рассматриваешься с точки зрения вката ради финансовой выгоды - худший вариант. Лучше сиди на С/С++ и пили прошивки с драйверами, серьезно.
рассматриваешь*
>>Освоил этот ваш сосамблер
>>Спрашивайте ответы
нахуя осваивал? Байткоить под х64 - это задача компилятора.
Нужен то ли эмулятор ассемблера, то ли интерактивный дизассемблер, где на одном экране можно было бы вводить свой код на ASM, и тут же запускать его пошагово, и тут же видеть регистры/память.
Наиболее похожее знаю turbo debugger,
ну и вот такое: https://carlosrafaelgn.com.br/Asm86/ но тут стек посмотреть нельзя.
Аригато.
Нахуя тебе вайн? Под прыщами тоже есть проприетарный софт так-то, там не все попенсорц от и до, только ядро и часть драйверов.
Если же ты сидишь на лине и хочешь реверсить под винду - лучше не занимайся анальной акробатикой и поставь винду на дуалбут.
>Возможно ли заниматься реверсингом под прыщами?
В статике ковырять бинари вообще пофиг где, большинство утилит есть и под окна, и под никсы (IDA, ghidra, cutter).
Дебажить логичнее под соответствующей платформой, но виртуальные машины и т.п. никто не отменял.
>>1937044
>в идеале под линь, в идеале консольное
radare? gdb?
Подумай об этом сам.
Без очень серьезной крыши вкатываться в чернуху не имеет смысла, быстро поймают и посадят очень надолго.
Короче говоря, если есть мысль заниматься этим в первую очередь из-за денег, то это худшее решение из всех.
Ну так а откуда крыша берется - ловят и предлагают, или на бутылку. Выбор довольно прост.
Эти времена уже прошли, чаще всего просто сажают молча на бутылку. Короче говоря, анон, чернуху не советую никому вне зависимости от обстоятельств.
И да, в дополнение к этому хотел сказать, что по статистике раскрываемость у киберпреступлений крайне низкая, около 8%.
Речь о том, что в условиях конкуренции между компаниями такая вещь, как реверс-инжиниринг, крайне востребованна.
А зачем им афишировать такие вакансии?
Дед, не стоит пытаться замять эту тему. Мы молодые, шутливые, нам все легко.
Можно вполне
Если про чисто асм - криптовка малвари
Руки до тебя не достанут
Используй новые ники,впн на своих серверах зареганных не на свои данные и тп и тд
Условные свои 2-3 тысячи долларов в месяц можно с этого получать
Маняфантазии
Ты какую чернуху представляешь?
Что он там банкбот уровня дридекс напишет и через месяц ламборжини купит?
Если вы вкатываетесь в реверсинг ради бинарной эксплуатации в 2к21 - лучше не начинайте, эта отрасль сесурити уже в предагональном состоянии.
Если обычный механический замок еще возможно взломать в 2021, несмотря на то, что он был изобретен много веков назад и усовершенствован тысячу раз, то почему должна устареть бинарная эксплуатация всего лишь через 30 лет после своего появления?
Один из этих мимокроков 10 лет в индустрии в стране, где бинарной эксплуатацией активно занимаются даже наемные челики (чего не скажешь о рашке) и участник ситифэов уровня DEFCON. Найс такой мимокрок, держи в курсе.
>>1945908
Манясравнения подъехали. Бинарной эксплуатации даже чуть больше, просто в 1988 году произошло то, что заставило начинать задумываться о митигациях. А вообще, почитай о новых митигациях, а также об MTE, охуеешь. Нет, конечно может быть ТЕОРЕТИЧЕСКИ и будет возможность взлома именно через ошибки работы с памятью, но цена и время взлома станет нечеловеческой (а-ля нужна цепочка из 20+ эксплоитов, которые эксплуатируют разные баги, чтобы джейлбрейкнуть айпонт). Уже сейчас 1-4 исследователя могут работать целый год только над написанием(!!!) рабочего эксплоита под известный браузер/ОС, учитывая, что они нашли тонну РАЗНЫХ эксплуатабельных багов, поиск которых тоже занимает огромное количество времени. Итог: смерть бинарной эксплуатации не означает, что взлом будет фактически невозможен на все 100% (хотя если через 30 лет все написанное на С/С++ перепишут на Раст, то реально сдохнет во всех смыслах), а то, что взлом будет настолько дорогим и времязатратным, что заниматься этим не на уровне целого государства будет невыгодно абсолютно всем, особенно исследователям-одиночкам.
>хотя если через 30 лет все написанное на С/С++ перепишут на Раст
Такое вообще возможно?
мимо
Верно. Проблема в другом - еще не нашли эффективного поиска уязвимостей такого плана (фаззеры эффективны только против проблем с памятью, а среди динамических методов ничего кроме фаззинга не доказало свою работоспособность). Вручную искать - удачи, особенно с огромными кодовыми базами, особенно если они проприетарные, это как найти иголку не просто в стоге сена, а в целой галактике. Ну и логические баги редко ведут к исполнению произвольного кода, в отличие от багов доступа к памяти.
>>1946418
Сейчас нет, а через 30 лет - почему бы и нет? Я не утверждаю, что так и будет, но предполагаю, ибо теоретически это возможно. Уж больно много проблем у этих языков.
И что же это получается, эпоха байтоебства, реверсов и взломов заканчивается? А я только вкатиться хотел в качестве хобби.
Я говорил точечно про бинарную эксплуатацию. Именно лоу-лвл хакинг. Он уже в умирающей стадии, да. Но реверс нужен не только для этого, поэтому с ним всё ок. Байтоёбство же в целом еще как нужно, особенно учитывая наступающую эру IOT. Всегда нужны системщики, способные писать дрова, прошивки и античиты для очередных быдлоигр, но все это разРАБотка, как ты понимаешь.
Эра взломов не заканчивается тоже, только именно лоу лвл взломов (хотя хардварный хакинг еще может взлететь, но лоу лвл программному - все, пизда). Взломы на уровне веб-дрисни цветут и пахнут, поэтому если ты хочешь быть именно кулхацкером, то вкатывайся в веб, там это в стадии развития, а не затухания, как в бинарном хакинге.
>, то вкатывайся в веб,
Хуже смерти, уж не знаю почему у меня такое отношение к нему, но что есть, то есть.
Аналогично. А какова цель вката? Если тупо хобби, то какая разница что там умирает, а что нет? Если ради того, чтобы подзаработать, то смотря что. Если именно бинарная эксплуатация, то не советую по вышеописанным причинам.
> А какова цель вката? Если тупо хобби, то какая разница что там умирает, а что нет?
Да, ради хобби, конечно. Да просто интересно было раньше читать про всякие лоу-левел взломы. Как с памятью играются и прочая фигня. Просто обидно смотреть на то как убивают твои прошлые фантазии.
>Просто...просто...просто
Пиздец и как я превратился в овоща, неспособного выразить свои мысли? Вопрос риторический.
Хуёл, я на этом деле собаку съел.
Есть офк symbolic execution, помогающий в поиске логических багов, который можно прикрутить к фаззингу, но этот метод не скейлится и применим только к хеллоуворлдам.
https://ia801909.us.archive.org/19/items/20200929_20200929_1204/Д. Туровский. Вторжение.pdf
То, чтт он пишет, справедливо лишь для популярных платформ с кучей бабла, влитого именно в секьюрити. Т.е. МС, Эппл, Андроид. С эпохой IOT у тебя есть овер9к девайсов, взламывай не перевзламывай. Взломай свой роутер, например. А потом соседский.
Две книги Митника (Искусство обмана, другую не помню название).
Компьютерное подполье (это которая с редакцией Ассанжа).
Но это все про 80-е и 90-е. Но интересно.
Вспомнил, ghost in the wires
0,я просто школьник который цтфы любит решать иногда
А пруфы можешь дать что ты такой крутой?
Ник,например или имя
Или сами цве
Добавьте пожалуйста книгу Ed Jorgensen - x86-64Assembly Language Programming with Ubuntu
http://www.egr.unlv.edu/~ed/assembly64.pdf
Это деанон, сорян, брат, мне нельзя открыто светиться по определенным причинам (не занимаюсь чернухой, другая причина). Можешь мне не верить.
Молодец, что интересуешься, не забрасывай.
>embedded, IoT
>>1946509
>особенно учитывая наступающую эру IOT
>>1947859
> С эпохой IOT у тебя есть овер9к
А IoT в РФ вообще существует? У нас же не производится электроники как таковой для гражданского применения. Все эти ваши умные утюги, холодильники, гироскутеры, чайники - все сделано в Китае. Какое у нас IoT? Все о нем уже не менее 6 лет говорят, но никакого IoT я так и не вижу. По сути, ничего толком за эти 6 лет и не изменилось в этой сфере, имхо.
хз, бро, я не живу в пределах стран СНГ.
Так объясни причину же (я не он).
https://habr.com/ru/post/542872/
Отреверсили gta 3 и vc, можно собрать из исходников!
Я просто охуел от такой новости.
Реверсили инжектя куски и переписывая их на C++.
Это стало возможным благодаря тому, что в первых версиях gta3 были debug строки с названиями функций и благодаря всему опыту, который накопился за годы реверса и разработки мультиплееров, клео и прочих модов.
Гта 3 вообще лайтовая по ресурсам игра, вот бы ее кто ради лулзов портировал на симбиан N95 и похожие с gpu.
От третьего айфона не сильно отличается, а на него запилили.
Что за кнопочки?
Глянул исходники и вот теперь не понимаю.
Как они додумались столько переменных назвать и выстроить иерархию инклудов и исходников?
За два года сделали.
Сложно поверить, что исходники не пизженные.
Есть видео как реверсят класс CRubbish
https://www.youtube.com/watch?v=22BeuOOERLo
Вот это скиллы
До кучи докину The.Scene. Хоть и не совсем по теме, но пусть будет.
https://www.youtube.com/watch?v=xIs_5nfJKu4&list=PLC2FCB2871C396459
Памагити! В универе заставляют писать на Borland C под DOS. Суть проблемы:
1)пик1: после редактирования файла L1ASM.ASM почему-то при компиляции не перезаписывается файл L1ASM.OBJ , хотя файл L1.OBJ , который компилируется из файла L1.CPP перезаписывается нормально. Т.е. если L1ASM.OBJ удалять каждый раз вручную, то все работает нормально.
2)Но если скомпилировать L1ASM.ASM с помощью Turbo Assembler без привлечения среды Borland C, то соответствующий файл L1ASM.OBJ перезаписывается нормально, сколько бы раз я его не компилировал. Значит, проблема где-то между Borland C и Turbo Assembler.
3)Ещё перед пик 1 появляется пик 3.
Что с этим делать? inb менять IDE
Алсо, DoxBox от имени администратора запускал, ОС Windows 7
>g:\BC\BIN\L1ASM.OBJ\L1ASM.OBJ
Так и должно быть?
А вообще, ты знаешь как тут (на доске в целом) относятся к студентам с лабораторными заданиями
Пытался, не помогло. Т.е. один раз файл OBJ он туда запишет, но 2-й раз только после того, как я удалю файл старый файл OBJ.
Удалось, кажется, решить: когда Borland C обращается к Turbo Assembler, он выполняет макрос $TASM. Если его поменять на $NOSWAP $SAVE CUR $CAP MSG(TASM2MSG) $EDNAME то вроде бы работает как надо
Это один и тот же код, который лежит в .text section в бинаре.
>Молодец, что интересуешься, не забрасывай.
Спасибо конечно,мне приятно
Но из твоих слов выходит что я занимаюсь тем что умрет через лет 5-7 полностью.Так может нахер это?
Вплане мне это нравится,но я не могу позволить себе заниматься 3-4 года фуллтайм тем чем я себе даже на квартиру и еду не смогу заработать
Не всю же жизнь жить мамкины котлеты жрать
пс 17 мне сейчас
Занимайся этим для саморазвития. Если любишь лоу левел, вкатись в разработку драйверов, прошивок - это умрёт ГОРАЗДО позже, чем бинарная эксплуатация. Продолжай решать ctfы, это даст тебе много окололоулвльных знаний, которые помогут в байтослесарстве и ты в среднем будешь писать лучший и более безопасный код, нежели дефолтный васян-байтоёб. Как видишь, выгода энивей есть.
Если же ты помешан именно на инфобезе и ни на чем более, то здесь нужно ОБЯЗАТЕЛЬНО сделать 2 вещи: 1) Завести трактор на съеб из рашки в сторону Америки/Европы. 2) Таки полюбить мир веб безопасности и вкатыватья туда, это единственная отрасль инфобеза именно с точки зрения эксплуатации, которая реально жива и которая умрёт очень нескоро (если вообще умрёт). Плюс это легче учить, чем бинарщину, легче искать уязвимости, attack surface в миллион раз больше, чем в бинарщине. Будущее двигается в сторону веба в целом.
Олсо, не исключено, что через 10 лет у тебя компьютер будет OS-less и будет просто подключаться к облаку провайдера, в этом случае даже банальное использование браузера будет удаленное. А с технологией 5G это вполне реально, ибо скорости позволяют.
>>1947859
И да, и нет. В эмбедщине действительно плачевная ситуация по сравнению со всем остальным, но через год-два выходит митигация-убийца, которая хоронит бинарную эксплуатацию и на рынке эмбеддеда, убивая всю суб-отрасль окончательно. Митигация - memory tagging extension. Вкратце - это address sanitizer на уровне железа. Если ты знаешь что такое ASAN и представляешь себе работу оного на уровне ЖЕЛЕЗА(!!!), то всё сразу поймёшь. Это последний гвоздь в крышку гроба. К сожалению, времена ламповых бинарных хакеров подошли к концу.
Разве не может быть логических уязвимостей в софте, который написан на тех же С/С++, Rust или Go? Таки в этом случае реверс все еще нужен
Про логические уязвимости я уже говорил выше. Проблема для атакующей стороны в том, что они редко приводят к исполнению произвольного кода, в отличие от багов с памятью.
К тому же, я говорил про близкую кончину именно бинарной эксплуатации, а не реверсинга. Реверсинг != бинарная эксплуатация. Реверсинг используется в бинарной эксплуатации, это инструмент. Но у него есть применение и вне бинарной эксплуатации, поэтому с самим реверсингом всё ок. Но стоит помнить, что реверсинг - не отдельная профессия, а инструмент исследователя.
> Проблема для атакующей стороны в том, что они редко приводят к исполнению произвольного кода, в отличие от багов с памятью.
Это да. Но я уже хочу найти любую уязвимость, которая позволит получить несанкционированный доступ к информации.
Понимание самых ходовых мнемоник не помешает. Там же основной контент вида "давайте напишем хелловорлд и расковыряем, что на выходе отрыгнул компилятор".
Вообще странный вопрос, начни читать - при необходимости полистаешь справочники.
Осторожнее там. Может получится, что этим суком, кривым и с закорючками, без смазки, оттрахают уже тебя.
Пасиба
Методы это функции по сути. Если метод один-в-один то компилятор его повторять в коде не будет.
Виртуальная таблица - это способ программисту динамически (во время выполенения программы) назначить функцию-реализацию этого самого метода. Естественно данная функция должна иметь схожий заголовок (т.н. сигнатуру; т.е. что принимает, что возвращает)
Виртуальная таблица - список указателей на такие функции. Этот список создан для каждого ОБЪЕКТА класса. Класс это тип, а объект класса - это инстанс/переменная.
По той же логике что и INT это тип, а переменная этого типа - это объект/инстанс.
Более общее понятие называется "вектор атаки".
https://www.upguard.com/blog/attack-vector#toc-what-are-the-common-types-of-attack-vectors-
Знание архитектуры раньше было неоходимо чтобы писать более качественный код - т.е. для оптимизаций. На сегодняшний день это очень сложная и муторная задача для человека, и в целом отдана на откуп оптимизирующим компиляторам, которые часто справляются с этим лучше человека. Есть места где человек все еще может путем покупки соответсвующей ветки прцессоров и подгона под них методом последовательных проб и замеров - кодеки например.
Есть еще научный интерес, читай про реализацию Spectre/Meltdown без понимания архитектуры кэша / реализации многопоточности такое провернуть будет невозможно. Еще https://en.wikipedia.org/wiki/Software_Guard_Extensions#Attacks
А что в итоге?
Да, через уязвимость в софте, но зиродеи нынче дорогие, а находить их, да еще и писать под них эксплоиты, может далеко не каждый.
Квинтэссенция взлома - zero click remote code execution. Это сугубо технический взлом без использования социальной инженерии, достаточно чтобы жертва юзала уязвимый софт.
https://www.asset-intertech.com/products/sourcepoint/
Алсо, реквестирую кряк скорее всего нет, но вдруг
https://www.asset-intertech.com/products/sourcepoint/
Алсо, реквестирую кряк скорее всего нет, но вдруг
https://www.asset-intertech.com/products/sourcepoint/
Алсо, реквестирую кряк скорее всего нет, но вдруг
Или заменить байты в файле на другие из списка.
https://github.com/cranelab/exploit-development
Для чего? Хобби? Топ тема. Работа? Не имеет смысла, работа в этой области конечно есть, но глубоко исследовательская и по большей части не в странах СНГ.
Есть варик, если ты молодой (< 20 лет) и уже имеешь базовые знания + возможность завести трактор. Иначе выгоришь в 90% случаев. Но решать тебе, офк.
Пчел из секты свидетелей смерти бинарщины, ты? Cогласен с твоими доводами, посещали похожие мысли еще во времена DEP, ASLR.
Хз о ком ты и что ты подразумеваешь под словом бинарщина. Разработка, ИБ? Разработка цветет и пахнет, правда платят за байтоеблю хорошо опять же только за бугром (да, в США байтослесарь получает в среднем больше веб-макаки, surprise motherfucker). Инфосек в низком уровне погибает, да. Особенно на программном уровне. Уже сейчас для фул чейна на известную ОС/браузер/веб-сервер нужен штаб гигамозгов, уровень которых недостижим для всяких 20-ти летних вкатышей, и очень много удачи и времени. И одним эксплуатабельным багом не отделаешься, их нужно в среднем минимум 3-4, РАЗНЫХ. И не факт, что они вообще будут. Учитывая, что помимо кучи митигаций, количество которых растет в геометрической прогрессии, некоторые важные компоненты известных программ переписывают на Раст (мелкософты уже начали), то можно представить, как через 2-3 года ресёрчеры полетят с рабочих мест) Я уже молчу про то, что критически важный софт, который торчит мордой в интернет, сидит под фаерволлом и крутится в песочнице. Короче, нажать на энтер и быть внутри корпоративной сети через переполнение буфера - это уже навсегда в прошлом, да. Хз чё там по вебу, я не интересовался никогда тем, что выше уровня крестов, но вангую, что и там куча защитных технологий. Поменьше смотрите мистера робота, реальность не такая.
DEP, ASLR - хуйня из-под коня. ASLR неприятен, но достаточно одного инфолика и всё, эта защита сыпется. DEP - говно без задач, он слабее всех остальных митигаций задрал планку. До 2002 года (вроде тогда завезли DEP в шинду, а затем годом позже в линь и двумя годами позже в мэкось) любой школьник-долбоеб, знающий основы С и асма мог наебнуть полмира, виндовые кернел эксплоиты гуляли по сети только так. Но с другой стороны и зиродеи были не такими дорогими, как сейчас, в начале нулевых не у всех даже в Европках/Америках были компы, я уже не говорю про тырнет. Информация была дешевле в разы, сейчас другие времена.
Сейчас есть митигации, которые зафутболивают планку не просто в стратосферу, а прямиком на Плутон нахуй. CFI убивает ROP и почти любые другие атаки типа code reuse особенно, если он правильно имплементирован (coarse grained слабоват и его можно обойти при большой удаче). Но можно сказать, что ROPу тоже пришел конец. на армах скоро выйдет митигация, которая грубо говоря реализует ASAN на уровне железа, это уже гроб смерть пидор.
320x180, 2:30
Жертва запускает мой exe'шник. В этот exe'шник заэмбеден другой exe (назовём его второй). Как лучше орагнизовать незаметную загрузку этого второго? Через ключи реестра? Добавить как службу в сервисы? Конечно, оставася максимально незаметным и с истемный правами при автозагрузке.
Скованный обществом и его правилами, ты?
Ты не можешь ничё заэмбендить по определению - общество это не оценит.
Мне
В асме нужно использовать деление только в крайних случаях, когда без него никак. Я не знаю, не понял твой код. Поставь счётчик, первое что пришло в голову.
Это не по дзену, понимаешь? Ты с инфой можешь делать всё что угодно, ты бог инфы, можешь сделать этот мир лучше. Но ты выбрал подсунуть какойто экзешник жертве, чёто там заэмбендить. Нахуй оно тебе надо? Ты всё равно ничего не добьёшся в конце-концов, потому что у тебя неправильные цели, навязанные обществом.
мне кажется, что члены моей команды вьют интриги за моей спиной и вытесняют меня с проекта постепенно. Возможно, я сликшом токсичный. Но мне интересно знать, что обо мне думают люди.
Бля, умер Xatab. Он умер честным и бескорыстным человеком. Он не мог делать кряки, взламывать игры. Он просто делал то, что мог делать, для того чтобы этот мир был лучше. Его ничто не сломало, ни деньги, ни тян, ни власть, он был уверен в своей правоте. Просто вкладывал свою крахотульку в этот мир и всё, вкладывал и вкладывал. За это ему огромный респект, далеко не каждый так сможет.
ну скажи, чем мне занять свой мозг. Основная работа неинтересна. А хочется что-то делать
Найди счётчик символов, мне 21 не влезло. На скрине>>1959997 БП с которого начинается отрисовка текста -8004C20C, на 800526E8 заканчивается. Между этими двумя БП гдето есть джамп(branch на мипсе). Надо его найти.
Ещё надо, для наглядности, сделать конвертор кодировки. Но для этого мне нужно точно знать какой байт соответствует букве( пока не сделал). После того как я изменю все буквы в полностью распакованном бинаре, я увижу текст и буду знать в каких именно кусках он запакован. Потом надо написать упаковшик и всё это запаковать.
Делай как тут говорят. Ставь два БП и ищи где срабатывает джамп.
всякие эмуляторы qemu, bochs тут помогут?
Возможно, что эту игру даже невозможно перевести на русский. Но это предположение, да даже если так, то было бы неплохо дать заключение реверсача, а то люди то ждут.
Деление должно быть во время препроцессорной обработки, не в рантайме. Надо разделить на 16, чтобы получить сегментный адрес. Тогда я буду знать, где заканчивается сегмент с ядром
Все так же. nasm не дает делать сдвиги и деление с такими значениями, пишет все тот же division operator may only be applied to scalar values.
Нахуй nasm тогда. FASM всему голова).
Это моё мнение.
nasm и masm сделаны для перехода с высокоуровневых языков на низкоуровневые. Они как бы вроде могут делать как ассемблер, но в то же время используют высокоурожайный синтаксис. То есть движение от высокоуровневого языка к низкоуровнему.
Fasm - наоборот, полностью понимает низкоуровневый синтаксис. Но если ты такой высокоуровневый бог, то можешь юзать всякие директивы, скрипты и т.д.
То есть движение от низкоуровнего языка к высокоуровнему.
И ошибка division operator may only be applied to scalar values.
У меня в fasme ошибка указывает на строку, где я проебался и не поставил : на метку. Говорит мне, что я нихуя не понял что ты от меня хочешью
Так я просто хочу разделить итоговый размер бинарного файла на 16. Он не дает разделить адрес метки, я и спрашиваю что мне с этим делать.
Напиши прогу которая будет вычислять адрес и сделай запуск этой проги из основной.
Какой на хуй высокоуровневый?
Здесь не нужен код. Я просто спрашиваю как метку разделить. Ну хорошо, если код тебе так нужен
S equ $ / 16
Мне не в рантайме надо
Предлагаешь транслировать код в бинарник, смотреть итоговый размер бинарника, писать в код хардкодом размер файла и делать это каждый раз перед сборкой, да?
Да. Так я хотя бы пойму что у тебя не работает. А сейчас ты в полной фрустрации- высокоуровневые тебе не помогут, низкоурвневые не поймут.
Надо просто аутировать, запускать пролог, потом снова запускать, потом снова запускать и так целый день, а может и два, пока не найдёшь этот branch. Ещё можно написать упаковшик, есть желающие?
Упаковщик полюбому нужен, потому что у наших англоязычных друзей задача была намного проще. Там теже символы по сути, надо только их по другому расположить.
Патриотизм то есть у вас? Ведь это от именно от нас зависит что в этой стране происходит.
Помогут. Но как - вопрос хороший, там нужно много технических знаний + интуиция. Иначе зиродеи не стоили бы так дорого. У тебя какая база вообще?
Я это сделал потому что мне совсем левые люди сделали просто как профи.
Вы нихуя не можете, кроме как выёбываться своими !знаниями! Мне это не интересно. Идите на хуй.
разрабатывал ассемблер для x86 на базе intel xed (сейчас они его выложили в opensource), что-то фиксил в qemu и в bochs. Сейчас занимаюсь comp vision в с++, питоне и тензорфлоу.
в общем база такая: работал админом, настраивал activediectory, dhcp сервера, dns, разбираюсь в маршрутизации, настраивал squid, apache, linux, freebsd. Много лет занимаюсь проганьем на си/с++. Знаю ruby и питон.
Почему спрашиваешь?
Наставьте на путь истинный! Хочу ломать тупые системы чиновничьи! Хочу наводить хаос!
Я бы посоветовал остаться в computer vision, если честно :) Но раз уж так хочешь, то с такой базой можешь сразу ворваться в изучение примитивов бинарной эксплуатации. Также советую порешать задачки на реверсинг и эксплуатацию в CTFах, это поможет выстроить правильный майндсет в голове. Вкатиться сразу в эксплуатацию реальных систем скорее не получится, это сложнее, чем ты думаешь. Сначала натаскай мозги на правильный лад через CTFы по восходящей сложности.
грустно. и игори не особо играю. я бы чтонибудь лапками написал или там своим мозгом декомпильнул небольшую прогу. неужели ничего такого нет?
Конпеляторы то люди пишут все еще. Оптимизации, преобразования итд ручками прописывают в основном. Магии не существует.
Ну ты сказал конечно. DEP, как и любое другое hardware based смягчение, фактически убивает целый класс багов, конкретно в этом случае предотвращает выполнение данных. Именно из-за DEP хакерам пришлось извращаться и придумывать такие вещи как code reuse атаки. Новый CET (hardware based CFI) направлен на смягчение forward/backward edge атак с переиспользованием кода, но вот например майкрософт решили использовать только shadow stack и сделали ставку на свою реализацию CFI (CFG/XFG). Проблема в том, что CET выкатили буквально год назад, железа тупо нет и еще долго не будет, а для software based CFI требуется инструментация кода, т.е полная перекомпиляция (в редких случаях возможна бинарная, но скорее всего нет). Короче пока все это будет распространяться, пройдет лет 5 не меньше. Ну и не стоить забывать и недооценивать data-oriented атаки.
DEP далеко не на всех платформах является hardware-based. Скомпилируй бинарь на Линуксе компилятором gcc или clang с флагом -z execstack и получишь RWX кучу и стэк, как в 90-ых. Так или иначе, DEP разбивается в пух и прах классическим возвратно-ориентированным программированием. И чем больше бинарь, тем больше в нём гаджетов, которые позволяют выстроить фактически любую произвольную полезную нагрузку.
Насчет CFI - когда ворвутся fine-grained имплементации - настанет пиздец любым code reuse атакам, любые модификации ROP станут бесполезными и потеряют актуальность. Перехват потока исполнения программы по сути умрёт, контролировать instruction pointer станет невозможно при любых формах порчи памяти, так как программа будет крашиться при любой попытке прыгнуть/вернуться туда, куда CFI не позволяет. Просто теперешние имплементации позволяют обойти CFI, удовлетворяя граф разрешенных лэндов по backward/forward гранях через слегка модифицированный ROP. Но это пока есть преимущественно coarse-grained имплементации, это ненадолго.
5 лет - это же очень мало. Чтобы новичку с нуля вкатиться в это и дойти до уровня написания фул чейнов на известные браузеры и ОС - это даже больше 5-ти лет чуть ли не ежедневного ебашилова при условии достаточной мотивации и количества интеллекта, это не каждому дано осилить. Так или иначе, те, кто хочет вкатиться в binexp сейчас с нуля обречен на фейл, точка невозврата во вкат именно в бинарную эксплуатацию мирового уровня, имхо, прошла, только если ты не самородок. Через 7-8 лет ресёрчеры по всему миру, включая google project zero, начнут терять работу.
Против data-oriented атак уже есть концептуальная защита - DFI (data flow integrity), к тому же, дойти до исполнения произвольного кода при таких атаках ГОРАЗДО сложнее, так как упор делается не на перехват потока исполнения, а на порчу данных, которые на него не влияют напрямую. К тому же, искать data oriented гаджеты вручную невозможно, а их количество даже в больших бинарных файлах довольно ограничено.
DEP далеко не на всех платформах является hardware-based. Скомпилируй бинарь на Линуксе компилятором gcc или clang с флагом -z execstack и получишь RWX кучу и стэк, как в 90-ых. Так или иначе, DEP разбивается в пух и прах классическим возвратно-ориентированным программированием. И чем больше бинарь, тем больше в нём гаджетов, которые позволяют выстроить фактически любую произвольную полезную нагрузку.
Насчет CFI - когда ворвутся fine-grained имплементации - настанет пиздец любым code reuse атакам, любые модификации ROP станут бесполезными и потеряют актуальность. Перехват потока исполнения программы по сути умрёт, контролировать instruction pointer станет невозможно при любых формах порчи памяти, так как программа будет крашиться при любой попытке прыгнуть/вернуться туда, куда CFI не позволяет. Просто теперешние имплементации позволяют обойти CFI, удовлетворяя граф разрешенных лэндов по backward/forward гранях через слегка модифицированный ROP. Но это пока есть преимущественно coarse-grained имплементации, это ненадолго.
5 лет - это же очень мало. Чтобы новичку с нуля вкатиться в это и дойти до уровня написания фул чейнов на известные браузеры и ОС - это даже больше 5-ти лет чуть ли не ежедневного ебашилова при условии достаточной мотивации и количества интеллекта, это не каждому дано осилить. Так или иначе, те, кто хочет вкатиться в binexp сейчас с нуля обречен на фейл, точка невозврата во вкат именно в бинарную эксплуатацию мирового уровня, имхо, прошла, только если ты не самородок. Через 7-8 лет ресёрчеры по всему миру, включая google project zero, начнут терять работу.
Против data-oriented атак уже есть концептуальная защита - DFI (data flow integrity), к тому же, дойти до исполнения произвольного кода при таких атаках ГОРАЗДО сложнее, так как упор делается не на перехват потока исполнения, а на порчу данных, которые на него не влияют напрямую. К тому же, искать data oriented гаджеты вручную невозможно, а их количество даже в больших бинарных файлах довольно ограничено.
Зачем? Байтоёбская разработка, например, цветёт и пахнет, туда можно будет вкатиться хоть через 20 лет.
>>1963328
Вбиваешь в гугле binary exploitation и учишь всё, что видишь. Потом начинаешь искать CTFы и решать задания в категориях Reverse Engineering и pwn. И так лет 5-6, попутно изучая все технологические изменения в этой сфере.
> так как программа будет крашиться при любой попытке прыгнуть/вернуться туда, куда CFI не позволяет
это когда перед некоторыми переходами новый адрес проверяется на вхождение в правильный сегмент? а fine-grained и course-grained определяет частоту таких проверок?
>>1963431
>Зачем? Байтоёбская разработка, например, цветёт и пахнет, туда можно будет вкатиться хоть через 20 лет.
у меня скоро блять шизофрения разовьется от этой напирающей дихтомии "бинарям пиздарики vs. цветет и пахнет". надо чтоли от интернетов отдохнуть.
мимонюфак с crc32
320x240, 2:32
Потому что надо заниматься делом, а не пиздеть на двачах.
какойто даун на этом видео. если бы солнце врощалось вокруг земли, то ее бы уже расхуячило
Хочешь сказать, что ты даже Шерлока Холмса не смотрел, чтобы не забивать голову ерундой?
конечно я его когдато читал. и легко не забивать голову трэшем, когда это дело есть и/или знаешь куда направляться.
Вхождение в правильную функцию. Причем при попытке приземлиться на середину функции программа тоже крашится. Fine-grained - это генерация более скурпулезного графа, что в теории можно реализовать так, что ты не сможешь отклониться от нормального потока исполнения программы от слова совсем.
>у меня скоро блять шизофрения разовьется от этой напирающей дихтомии "бинарям пиздарики vs. цветет и пахнет".
В смысле? Байтослесарству не пиздарики, по крайней мере в разработке. Тут речь шла только об инфобезе. Там да, пизда.
>Тут речь шла только об инфобезе. Там да, пизда.
Да ладно? А почему всякие wallarm и cloudflare цветут и пахнут? Или ты имеешь в виду инфобез байтослесарский?
Именно байтослесарский софтверный offensive инфобез. Если анон выше хочет быть именно кулхацкером и ломать корованы, то я советую ему заняться именно веб-уязвимостями, там смерть в ближайшее время явно не намечается, да и attack surface гораааздо больше, чем в бинарщине.
>Вхождение в правильную функцию. Причем при попытке приземлиться на середину функции программа тоже крашится.
т.е. даже не вхождение а обычное сравнение с единственным корректным адресом, получается? ну и в случае условного джампа - с двумя адресами?
но там же наверное это дело обернуто в какую нить дополнительную цепочку test, cmp или сетбит, это типа неуязвимость?
>Fine-grained - это генерация более скурпулезного графа, что в теории можно реализовать так, что ты не сможешь отклониться от нормального потока исполнения программы от слова совсем.
кек наверное для моего понимания это засирание всего кода переходами и соотвествующими проверками.
энивей спасибки за научпоп для идиота
Попытаюсь объяснить на пальцах: конпелятор генерирует ориентированный граф, который описывает все валидные call/jmp/ret в программе. Очень fine-grained имплементация позволит задетектить перехват потока исполнения программы при любом раскладе, поэтому да, достаточно сильный fine-grained CFI == неуязвимость перед перехватом потока исполнения.
типа орграф статически рожается компилятором, сам же орграф это адреса функций с правильными переходами на другие функции?
а если допустим indirect branch, который вроде поддерживается сишными стандартами в виде функцианальных указателей?
и уже исходя из орграфа в код добавляются соответствующие проверки перед прыжками/коллами?
осло можешь слать нахуй, если неинтересно отвечать. мне для общего развития, чтоб перед Шерлоком Холмсом посанами вдруг че выебнуться
>а если допустим indirect branch, который вроде поддерживается сишными стандартами в виде функцианальных указателей?
В языке ассемблера вызов функции через указатель на фукнцию выглядит как call register, поэтому это ничего не меняет.
и вот такая картина неясна:
переписан стэк с адресом возврата;
далее ret <evil_code>
очевидно, evil_code находится на пейдже со сброшенным нх-битом. как тогда выставленный нх-бит перписанного стэка спасет от перехвата? я наверное чегото сильно невкуриваю.
>это просто-напросто бит запрета на исполнение для отдельного пейджа
Почти. Смысл этой митигации в том, чтобы в адресном пространстве процесса не было ни одной страницы памяти, которая одновременно и writable, и executable. Именно поэтому у данной митигации есть еще одно название - W^X (надеюсь, не надо объяснять почему).
>как это аппаратно может поддерживаться?
Очень просто. Достаточно переделать MMU (это железка, которая маппит виртуальные адреса к физическим) и сделать его умнее, то бишь быть memory permissions aware.
>очевидно, evil_code находится на пейдже со сброшенным нх-битом. как тогда выставленный нх-бит перписанного стэка спасет от перехвата?
Не до конца понял, что ты тут написал, но все равно отвечу: если адрес evil_code, куда ты пытаешься вернуться, не является исполнимым, то программа просто крашится, так как не может исполнить неисполнимый код. Если ты сейчас сидишь в ахуе, то перечитал начало моего ответа про DEP и в чём цимес данной митигации.
>Именно поэтому у данной митигации есть еще одно название - W^X (надеюсь, не надо объяснять почему).
очевидно, чтобы в рантайме не перезаписать исполняемый код или не исполнить данные.
по крайней мере, я себе это так представлял:
r-x: код, константы;
rw-: бсс, дата, стэк, кучи;
ну и вроде как через ммап() можно получить кучу с разными разрешениями. всё.
>>ret <evil_code>
фикс: ret
ебанный стыд. наверное от усталости.
я имел ввиду, что evil_code это адрес возврата после перезаписи стэка.
и описание работы nx-бита прочитал через жопу. сначала подумал, что адрес возврата принадлежит другому процессу а разве так нельзя?. а оказывается, что злокод нужно также записать в адресное пространство процесса. теперь ясно как оно.
>>как это аппаратно может поддерживаться?
>Очень просто. Достаточно переделать MMU (это железка, которая маппит виртуальные адреса к физическим) и сделать его умнее, то бишь быть memory permissions aware
лол. всю дорогу думал, что ммю и тлб - исключительно виртуальные понятия. с этим теперь тоже всё ясно.
и вопрос лирический. зачем защитники так сильно упоролись? нет бы играть в шашки из битов с хацкерами, вешая лапшу буржуям и военным, пилили бы вместе бабки. они же наверное тоже на мороз полетят со своими депами и сфи.
>адрес возврата принадлежит другому процессу
Нет, чувак, это так не работает. ret это по сути pop eip/rip (32/64 битный бинарь, соответственно) для возврата из стэкового кадра той функции, исполнение которой уже завершилось. Всё это происходит в рамках адресного пространства конкретного процесса.
>и вопрос лирический. зачем защитники так сильно упоролись? нет бы играть в шашки из битов с хацкерами, вешая лапшу буржуям и военным, пилили бы вместе бабки. они же наверное тоже на мороз полетят со своими депами и сфи.
Военным и всяким спецслужбам похуй на всех. Им легче словить топ-менеджера/любую другую шишку какого-нибудь условного Майкрософта, приставить ему дробовик к виску и попросить по-хорошему доступ ко всему чему надо, разумеется по-тихому, нежели искать зиродеи в продуктах этой компании.
А обычные ресёрчеры полетят с работ по двум причинам:
1) Защитные механизмы часто придумывают аспиранты/доктора/профессора камплюхтер сцаенс (нужное подчеркнуть) в академических рамках, отнюдь не в закромах хайтек-компаний. Им всю жизнь будут платить бабосы (не такие большие, как ресёрчерам в хайтек-компаниях, разумеется, ибо таков рыночек) за то, что они будут искать сферический способ в вакууме похекать что-либо и как от этого можно защититься. Это можно сравнить с квантовыми физиками, которым платят деньги за результат, которого можно никогда и не достигнуть за всю историю человечества.
2) Это банально жизнь. Во времена Джона Диллинджера можно было с пистолетом чуть ли не в соло ворваться в банк, спиздить много денег и иметь все шансы быть не пойманным полицией, живя опосля в шоколаде и больше не рискуя. Сейчас чтобы физически ограбить банк, как 90 лет назад, и при этом не быть пойманным, нужно быть супергероем из Марвел, а не человеком, засим это потеряло актуальность в современном мире. Также и с бинарным хакингом. Всему рано или поздно приходит конец в виду развития достаточного количества, и качества, превентивных мер.
>Нет, чувак, это так не работает. ret это по сути pop eip/rip (32/64 битный бинарь, соответственно) для возврата из стэкового кадра той функции, исполнение которой уже завершилось. Всё это происходит в рамках адресного пространства конкретного процесса.
да-да. я всю туплю и забываю про виртуальную адресацию, протектед мемори етс., воспринимая память как нечто неделимое.
и далее по тексту одна грусть. больше не погамать в эти игрухи.
так то спасибо еще раз за все ответы и толерантность. жаль у меня с картинками туго в телефоне, иначе хоть няхой отблагодарил.
>и далее по тексту одна грусть. больше не погамать в эти игрухи.
Не всё так плохо. Если ты байтослесарь, то есть разработка, которая цветёт и пахнет, особенно за бугром.
Если же ты упорот именно по хакингу, то есть еще живые атакующие отрасли - веб-хакинг, например. Я в нём не силён, ибо сам байтоёб, но имею приятелей веб-ИБшников, и в целом слышал об общей ситуации в веб-хакинге. Судя по тому, что я слышал, там всё куда живее, чем в бинарном. И поверхность атаки тоже гораздо больше. Туда, по крайней мере, ещё можно вкатиться не гениям и достигнуть очень высокого уровня мастерства задолго до смерти самой отрасли.
По основам ассемблера
>Digital design and computer architecture
О простых вещах сложным языком + аналоговая схемотехника, мало примеров. Не для новичков.
>Танненбаум
Много неожиданно вставленных абзацев с исторической справкой, что сбивает с мысли и не даёт усвоить целостной картины. Много неизвестной и плохо уточнённой терминологии с точки зрения человека только-только вкатывающегося в азы computer science. Например не уточняется какая память подразумевается скорее всего ОЗУ и куча таких мелких моментов вне контекста знаний вкатывальщика.
https://pornolab.net/forum/viewtopic.php?t=1477033
Demonion ~Maou no Chika Yousai~ / Демонион / デモニオン ~魔王の地下要塞~
https://zenhax.com/viewtopic.php?t=3302 тулза тут
Плюс любым распаковщиком архивы игровые распаковать.
А вообще проще так. Батник жмакаешь, патч собирается. В папке moacode json файлы. В них текст. https://goo.su/4LUq
Предположение на 99%(потому что сам код отрисовки символов в екзешнике не нашёл). Японские буквы в кодировке utf-8 из трёх байт, русские буквы из двух, игра добавляет 3 байт к букве в виде пробела перед буквой. Английские буквы в utf-8 из одного байта и соответствуют коду ascii, игра их распознаёт как ascii и ничего не добавляет. Шрифты не причём.
Два варианта для победы:
1 наебать игру расширив двух-байтные русские буквы до трёх байт, какими-нибудь управляющими символами чтоли.
2 Исправить экзешник, чтобы ничего не добавлял. Я не нашёл этот код, но поищу, интересно стало.
>Нарваха практический курс по дебагингу
Там вирусы кста
Учусь в вузе на пми, профильными являются высокоуровневые языки и научные либы, но параллельно нам преподают Си и, собсна, АСМ. Преподы неплохие, но за пределы методичек не выходят, увидел тред и еще больше задумался над перспективой вкатиться. Айти будущее в необъятной не такое и ясное, особенно в сфере мл и прочего прикладного матана, хочу по-серьезному вкатиться в АСМ, чтобы был вариант поработать в сфере микропроцессорного программирования (в моей мухосрани куча тематических КБ и мелких контор). Тащемта вопросы: Cтоит ли вкатываться с такой целью? Востребовано ли ИРЛ? Где искать реальные прикладные задачи для практики?
асм пиздец как редко используется, си в основном
асм реверсерам нужен и прочим интересующимся пацанам из секьюрити
Нашёл вот что - char 043f это русская буква п, заменяю на 0061 - англ a и она нормально отображается.
Плюс весь текст там в sjis, utf в те бородатые года, на игру которая не на экспорт не завезут. Плюс была бы поддержка utf игра спокойно запускалась бы на любой локали.
Выделил первую фразу, там чтото Всем спокойно переводится.
Да ты прав, я дурачок.
> Ты в отладчике проверял?
Ага. Да буква меняется, но проблема с расстоянием остается.
Если что, я в отладчике в команде push eax, поменял значение eax c 043f на 0061. Позже перепроверю.
Странная хрень, думал что пробел с русской буквой ставиться перед буквой. Но с английской почему-то ставится после буквы. Видимо это связано с самим глифом и места для отрисовки почему-то выделяется больше. Надо дальше ковырять.
Если менять на японский чар, то тоже самое.
Ты говоришь, что бинарные уявимости сак. А вот у гугла проект
https://googleprojectzero.blogspot.com/ выглядит живым ещё. Как считаешь, такими эмуляторами можно только в ОС баги искать? Или в каких-то монструонзных вещах типа Exchange сервера? Ваще, с чего начать
Там по смещению 111B90 есть функция, в ней происходит проверка юникод чар или нет. Если да, то вызывается GetStringTypeW. Возвращает оно либо 1 в случае с ascii либо 2 в случае с юникодом. Так вот, если возвращаемое число будет 3, то межбуквенный интервал увеличится, если 1, то не ascii чары ломаются.
Я конечно не прогромист, но я знаю самый научный метод - метод научного тыка. И как мне кажется нужно капать в эту сторону.
Пчел, ты в курсе какие там роботы вообще работают? Ты даже не представляешь себе уровень хакеров в gp0, это лучшие из лучших. таких челиком меньше 1000 во всем мире. И да, в виду развития митигаций даже они полетят с работ через 7-8 лет. ДАЖЕ они.
>такими эмуляторами можно только в ОС баги искать?
ВО всем, что угодно, но это эффективно только против easy-to-find багов, глубокие и сложные баги, которые годами остаются незамеченными, как правило, находятся ручным реверс-инжинирингом.
>находятся ручным реверс-инжинирингом.
чо они, листинг читают прямо-таки наугад, либо всё подряд? Либо смесь какого-то фаззинга и чтения листингов?
Читают, не наугад, а основываясь на опыте. фазинг поможет, но не сделает за тебя всю работу.
Скажем так, это требует не только тонны технических знаний, но и интуиции.
Фаззинг находит easy-to-find баги по большей части, к тому же он неэффективен в поиске логических багов. Всё куда сложнее.
Надо вместо push ecx сделать джамп наверх и там разместить доп. код для проверки русских букв, чтобы они тоже как ascii были, правильно я понимаю?
Щас попробую
а блин, только не вместо push, а просто jnb исправить наверх.
Для проверочки обычно можно юзать чит энджин. А вообще не поможет. Если у русских чаров ставить 1 они идут в разнос. Там проблема где-то глубже. Надо дальше копать. Но смотреть именно после этого что происходит с ascii и не происходит с юникодом.
Вроде работает, проигнорировал тот jnb когда в eax был чар буквы п. То есть игра должна была наткнуться на GetStringTypeW, но вместо этого она просто вышла из процедуры.
Надо придумать как подсунуть доп проверку, у меня тут ошибки типа analysis assumes that byte you are pointing at is not the first of valid command. Помогите
Это другое
Хз как ты это сделал. По сути делаю то же самое. Глифы начинают ебаться
Ан нет, не всё так просто. Кириллицу я починил. Теперь латиница по пизде пошла. Плюс еще в логе всё по старому.
Чё сделал?
На пикче я вручную тот джамп игнорил, чтобы он не срабатывал. Сделал всё также только только кодом и буквы посыпались. Не пойму в чём разница.
Думаю для русских букв нужно правильно выставлять параметры в GetStringTypeW, потому что если делать всё как для ascii(делать тупо выход из процедуры, как делают символы ascii), то дальше игра всё равно неправильно распознает символ, т.к. ascii из одного байта, а unicode из двух. Думаю, для этого надо инжектить дллку.
Фигню сказал. Там просто тупая проверка. Если аски на выход единица, если юникод 2. Затем берем ширину по умолчанию 0x17 умножаем на выхлоп нашей функции, затем делим на 2 = конечную ширину символа.С русскими буквами в любом случае проблем нет. Можно даже еще поиграться с переменными и сделать поменьше расстояние. Либо найти подходящий шрифт.
Понял.
Красава, скинь потом переведённый вариант, а то дополнительный интерес к игре появился)
Какие? Вот тот же joru двачером обычным был, сидел на мертвых форумах, малварь писал даже. Ничего сверхъестественного они не делают, ты бы также хуячил с поддержкой от гугла. Руками никто ничего не ищет, только автоматикой, но тулзы и примитивы тебе нужно самому писать и подтачивать под каждую цель, для этого нужно предварительно все тщательно исследовать.
Когда-нибудь. Если переводчик не забьет. Но я его буду пинать. Зря что ли 4 дня в ассемблере копался.
>Руками никто ничего не ищет
Проиграл. Я не спорю, что фаззеры используются, но ты не найдешь все баги благодаря нему. Я читал много райтапов от project zero, у них немало найденных багов чисто на интуиции. Порой цель может быть такой заебистой для сетапа харнесса, что легче ручками поискать в опасных местах, нежели фаззить ее.
И да, современные митигации превращают эксплуатацию в искусство. Для рабочего эксплоита в наши дни, как правило, нужно минимум 2-3 разных багов для обхода современных митигаций.
Давай определимся для начала что значит руками. Я это интерпретирую так: дропнуть бинарь в иду и до посинения дрочить листинг. Так естественно никто не делает. В ресерчах ты видишь лишь малую часть того, что происходит за кулисами, тебе кажется что аналитик сделал свои выводы интуитивно, на основе опыта, только потому, что он уже имеет крашдамп подтверждающий факт наличия уязвимости, после чего он пытается логически дойти до того же места обратным/ручным путем, чтобы это можно было красиво и слаженно опубликовать. Классический случай ошибки выжившего.
Также не забывай, что фаззерами дело не ограничивается, есть и другие инструменты. Да и само качество фаззера зависит от многих факторов, включая предварительную подготовку к цели.
Я это и не имел в виду. Читать листинг в тупую - это действительно не имеет ничего общего с реальностью. Но даже для того же фаззинга тебе нужно сделать эмумерацию векторов ввода, простым языком - тебе нужно понять как программа получает ввод извне, и далеко не во всех программах это легко отследить. Да, есть тулзы наподобие bpftrace (dtrace на стероидах), но в конечном итоге тебе нужно сделать немало реверс-инжиниринга для того, чтобы понять как слать данные в программу. Ты не можешь просто запустить фаззер и бросать ввод в программу, тебе надо засетапить харнесс, что и требует предварительного РУЧНОГО реверс-инжиниринга. Не знаешь как и сколькими путями программа получает данные извне == сосёшь хуй, не имея возможности даже пофаззить.
И ещё. Есть разница реверсить под линукс и под винду? А то я на линуксе сижу уже не первый год
>reverse/pentest
Так в реверс или в пентест? Это 2 диаметрально противоположные отрасли. Настолько, что 99% требуемых скиллов даже не пересекаются между собой.
>Есть разница реверсить под линукс и под винду?
Огромная. Это ведь разные операционные системы, причем отличия между ними разительные. И в самой архитектуре ОС, и в тулинге, да вообще во всём.
Реверс в таком случае. А почему кстати в большинстве вакансий эти навыки пишут вместе?
Перечислите инструменты для ревёрса
Реверс - это инструмент, а не отдельная специальность. Есть чуваки, которые реверсят малвари, есть те, кто реверсят с целью промышленного шпионажа, а есть те, которые используют реверс для поиска уязвимостей в софте. Все предметные области, связанные с реверсом, сложны для вката. Тебе прежде всего нужно нырять в дебри ОС, на первых порах даже какой-то конкретной. Потрать время на разработку системного/околосистемного софта, выучи один из языков ассемблера. Если хочешь вкатываться в поиск уязвимостей, то наберись терпения, на стажировку без связей вряд ли вкатишься, потому что на такие должности ищут уже как правило сформированных спецов, у которых за плечами минимум парочка CVE на их имя. С твоими входными вкат в реверсинг малварей - 3-4 года, в поиск уязвимостей - 4-5 лет. Но это просто моё предположение, может тебе повезёт, а может и нет. Может мотивацию где-то посередине потеряешь. Всё зависит от огромного количества факторов. Что уж точно - не жди быстрых результатов, это очень брутальная отрасль для вката с высоким порогом вхождения.
Спасибо большое за развернутый ответ. Успехов тебе!
попробуй ctf таски на бинарную эксплуатацию и реверс порешать, а потом подумай, что реальные проги куда сложнее и забей уже хуй на это реверсоговно. Бери нормальный язык и пиздуй на РАБоту
мимо
1) Вот например, мы знаем, что на соврменных процессарах intel новее семейтсва p6 (вроде p6) все store'ы/load'ы, не пересекающие границу 64 байта кэшируемой памяти, атомарны. Уже мьютекс не на каждую ячейку.
2) Можно было бы у текущих двух тредов брать какой-то сегмент кода и максимально по возможности проверять адреса сторов и лоадов памяти, и исходя из этого уже принимать решение нужно синхронизация или нет.
3) Сделать очереди сторов для каждого ядра, как это сделано у Intel, например. Заодно можно было бы memory order тестировать.
Сорян за кашу и неточности, у самого каша в голове пока на этот счёт.
Я тут подумал выход. А есть варик вкатиться куда-то на первое время? Типо там QA какой-нибудь или вообще область какая-то в которой скиллы как-то релевантны будут
Вкатись в системный погромач
>Реверс
>QA
Ору. "Мужики, вкачусь в кассиры, чтобы стать топ менеджером!". Связи вообще нет никакой, куа макаки не шарят ни за ассемблер, ни за тонкости работы ОС если сами на досуге этим не интересуются офк, но их специальность этого не требует, ни тем более за уязвимости и примитивы эксплуатации. Как твоя голова родила мысль, что эти две отрасли вообще хоть в чем-то связаны между собой?
Анон выше посоветовал вкатиться в системщину - вот это здравый совет, так как системное программирование натаскает тебя по части ОС как следует.
Конкретноый проблемы нет. Вопрос теоритический. Почему все игнорируют кэши. Ведь ядро внутри себя использует атомарные примитивы и полагается на мэмори одэр. Юзерспейс использует атомарные операции и полагается тоже на мэмори одэр. Те же lock-free. И просто понять хочу, если бы пришлось это симулировать, как это оптимально можно было бы сделать.
>Тогда уж всю микроархитектуру эмулируй
А разве memory order и atomic ops относятся к микроархитектуре? Микроархитектура определяет, сколько циклов отнимают у проца всякие синхронизацтт кэшей и прочее. Поэтому не понимаю наезда твоего.
Не наезжал я. Просто не понятно. Какие баги ты хочешь отлавливать, эмулируя кэши? Может быть для этого нужно будет учитывать особенности конкретной микроархитектуры или модели CPU. Протоколы когерентности кэша разные есть для x86.
>>1969659
антоши, я просто теоритический интерес проявляю, как это можно сделать в таком симуляторе как bochs чешу языком.
>Может быть для этого нужно будет учитывать особенности конкретной микроархитектуры или модели CPU. Протоколы когерентности кэша разные есть для x86.
если у тебя симулятор будет работать в несколько своих тредов, то для проявления багов с атомарными ОПами и барьерами памяти, то этого уже достаточно будет для случайного проявления багов.
Всё же опишите словами хотя бы, как можно было бы сделать такую эмуляцию в киму и боксе. Лучше в боксе
Если ты имеешь в виду поиск софтверных багов, связанных с многопоточностью (дедлоки, состояния гонок), то достаточно эмулировать само мультипоточное исполнение и хукнуть функции лока/анлока мьютексов.
Я не знаю в подробностях что у бохса есть за кулисами, но вангую, что тебе придется писать всё с нуля или модифицировать код самого бохса под свои нужды, что может быть даже еще сложнее.
А в системщики как вкатиться? Плюсы дрочить на пару с асмом и из таненбаума пытаться реализовывать всякие приколюхи? И сколько на это время уйдёт до уровня бомжа за еду?
А по поводу того как моя голова родила мысль могу расписать как такая извращенная фантазия родилась, раз интересно. Что-то по типу того, что куа дурачки находят ошибки в говнокоде своих джунов, а реверсеры разбирают софт который был написан кем угодно и если надо его патчат хуячат. И если надрочиться на анализ кода дурачков и нахождение ошибок, то с реверсом попроще потом будет. Но видимо реально чушь спорол
>А в системщики как вкатиться? Плюсы дрочить на пару с асмом и из таненбаума пытаться реализовывать всякие приколюхи? И сколько на это время уйдёт до уровня бомжа за еду?
Системщики пишут драйвера, прошивки, разный йоба рантайм, хуйлоуд, эмбеддед. Всё еще зависит от того где ты живёшь. Если ты из СНГ параши, то земля пухом, лучше задумайся о веб-дрисне, я не шучу.
>Но видимо реально чушь спорол
Да, полную ахинею. Реверсеры имеют дело с закрытым софтом (иначе это не реверс-инжиниринг, а хуйня из-под коня) и имеют минимум инфы с точки зрения кода. И они должны шарить за асм, OS internals и архитектуру компьютера в целом. Это другой уровень понимания того, что есть компьютер в принципе.
Да у меня аида просто пару дней отмирала, так что думал на ольку перекат организовать
Написал хелло ворлд на плюсах пик 1.
Чтобы поподменять на пошёл нахуй и всякое такое.
Когда вскрываю аидой по очевидным причинам подтягивается вся <iostream> и ещё немного кишочков пик 2. Собственно вопрос. Как сделать так, чтобы только нужный контент оставался? Не ручками же скрывать наверное...
Никак, я думаю. Ты заинклюдил весь хэдэр iostream, вот ты и получаешь всё его содержимое. Когда ты компилишь бинарь, компилятор в стадии препроцессинга резолвит все дефайны и инклюды, чтобы были сделаны, и тупо делает find & replace, засим все, что есть в хедере, является частью объектного файла, который потом линкуется и высирается в виде готового бинаря. Пользуйся поиском подходящих функций, в чем проблема-то?
ну, наверное, всё же не всё попадает. Тем более из include'а. Как же всякие code elimination
мимо
Хочу знать, как устроены и работают современные процессоры. Я где-то отрыл описание древних Pentium 1, что там есть два конвеера U+V, спаривание инструкций, видел сколько требуется тактов на те или иные операции, пенальти на невыровненный доступ к данным, и много что ещё.
Мне нужно знать что-то подобное про современные процы. Я читал доки Intel, Software Optimization Guidelines, кажется. Там многое непонятно. Например рассказывается что есть какие-то порты микроопераций, приводятся схемы процессора, но что из себя представляют эти порты, как работают, какие у них характеристики - всё это за гранью понимания. Где можно внятно про это узнать?
Или вот меня интересует, сколько тактов выполняются различные SIMD инструкции?
Могут ли они выполняться параллельно другим инструкциям? Вот вроде FPU инструкции так могут.
Благодарю.
>Cultural Selection Theory
>Book: Cultural selection
>Predictions based on cultural selection theory
>Evolutionary biology
>Random number generators
>Software optimization resources
Сначала ничего не понял, потом слегка проигрунькал, но всё же так ничего и не понял.
Зачем. И так хорошо сидим.
А вообще шапку надо переделывать - старая протухла. Кстати, кто в теме, накидайте свежих реверс-рилейтед ссылок для шапки.
а чего ты не понял-то? Я могу обманывать, но по-моему, Агрен Фог чувак, который обнаружил, что при смешанном использовании sse и avx инструкций, появляется некая задержка, связанная с подачей питания на вторую часть ymm регистра. Но это в инете уточни. А чего непонятного-то. Ты просил ресурс - я написал.
это как если бы спросили "с чего начать изучать Си", а в ответ дали ссылку на персональный сайт Кернигана/Ритчи, где помимо последнего эдишена C language, также располагались результы исследования в молекулярной биологии, трактат о любви и чья-то курсовая работа на тему влияния имиджборд на развитие человечества.
это и есть тот самый hardware-based для cfe, который делать пиздарики для эксплойтов?
Один из, не только. Конкретно эта инструкция защищает от прыжков в произвольные адреса. Есть защита backward edge (aka shadow stack) и forward edge для защиты от произвольных прыжков и вызовов произвольных функций. Цель этой технологии - убрать возможность перехватить поток исполнения программы.
тебе не понравился чувачок что ли? Вот годнота https://www.agner.org/optimize/microarchitecture.pdf ,
вот ещё https://www.agner.org/optimize/instruction_tables.pdf . Etc...
Существует нормальный учебник с упражнениями для начинающих?
Сап, реверсач.
Пытаюсь запустить линуксовский бинарник на мобиле.
Он откомпилен под андроид и работает, но не у меня.
При запуске выдает:
soinfo _relocate (linker.cpp 987): cannot locate symbol "_strchr_chk"
Откуда оно берет этот _strchr_chk? Из ядра? Из so модулей?
В репозитории ничего нет.
так скачай его, затупок
>взломом сайтов
>прошивок
>sql инъекции
Анон, у тебя пиздец каша в голове, ты мешаешь в одну кучу диаметрально противоположные отрасли. У тебя есть юэкграунд в программировании вообще? Реши что ты хочешь - лоу лвл (ОСи, прошивки, драйвера и прочие бинари) или хай лвл (сайты и прочие веб-приложения). Если ты хочешь устроиться на работу в инфосеке, то выбирай хай-лвл, поезд лоу-лвла уже прошёл и отрасль загибается, плюс это сложнее в 50 миллиардов раз.
Да. Я K&R прорешал большую часть. Лоу лвл больше привлекает
Эту https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244 читаю понемногу, после "Кода" Петцольда вроде неплохо идет
Вот тебе и лол. Ты вообще в курсе что происходит с митигациями в бинарщине? Там CFI уже нереально закрутил гайки. Осталось только ввести memory tagging extension (сперва воврется в ARM, хз че по интеловским процам) и всё, пиздец. Уже сейчас при достаточно хорошей имплементации CFI практически невозможно перехватить поток исполнения программы. Бинарщину победили через много слоев митигаций, каждая из которых на протяжении этих лет только сильнее закручивала гайки. Через лет 7-8 исследователи полетят с работ, ибо ловить будет уже нечего. Из лоу лвла останутся только хардварные дыры, которыми будут заниматься полтора гигамозга на всю планету. А вот в вебе до сих пор есть где разгуляться, поэтому веб-дыры живее всех живых. И если анон хочет почувствовать себя кулхацкером и поднять лаве на баг баунти, то ему прямая дорога в веб, но никак не в бинарщину.
Вопрос по архитектуре х32 и х64, я правильно понимаю что используя систему на х64 на хранение данных будет расходоваться больше памяти? Допустим нам нужно сохранить в регистр 8 бит информации на х32 системе, 8 бит сохраним а остальные неиспользуемые забьются нулями? Соответственно на х64 одна ячейка потребует в джва раза больше места что бы сохранить те же 8 бит?
>на х64 на хранение данных будет расходоваться больше памяти?
нет. в x64 появляется доступ к старшим 32 битам gp регистров, доступ к восьми дополнительным gp регистрам (r8-r15), "удваиваются" sse регистры, а также увеличивается размер адресного слова с 32 до 64 бит (хотя эти значения могут зависеть имплементации).
последнее подразумевает больше вычислений при трансляции эфективного адреса в адрес физический, но приэто вырастает размер виртуального адресного пространство с 4 гигов до ебинских значений.
алсо
>Flat-segment address space with single code, data, and stack space.
но я сам не совсем понял что это значит.
>Допустим нам нужно сохранить в регистр 8 бит информации на х32 системе, 8 бит сохраним а остальные неиспользуемые забьются нулями?
если нечто вроде
mov al/ah, <src>
то остальные 24 бита в eax останутся прежними.
>Соответственно на х64 одна ячейка потребует в джва раза больше места что бы сохранить те же 8 бит?
не совсем понял, что за ячейка. во всех модах 8 бит хранятся как 8 бит.
Разбери какую-нибудь (любимую, но которую ещё не разбирали) старую игрушку. Лучше под дос или раннюю винду (но можно и под игровые консоли) и написанную не на ассемблере.
Более блядскую формулировку придумать не смог?
>Господа, как вывести содержимое регистра в консоль?
Типа, если у тебя в RAX записано 0xdeadbeefcafebabe, то тебе надо вывести 0xdeadbeefcafebabe в консоль через stdout? На чистом асме или как?
>как мне посмотреть что туда записано
Через отладчик, блять, что за тупой вопрос?
>как узнать что туда можно записать?
Регистр - это, абстрактно говоря, контейнер определенного размера для битов. Если у тебя есть 64-битный регистр, то ты можешь записать туда любое число от 0 до 2^64 - 1 включительно. Глупый вопрос, походу ты не до конца понял что такое регистр.
Формулируй свои вопросы нормально, блджад!1
Не бывает глупых вопросов, в этом сама суть вопроса-прийти к истине при нехватке знаний и опыта. Новые знания порождают больше вопросов. А тебя, наверное, в детстве пиздили за каждый 'глупый' вопрос, поэтому ты вырос агрессивным и озлобленным. Но суть не в этом. Благодарю за пищу для размышлений, все что я хотел узнать я узнал)
Например, какой, что лучше фасм или насм, и как потом и где это можно применить? Что вообще на асме можно писать делать?
Какая разница? Nasm, fasm gnu as - это инструменты. В них немного различается синтаксис, кто-то чуть большими возможностями обладает, кто-то чуть меньшими. Это можно применить в реверс-инжиниринге, написании драйверов, написании кейгенов, написании демок. В целом, важной особенностью изучения является понимание работы ос и железа, что бы потом не выдавать хуйню, любимую долбоебами джавистами: "добавьте диск/память, они сейчас дешевые".
> Господа, как вывести содержимое регистра в консоль?
Сохраняешь содержимое регистра в память, далее переводишь значение регистра в печатные ascii символы, затем выводишь на stdout (если в linux. что в винде не знаю). Или тебе готовую программу написать?
>добавьте диск/память, они сейчас дешевые
ну может быть и не такие дешевые, тем не менее дешевле, чем программная оптимизация. асло неужели посредством инлайнов можно переиграть конпелятор?
Если не считывать файл целиком в память - это программная оптимизация, то хуй его знает. При таком подходе, лучше не программировать, конечно.
>Если не считывать файл целиком в память
силами джавы нельзя несколько байтиков из файлика достать?
кто сказал нельзя? тот же wine написан во многом за счет реверсинга винды
Ну и чё еще нет кода винды в открытом доступе?
реверсить можно, нельзя отреверсенное исопльзовать потом где то. В том же вайн и/или реакте.
Но разрешается: один человек реверсит и пишет документацию, втрой по документации пишет новый код.
>>1998149
на васме в ресурсах лежит, но за последние года полтора там особо не менялось, чуть форматирование, чуть копирайты, чуть опечатки по тексту
В новую будущую шапку пожалуй стоит добавить еще Работа с ядром Windows - Йосифович П. 2021 (https://habr.com/ru/company/piter/blog/550822/), для тех кто под вендой хочет писать/ковырять драйвера и т.п. для вкатывания самое то.
краткий пересказ перевод есть тут (https://github.com/XShar/Windows_Kernel_Programming) , официальный перевод в интернетиках уже имеется.
спроси у разрабов вайна/реактос куда они понаписали то что нареверсили.
А так, из старого, еще результаты реверса есть в
Мэтт Питрек "Секреты системного программирования в Windows 95"
Мэтт Питрек "Внутренний мир Windows"
(обе книги есть в элеткронном виде)
Мне присралось сделать простенький трейнер для Worms W.M.D. под Мак с помощью Cheat Engine.
Отображаемые на экране значения статов (здоровье итд), как я понял, вычисляемые из какой-то переменной, которую я не могу найти, точнее мне не хватает знаний, поэтому пришёл попросить помощи.
Итак. Я отловил два неких значения, отвечающих за отображение здоровья на экране (первый скрин), нашёл, что обращается к этим значениям (второй скрин), поставил точку останова (третий скрин), но дальше я затупил и не знаю, что делать
Пардон, первый скрин перепутался. Вот какой должен был быть
У тебя там ret на 3 пике. Выходи из функции и ставь точку останова перед входом. Дальше сам
Ушёл читать про Ассемблер дальше
Блять, как вообще этот дизассемблер читают люди? Я вроде изучил как память работает, регистры и по сути все, что представляет из себя ассемблер х86/х64, но как только я открываю дизассемблированный код в статических и динамических анализаторах - я тупо не понимаю как это можно на полном серьезе читать, если работаешь не с хеллоуворлдом. Вот дебажу я обращение к памяти, нахожу конкретную строку с mov, и? Как вообще можно даже начинать читать этот код, если этот мов может быть частью какой-нибудь говнофункции на пару тысяч (это если повезет) строк ассемблера, тогда как в плюсах говнокодер просто сделал 10-15 строк кода? Для меня пока это все представляется невозможным для человека, ведь по сути у нас для исследования - ебаный брейнфак, порожденный оптимизатором компилятора.
Как вообще можно без анальной боли и буквально построчного чтения брейнфака с абсолютно бесполезным брейнфаком чуть повыше уровнем из гидры/иды на полном серьезе реверсить ту же компьютерную игру? Либо я не понимаю и не знаю про нормальные инструменты, либо реально надо быть гением и тратить годы на то, чтобы понять как работает 1 тысячная кода какой-то проги.
Никто не читает весь ассемблерный листинг,потому что тебе в хуй не нужно смотреть на весь код программы
В дебагере ставится бряк на условие
Будь то значение регистра,вызов определённой функции,новый процесс или еще что
Дальше уже читается собственно эта часть,смотрят откуда пришли данные и так далее
В случае восстановления кода программы используются декомпиляторы вроде хексрейса,смысла тупить в асм листинг нет
Суть - есть программа, нужно найти что будет происходить при установке флажка как на пике
Программа очень большая и судя по импортируемым функциям реализована через фреймворк Qt5, платформа Windows
Я так понимаю мне нужно найти процедуру окна в котором находиться этот флажок и потом посмотреть как там обрабатывается WM_COMMAND. Процедуру же найти можно через CreateWindow, но поскольку программа реализована через фреймворк то прямых вызовов к WinAPI нету. Поиск по строкам тоже не дал результата - строки которые находятся в этом окне не видит, видимо они подгружаются с длл или подобное
Также в программе есть множество видов окон поэтому и оконная процедура не одна
Это окно также не главное в программе а получается при нажатии кнопки в меню
Как лучше подойти к этой проблеме?
>прямых вызовов к WinAPI нету
Значит, должны быть 'непрямые'. Первым делом - нужно поставить бряки на вызовы нужных WinAPI. Без этого ты не поймёшь оконную структуру приложения и не сдвинешься дальше.
Далее найди WinProc, который получает сообщение от нажатия по этому баттону/чекбоксу. WinProc назначается окну при вызове CreateWindow или SetWindowLongPtrA. Адрес WinProc окна можно получить через GetWindowLongPtrA, зная хэндл окна (нужно вызывать из пользовательского треда). Хэндл окна интерактивно/визуально можно найти используя Spy++.
так можно?
mov ax, cs
mov es, ax
Криптор помогает обойти статический детект файла
Если файл палится в динамике,то ничего не поможет
Еще и с облачным декомпиллером
Шо такое, Ильфак? Конкуренция поджимает?
Видимо гидра и ниндзя в спину дышат. Лучше бы этот долбаеб ценник уменьшил до приемлемого уровня, ида уже хуй сосать начинает у х86 декомпилятора гидры, такими темпами скоро и забесплатно не сможет втюхивать ее.
Сейчас бы в 2к21 продавать хоум эдишен одну версию без обновлений за 350баксов плюс по 350 баксов за дополнительный тип процессора в декомпиляторе. Удивлен, что они еще на плаву держатся с такой ебанутой системой ценообразования.
а как файлы палятся в динамике? Ну если исключить очевидные вещи типо форматирования диска и подобного
В моем понимании AV эвристики, как социальный рейтинг у китайцев - сказал плохо о партии заинжектился к кому-то, прописался в авторан, наоткрывал сетевых соединений без гуя, получил штрафные баллы. По отдельности не критично, но стоит набрать n-ое количество баллов - качество жизни может упасть сработает алярм.
Просто я вот что понять не могу. Если есть уже известный вирус, то ав сначала просто exe без исполнения забракует, потому что знает, что это вирус. Криптор помогает эту проблему обойти, но в рантайме все равно же опять этот уже известный вирус. Так что мешает точно так же в рантайме забраковать exe (я сейчас говорю о вирусах, которые сами по себе может ничего сверхплохого со стороны системы не делают.Те же самые майнеры, которые просто что то по интернету передают, да считают или логгеры какие нибудь)
include masm32\include\kernel32.inc
invoke ExitProcess, 0
то работает, а так нет
Вот есть некий процессор, команды ISA которого выполняются непосредственно аппаратно, на уровне микроархитектуры, а поэтому мы их и называем машинные коды. Есть процессор, который имеет некоторую микропрограмму и соответственно его ISA интропретируется этой микропрограммой и выдает микрокод уже для микроархитектуры. По сути для него есть некоторые самые фундаментальные машинные коды, те самые, в которые все превращает микропрограмма, называемые микрокодом, но так как этот уровень не доступен для не работника интел, можно сказать, что его ISA это машинный код, посчитав микрокоманды за часть микроархитектуры. Это как на arm процессоре обычный ISA посчитать микрокодом, создать программу-траслятор, назвать её микропрограммой и создавать cisc на основе arm, считая машинными командами собственноручно написанные команды твоего транслятора, отнеся этот прежний ISA и нынешний микрокод на уровень абстракции пониже. В таком случае ты как бы разработчик микроархитектуры, потому что теперь можешь менять микропрограмму, создавая новые сложные команды, к примеру.
было бы не жалко если бы не:
500 руб - Только одна версия, нет бесплатных обновлений, нет скидок при повторных покупках
1500 руб - 1 год бесплатных обновлений (2 года при вторичной регистрации)
>Я говорил точечно про бинарную эксплуатацию. Именно лоу-лвл хакинг. Он уже в умирающей стадии, да.
>Всегда нужны системщики, способные писать античиты для очередных быдлоигр
Может кто пояснить что несёт это чучело? Зачем нужны античиты, если из его простыни в несколько постов следует, что всё хуями обложат настолько, что хуй че сделаешь?
>античиты
>бинарная эксплуатация
Ты путаешь тёплое с мягким. Тот анон говорил про взлом программ с целью достижения исполнения произвольного кода когда ты нажимаешь на Enter и у тебя рут на чужой системе/удаленный шелл в другой девайс а иногда и то, и другое. Это реально стало дико сложным и в ближайшее время может совсем потухнуть именно в байтоёбской среде.
Античиты к этому не относятся никоим образом, античиты можно реверсить и патчить, так как они находятся на твоём компьютере, там абсолютно другой челлендж.
Это копия, сохраненная 19 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.