x64dbg

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

  1. Semiono

    Semiono Member

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

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

    Semiono Member

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

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

    alex_dz Active Member

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

    Semiono Member

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

    alex_dz Active Member

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

    Semiono Member

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