Как я могу внедрить 32-битный CodeCave в 64-битное приложение?

Как я могу внедрить 32-битный CodeCave в 64-битное приложение?

Я видел такие реализации:

      App.exe+CA5F6 - 4C 89 15 D37D5B01     - mov [App.exe+16823D0],r10
App.exe+CA5FD - E9 FE59CA82           - jmp 7FF748DA0000
App.exe+CA602 - 90                    - nop 
App.exe+CA603 - 90                    - nop 
App.exe+CA604 - 4C 03 C1              - add r8,rcx

Потом схожу по этому адресу и вижу вот это:

      7FF748D9FFFF -                       - ?? 
7FF748DA0000 - FF25 00000000 00001A0500000000 - jmp 051A0000
7FF748DA000E - 00 00                 - add [rax],al

Я слежу по этому адресу:

      051A0000 - 50                    - push rax
051A0001 - 53                    - push rbx
051A0002 - 52                    - push rdx
051A0003 - 4D 63 82 94000000     - movsxd  r8,dword ptr [r10+00000094]

Как он это сделал? Как мне реализовать это на C #?

Я могу ввести CodeCave, но если приложение 64-битное, оно всегда будет ссылаться на 64-битный адрес, как я могу ввести CodeCave, чтобы он ссылался на 32-битный адрес?

1 ответ

.NET MSIL не зависит от разрядности. Тот же MSIL может работать как x32 или x64. Или даже x128 или x16, если мы когда-нибудь получим среду выполнения для этих двоичных разностей.

Не .NET / native обычно предназначен для очень конкретной двоичной системы. У вас есть два способа справиться с неизбежными конфликтами:

  1. Тем не менее, установите целевой ЦП программы .NEt, чтобы разрешить выполнение только x32 или x64 для вашего MSIL. Обратите внимание, что обычно x64 предпочтительнее, когда он доступен, и x32 больше не следует использовать для всего процесса. Также вам, возможно, придется иметь дело с одним кодом, которому требуется x32, и другим, которому требуется x64.
  2. Вы оборачиваете код, имеющий «неправильную» бинарность, во вспомогательный процесс. Ваш основной процесс и помощник общаются через любой из подходов IPC - здесь вы можете «выбрать свой яд». Таким образом, код может работать так, как он разработан, в то время как ваш процесс не привязан к его бинарности.
Другие вопросы по тегам