x64dbg

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 27 май 2024.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Можно ли проанализировав код на примере сравнения двух файлов до и после, перенести
    алгоритм на другой файл примерно похожий предположительно, но с другими адресами?
    На что обратить внимание? Что тут важно иметь ввиду?

    [​IMG]
    Ну, тут понятно, наг скрин обойти. Хотя не понятно как это можно было изначально найти.

    [​IMG]
    Здесь тоже переход куда-то, стрелка обрывается, а переходить джампом я неуверен как правильно.

    [​IMG]
    Видимо сюда и был переход, хотя адрес джампа не совсем верный, почему?

    Я не настолько понимаю ассемблер, и сравнивал в основном байты внутри файлов.
    Видимо адресация другая и на новом файле не получилось это повторить.
    Хотя я нашёл все похожие команды. Особенно сложно с третьим скриншётом,
    как найти его адресацию? Кстати, в новом файле нету столько места как
    на третьем скриншёте чтобы весь код уместить, там в два раза нулей меньше,
    а дальше какой-то код к сожалению))

    Вобщем тут два файла, оригинал, изменённый, а третьий целевой, скажем более
    новая версия приложения.
    :blush:

    --- Сообщение объединено, 28 май 2024 ---
    Exception Offset: PCH_42_FROM_ntdll+0x00000000000979FA
    Exception Code: c0000005

    [​IMG]
    Новая версия с другими адресами.

    Так как 3-й кусок кода некуда было записать, выбрал места побольше где нули
    записал туда эти 16 байтов кода. Все джампы поправил правильно.
    3-й кусок кода возвращается, кстати, в продолжение второго куска,
    что вроде бы логично. Наверное кудато не туда записал, а что нельзя
    по желанию выбрать место для джампа? Запрещённая область памяти чтоли?
    --- Сообщение объединено, 28 май 2024 ---
    Кстати, идея, а можно этот 16-байтов кусками где-то втиснуть и джампами соединить в непрерывный код?
    А вобще что он делает, на что похоже? Вобщем push rdi потом идёт 2-й кусок.
     
    Последнее редактирование: 28 май 2024
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.153
    Можно.
    Разными способами, в т.ч. найдя процедуру, вызов которой приводит к нагскрину и наугад потыкав ветвления, пропускающие ее.
    Это по всей видимости весь метод объекта целиком заткнут безусловным переходом в какое-нибудь return true из другого метода или из него же самого.
    Если в оригинале нули, а в патче код, значит это врезка. Почему адрес неверный? На картинке такого не видно.
    Третий скриншот - отсебятина того, кто делал патч. Искать надо то, что оно лечит. То есть безусловный переход в эту врезку. А искать удобней всего по характерным вызовам апи или редким константам где-нибудь около нужного участка кода.
    Так и делается, если лень или что-то мешает расширить/добавить секцию кода.
    push <register>/sub rsp,<val> это типичный пролог процедуры. Сохранение значений регистров, которые будут искаверканы, выделение стек фрейма под локальные переменные, а в х64 еще и аргументы вызываемых процедур.
     
    Mikl___ и Semiono нравится это.
  3. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Врезка

    Там просто были нули свободные, а новая версия приложения уже перекампилированая и там теперь
    затык, меньше нулей оказалось.
    Я впервые этим занимаюсь, ничего не понимаю, просто тупо код перенёс)
     
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    610
    согласитёсь, квантовую физику в 3-ем классе школы не преподают?
     
  5. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Ладно, фиг с этой защитой, а вот крашится время от времени почему-то.
    Сделано на JUCE. Во время запуска я заметил из одного процесса .exe
    появляется второй процесс .exe --proc987654... с каким-то параметром
    типа того. Интересно что за прикол?
    Я вроде у Sysinternals видел когда из одного EXE появлялся второй
    либо 32 либо 64 по необходимости, но там хоть понятно.
    Кстати, вот на этом и крашится я думаю. Матрёшка))
    --- Сообщение объединено, 31 май 2024 ---
    Пардон, вот --giglad_progress:p50178566ee07200b параметр
     
  6. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    610
    GRAFik и Semiono нравится это.
  7. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
  8. miilalex

    miilalex Member

    Публикаций:
    0
    Регистрация:
    8 сен 2024
    Сообщения:
    45
    если бы я собирался снять защиту, то во времена w95 сделал бы слепок реестра до и после инсталляции и запуска программы, и сравнил бы что и куда пишется
    раз они предлагают полноценный триал с лимитом времени, значит где-то в системе ставится метка в момент начала триала и после проверяется, не пора ли душить небогатого пользователя )

    раньше был инструмент RegSnap и regmon от кажется Sysinternals

    другой вариант - поставить на виртуальную машину и аналогично сравнить что и куда пишет

    в винде не так много вариантов, где именно скрыть метку - это может быть и обычный файл с атрибутом системный и скрытый, и альтернативный поток к имеющимся традиционным файлам, но например в загрузчик или в пустые резервные сектора recovery винда понятно триальному приложению записать не даст

    если приложение не работает без интернета, вероятно что триал хранится на их домашнем сервере и ничто не мешает приложению куски кода считывать оттуда же для работы каждый раз в память, но не на диск пользователя.
    это плохо/сложно ломается (

    судя по JUCE если написать свой VST пустышку, можно создать ситуацию, когда приложение запустит его код
    в этот момент если сегменты кода приложения readable, можно посмотреть и сдампить, как вариант

    что касается разницы между версиями в заполненных нулями кусочках, это скорее всего padding то есть выравнивание компилятором адресов начала процедур до кратного степени двойки. 16, 32...
     
    Semiono нравится это.
  9. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Как можно узнать EXE/DLL инструкции? Мне тут вдруг сообщили что AVX-512 использует приложение. То-есть win8.1 можно забыть? Однако, с чего бы информация интересно?
    Скачал с гитхаб какой-то dumpbin по совету AI и стал делать /disasm в итоге LINK : fatal error LNK1171: unable to load mspdbcore.dll (error code: 126)
     
  10. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    602
    вики:

    > Как можно узнать EXE/DLL инструкции?

    Трассировать/транслировать приложение. Статик анализ не может обеспечить полное покрытие кода, в частности отличить данные от кода.

    Есть эмулятор расширений математики - intel SDE.
     
    Semiono нравится это.
  11. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    )) наверное link тоже использует AVX-512
     
  12. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.153
    Иронично, когда в треде про нормальный гуёвый отладчик пишут о том, что по совету чатбота пытались дизассемблировать исполняемый файл сраным думпбином.
    Ошибка 126 это когда линкер тупо не нашел указанную длл чтобы ее загрузить.
    Вообще если существует строгое соответствие между используемыми наборами инструкций и версией ОС, оно должно быть через MajorOperatingSystemVersion/MinorOperatingSystemVersion pe-заголовка отсеяно. То есть такой файл тупо не запустится. Будет ошибка про то, что файл не является корректным исполняемым файлом.
     
    Semiono и Mikl___ нравится это.
  13. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Откровенная тупость, не я понимаю люди старались, но чтобы дебаггер не запускался на вполне рабочей лошади как win8.1 это бред, ну я так думаю, может я ошибаюсь! Это же не Cubase!? Идиотизм.

    Starting with this release, we will be using CalVer (Calendar Versioning) with proper GitHub releases and tags. This will keep our releases more organized and allow package managers and users to reference specific versions more easily. Additionally Windows XP is no longer supported and for Windows 7/8.1 you will get an unskippable deprecation warning:

    Не, ну спасибо, что совсем не прикрыли. Отладчик по хорошему должен работать как автомат калашникова и в грязи и в пыли и в масле. Какая-то попса модерновая)
     

    Вложения:

    • Snap1.png
      Snap1.png
      Размер файла:
      6,8 КБ
      Просмотров:
      110
    Последнее редактирование: 22 дек 2025
    miilalex и M0rg0t нравится это.
  14. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    602
    Код (Text):
    1. if(BridgeGetNtBuildNumber() < 10000)
    2.     {
    3.         SimpleErrorBox(
    4.             this,
    5.             tr("Unsupported system"),
    6.             tr("You are running x64dbg on an unsupported operating system version. <b>Future updates will completely stop running on this system.</b><br><br>For more information, see the official <a href=\"%1\">announcement</a>.").arg("https://transition.x64dbg.com"),
    7.             "HideErrorUnsupportedSystem"
    8.         );
    вот.

    Код (Text):
    1. Windows 8    6.2    9200    2012-10-26
    2. Windows 8.1    6.3    9600    2013-08-27
    3. Windows Server 2012 R2    6.3    9600    2013-10-18
    4. Windows 10, Version 1507    10.0    10240    2015-07-29
    buildnum.
    --- Сообщение объединено, 22 дек 2025 ---
    f13nd

    Приложение само обычно определяет используемый механизм через cpuid. Но в данном случае необходима поддержка ос, например на уровне шедулера. Механизмы могут отключаться опциями или не поддерживаться железом, поэтому не могут однозначно быть привязаны к версии.

    Есть массив флагов, показывающих какой хард механизм поддерживает ос:
    Можно глянуть как ядро определяет, вероятно классика cpuid(7):
    Код (Text):
    1. Bit 16: AVX512F.
    2. Bit 17: AVX512DQ.
    3. ...
    В любом случае, если набор не поддерживается, возникнет фаулт при попытке декодировать инструкцию.

    Почему отладчик не работает на младших версиях действительно странно, для анализа часто используется минимально возможная версия ос, что бы не втягивался в работу лишний мусор".
     
    Semiono нравится это.
  15. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.649
    Идиотизм, но можно взять версию за 2018 год и юзать хоть на икспи. По сути, в чем разница между ними ? Исправлены какие-то баги? Функционал не меняется уже лет 10.
     
    Semiono нравится это.
  16. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Ну, как же! Сказали, что AVX-512 поддержку добавили в июле 2025 года. А мне какраз понадобилось проверить бинарь на это дело, правда я не знаю как это делается)))
    Позже даже выяснилось что это была ложная информация про бинарь. Да и я понял что это экзотика, аж Ryzon 9 кажись только поддерживает.
    Я даже из разных win8.1 win10 на свой проц заглядывал из cpuz, искал там AVX-512))
     
  17. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.649
    Semiono, учите виндбг и не забивайте голову этой чушью.
     
    Semiono нравится это.
  18. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    Детский, тупой вопрос) Я загружаю в дебаг файл и сразу же попадаю в NTDLL.dll и там возникает проблема на каком-то call.
    А как мне пропатчить файл чтобы исправить? Что ж я буду NTDLL ломать? ))
    Как это, проблема в файлике, а торчит внутри NTDLL и его не обойти)
    Ребус какой-то)
     
  19. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    602
    Semiono

    В каком месте проблема и какого рода, исключение ?
     
    Semiono нравится это.
  20. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    848
    [​IMG]
    --- Сообщение объединено, 5 янв 2026 ---
    Прога работает на Windows 10, хотя кто-то сказал что у него на Win8.1 запускается. Может пошутил)
    --- Сообщение объединено, 5 янв 2026 ---
    https://disk.yandex.ru/d/RS-AlzqOxeiu1g
    --- Сообщение объединено, 5 янв 2026 ---
    https://disk.yandex.ru/d/pzRPwFQqJ9jH4Q