x86 -> x64

Тема в разделе "WASM.X64", создана пользователем vx1d, 1 апр 2019.

  1. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    Можно ли из 32-битного приложения, запущенного под Wow64, исполнить x64 код?
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Mikl___ нравится это.
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
  4. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    Код (Text):
    1. 0:001> !wow64exts.info
    2.  
    3. Guest (WoW) PEB: 0x7efde000
    4. Native      PEB: 0x7efdf000
    5.  
    Всегда ли нативный пеб больше WoW на 1000h?
    --- Сообщение объединено, 2 апр 2019 ---
    получаю PEB64
    Код (ASM):
    1.             ;Switch x64
    2.             db    0eah
    3.             dd    label
    4.             dw    33h
    5. label: use64
    6.  
    7.             mov    rax,30h
    8.             mov    rax,[gs:rax]
    9.  
     
  5. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    Можно ли подгрузить в wow64 процесс 64-битную kernel32.dll (предварительно получив исполенение x64 кода)? будет ли библиотека правильно работать?
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    я бы не стал на это затачивать свои алгоритмы...

    почему не попробовать? как бы ntdll.dll есть, вызвать одну функцию всего лишь надо...
    --- Сообщение объединено, 5 апр 2019 ---
    интересный видос по теме heavens gate и wow64:
     
    M0rg0t нравится это.
  7. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    какую функцию? а то я через чтение файла собрался делать
    а поток который исполняет x64 код он будет win32 или натив?
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    LdrLoadDll... не понял вопроса по поток...
     
  9. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    ну бывают потоки (как я понимаю, могу ошибатся) зарегистрированные в csrss.exe (win32 из них можно делать к примеру UrlDownloadToFile) а бывают нативные из них UrlDownloadToFile не работает
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    ну тут надо тестить опять же... я слышал, что такая тема есть (в контексте именно сетевых функций почему-то), но никогда с ней не сталкивался... не могу ничего полезного тут сказать, извини...
     
  11. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    вроде бы переключился подгрузил kernel32.dll вроде бы и работает, user32.dll из windows\system32 подгрузил, но при вызове DllMain для инициализации получаю ошибку, вряд ли заработает:

     
  12. im.

    im. Active Member

    Публикаций:
    0
    Регистрация:
    16 сен 2017
    Сообщения:
    310
    Подгружать kernel32.dll и user32.dll не стоит, особенно последнюю. Работать нормально не будет, я проверял.
     
  13. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    повозился с загрузками этих либ, создал окно на Windows10 64битным кодом (на Windows7 user32!DllMain не отрабатывал) , но дальше был затык c user32.dll
    в моем случае user32.dll загружался, DllMain отрабатывал, но не полностью инициализировалось что-то) (проблемы с gSharedInfo и тд) и как результат некоторые gdi32 api не заработали
    углубляться в тему не стал, но осталось смутное сомнение что можно допилить:dntknw:
     
  14. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    на самом деле объясните мне, зачем вы изобретаете велосипед с этим хевенсгейтом? для большинства задач, таких как инжекты там, изменение контекстов потоков стороннего 64-битного процесса и тд вполне должно хватать нтдлл... зачем вы себе яйки перекрутили 32-битным РЕ, а потом в него пытаетесь 64-битные либы грузить?
     
  16. vx1d

    vx1d Member

    Публикаций:
    0
    Регистрация:
    13 дек 2016
    Сообщения:
    118
    ну как пример может понадобится для побега из песочницы или инжектов, не всегда ntdll хватает
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    ну как пример можно инжект написать на дотнете в режме anycpu, в этом случае один и тот же исполняемый файл будет запущен в 64-битном процессе на 64-битной системе и в 32-битном процессе в 32-битной системе))...
     
  18. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    kernel32.dll это всего лишь обертка, одного ntdll и правда должно хватать. Всегда можно в иде нужную длл подглядеть, переписать функционал. Вообще врата нужны чтобы сисколы из под wow64 вызывать, не знаю кто там либы придумал грузить.