Естественно «null pointer assignment» говорилось только после выхода из программы, а не при самом присваивании, GPF ведь в те времена не ловили. Так что ни конкретной переменной, ни конкретной функции, ни номера строки в которой произошла эта «бяка» узнать было невозможно, озвучивался только сам факт что «где-то вот кто-то по нулевому указателю что-то нагадил». И естественно таким образом детектировалась только запись в NULL, а не чтение оттуда.
В результате раздел данных начинается с адреса (данных) 0. Резервирование двух байтов в начале адресного пространства позволяет обеспечить то, что ни переменную, ни что-то другое в разделе данных нельзя расположить по адресу 0.
А в досе можно было положить. И на этот случай в борландовском Turbo C по этому адресу лежала строчка копирайта Borland International. А в досовском Quick C лежала строчка копирайта Microsoft. И при выполнении выхода из main CRT подсчитывало контрольную сумму этой строчки и при несовпадении жаловалось на «null pointer assignment», тем самым сообщая что где-то в программе произошло присваивание по адресу NULL (никакого защищённого режима в те времена естественно не было и никто никакие GPF и прочие иксепшены прямо в рантайме не умел).
Кстати, x64dbg и x32dbg в принципе хорошее развитие, только они пока ещё не дошли до стабильности того же OllyDbg первой версии, полностью 32-битного ещё. Я слежу за развитием x64dbg и x32dbg, но пока что нет. Близко уже, но пока что нет.
Сразу же одна весьма изматывающая особенность: если в OllyDbg первой версии нажать F12 для останова внутри отлаживаемой программы то OllyDbg первой версии останавливается именно внутри отлаживаемой программы, а x32dbg терминирует отлаживаемую программу полностью без возможности дальнейшего продолжения. Не всегда, но в 50% случаев. И это не есть хорошо. Поэтому как бы ни были хороши x64dbg и x32dbg, но пока они не дойдут в стабильности до OllyDbg первой версии они только красивые внешние подобия OllyDbg первой версии, не пригодные для реального использования на программах сложнее «Hello, world!» (образно говорю).
Отвечу так: «и почему ты упорото экстраполируешь свою узенькую направленность на всё человечество?»
Если тебе, лично тебе так прельстивы и любовны именно 64-битные приложения, то не надо говорить за всех. Я говорю не конкретно за себя, я говорю про огромную базу тех, кто пользуется и продолжает пользоваться именно 32=битными программами. Ты же говоришь только за себя и пытаешься свои хотелки выдать за хотелки всех.
Это у тебя слишком узколобое представление. Моя сфера деятельности не использовать готовые программы, а писать программы. И заказывают почему-то 32-битные. Потому что клиентам надо именно такие. И деньги мне платят именно за 32-битные программы. И ни разу никто не хотел 64-битную версию.
Всё, разговор на эту тему заканчиваю, ты непробиваем.
Ты автор Adobe, Avid, Steinberg, Blackmagic Design, Colorfront, The Foundry, Quantel, Fraunhofer, In2Core, MTI? Или компания в которой ты работаешь автор Adobe, Avid, Steinberg, Blackmagic Design, Colorfront, The Foundry, Quantel, Fraunhofer, In2Core, MTI? Нет? Тогда какого рожна?..
Говорю последний раз: я существую в продакшене, в котором надо поддерживать уже существующие версии, которые, сюрприз, 32-битные! И речи о том чтобы перевести их на 64 бита не идёт — это слишком затратно, долго по времени и просто невыгодно, понимаешь, НЕВЫГОДНО для бизнеса. Свои pet-проекты можешь делать какие угодно, это твоё право. Но в бизнесе, который уже давно выпускает своё ПО, так же давно сложилась своя ниша, которую менять только из-за прихоти какого-то ALF_Zetas никто не будет. Ты не поверишь может быть, но существуют годами работающие программы, которые требуют, понимаешь, требуют для своей работы Windows XP и не выше. Или вообще голый DOS.
Так что я живу не в дыре, а в реальном мире, а ты в каком-то выдуманном мирке, который существует только у тебя в голове и с реальным миром не имеет ничего общего. И это ты выкручиваешься, а не я, это ты всё пытаешься натянуть сову на глобус, оправдывая всеми возможными, а в принципе уже невозможными способами глупость, которую ты сказал несколько дней ранее.
Я не придумал, я вижу что вокруг. А вот ALF_Zetas явно придумывает какие-то ему одному ведомые вещи. 32-битных приложений, именно приложений, а не OS, сейчас пока что большинство. Так что хватит уже откровенную чушь молоть, надоело, ей-богу.
Не надо уходить от ответа, хотя понимаю: прижали к стенке и крыть нечем, поэтому и начали выдумывать всяких сферических коней в вакууме. Но всё же повторю вопрос: если Themida поверх 32-битного приложения (а таких пока что большинство)?
1) Слабо декомпилировать в IDA какой-нибудь .exe, закрытый сверху Themida? Вообще без OllyDbg? Если ответ утвердительный, тогда прилюдно съем свою шляпу после того как мне это покажут (хотя я шляпы не ношу, но специально куплю по такому случаю и съем её).
2) Не зная куда в каком месте ответвится программа упреешь смотреть на результат декомпиляции какого-нибудь .exe весом, скажем, 10 мегов и он подгружает ещё custom dll в общей сложности мегов на 15-17 (это реальный размер того, чего я в данный момент смотрю в OllyDbg) — жизни не хватит понять что там да как.
Ну если свои pet-проекты называть «продакшн» то верю, вполне такое может быть. А если это именно продакшн, в котором надо поддерживать уже существующие версии — тогда не верю, это не «продакшн», а так, фигня какая-то.
Не всегда по декомпилированному в IDA/Ghidra коду можно понять логику «с лёту», иногда требуется и пошаговая трассировка. Пример — подключение какого-нибудь внешнего устройства USB. При пошаговой трассировке прекрасно видно что происходит, какие пакеты приходят, какие уходят. В IDA/Ghidra это тоже можно посмотреть, но там получается куча веток для других возможных устройств, а нужно посмотреть только для конкретного. Упреешь в IDA/Ghidra искать именно нужную ветвь. В этом случае OllyDbg даёт фору IDA/Ghidra на сто шагов вперёд.
Да, блин… Фильмы я вообще-то не смотрю, специально их скачивал с торрентов только для того, чтобы узнать какие цифры сегодня надо добавлять к адресу сайта, 22 или 33 чтобы не было проблем с доступом к Джой Казино… И как я теперь буду жить без этой информации?
PS: это был ответ на самый первый комментарий, промахнулся с веткой.
А если официально разлочить бутлоадер (последние модели самсунгов позволяют сделать это официально, через меню), то Knox уходит безвозвратно? И его после уже никак не вернуть?
Да, привычки, согласен. Но раз в массовость вошло, раз с младых ногтей учат что приёмник слева, а источник справа, то это значит что это уже лет с пяти как минимум именно интуитивно. Не знаю как там у тех кто пишет справа налево (арабы, евреи и т.д.), но у всех остальных интуитивно «i = 5», а не «5 = i».
И ещё чего вспомнил. В те времена всякие кракеры да релизеры частенько специально «портили» строчку «Turbo C++ — Copyright 1990 Borland Intl.» или «MS Run-Time Library — Copyright © 1990, Microsoft Corp», прописывая туда строку типа "-=~ Brought to ya by VeryC00l Team ~=-", а вместо строки «Null pointer assignment» вставляли какой-нибудь «Released by !M0n$teR!», в результате при штатном завершении игры CRT проверяла контрольную сумму копирайта, она само собой не совпадала и CRT выводила «Released by !M0n$teR!», чем вероятно сильно повышало ЧСВ кракера или релизера.
А в досе можно было положить. И на этот случай в борландовском Turbo C по этому адресу лежала строчка копирайта Borland International. А в досовском Quick C лежала строчка копирайта Microsoft. И при выполнении выхода из main CRT подсчитывало контрольную сумму этой строчки и при несовпадении жаловалось на «null pointer assignment», тем самым сообщая что где-то в программе произошло присваивание по адресу NULL (никакого защищённого режима в те времена естественно не было и никто никакие GPF и прочие иксепшены прямо в рантайме не умел).
Во какой я старый, во чего я помню!
Сразу же одна весьма изматывающая особенность: если в OllyDbg первой версии нажать F12 для останова внутри отлаживаемой программы то OllyDbg первой версии останавливается именно внутри отлаживаемой программы, а x32dbg терминирует отлаживаемую программу полностью без возможности дальнейшего продолжения. Не всегда, но в 50% случаев. И это не есть хорошо. Поэтому как бы ни были хороши x64dbg и x32dbg, но пока они не дойдут в стабильности до OllyDbg первой версии они только красивые внешние подобия OllyDbg первой версии, не пригодные для реального использования на программах сложнее «Hello, world!» (образно говорю).
Если тебе, лично тебе так прельстивы и любовны именно 64-битные приложения, то не надо говорить за всех. Я говорю не конкретно за себя, я говорю про огромную базу тех, кто пользуется и продолжает пользоваться именно 32=битными программами. Ты же говоришь только за себя и пытаешься свои хотелки выдать за хотелки всех.
Всё, разговор на эту тему заканчиваю, ты непробиваем.
Говорю последний раз: я существую в продакшене, в котором надо поддерживать уже существующие версии, которые, сюрприз, 32-битные! И речи о том чтобы перевести их на 64 бита не идёт — это слишком затратно, долго по времени и просто невыгодно, понимаешь, НЕВЫГОДНО для бизнеса. Свои pet-проекты можешь делать какие угодно, это твоё право. Но в бизнесе, который уже давно выпускает своё ПО, так же давно сложилась своя ниша, которую менять только из-за прихоти какого-то ALF_Zetas никто не будет. Ты не поверишь может быть, но существуют годами работающие программы, которые требуют, понимаешь, требуют для своей работы Windows XP и не выше. Или вообще голый DOS.
Так что я живу не в дыре, а в реальном мире, а ты в каком-то выдуманном мирке, который существует только у тебя в голове и с реальным миром не имеет ничего общего. И это ты выкручиваешься, а не я, это ты всё пытаешься натянуть сову на глобус, оправдывая всеми возможными, а в принципе уже невозможными способами глупость, которую ты сказал несколько дней ранее.
2) Не зная куда в каком месте ответвится программа упреешь смотреть на результат декомпиляции какого-нибудь .exe весом, скажем, 10 мегов и он подгружает ещё custom dll в общей сложности мегов на 15-17 (это реальный размер того, чего я в данный момент смотрю в OllyDbg) — жизни не хватит понять что там да как.
PS: это был ответ на самый первый комментарий, промахнулся с веткой.