HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 31.03.2018, 19:22
akatosh
Новичок
Регистрация: 05.05.2010
Сообщений: 0
С нами: 8431828

Репутация: 0
По умолчанию

Появилась потребность перевести свой dll с 32 бит на 64 (т.к. для инъекции в x64 приложение нужна 64 битная dll).

Простые функции записи значения в адрес и изменения инструкции (например заполнение кода NOP'ами) перевелись и работают нормально, но на ассемблерную вставку (__asm) компилятор ругается - гугл говорит, что в VS 64 битной версии такой возможности нет. Но мне это нужно для инъекции кода.

Хотел бы узнать, как это все делается для 64 бит в Visual Studio?

P.S. Пример на 32 битной версии:

C++:





Код:
DWORD jumpBack
;
void
_declspec
(
naked
)
hpFilter
(
)
{
__asm
{
cmp
[
ebx
+
10
]
,
1
je sled
        mov
[
ebx
+
4
]
,
eax
        sled
:
fldz
        jmp
[
jumpBack
]
}
}
bool
Hook
(
void
*
toHook
,
void
*
ourFunct
,
int
len
)
{
DWORD curProtection
;
DWORD temp
;
VirtualProtect
(
toHook
,
len
,
PAGE_EXECUTE_READWRITE
,
&
curProtection
)
;
memset
(
toHook
,
0x90
,
len
)
;
DWORD relativeAddress
=
(
(
DWORD
)
ourFunct
-
(
DWORD
)
toHook
)
-
5
;
*
(
BYTE
*
)
toHook
=
0xE9
;
*
(
DWORD
*
)
(
(
DWORD
)
toHook
+
1
)
=
relativeAddress
;
VirtualProtect
(
toHook
,
len
,
curProtection
,
&
temp
)
;
return
true
;
}
.
.
.
if
(
GetAsyncKeyState
(
VK_NUMPAD1
)
)
{
DWORD hookAddress
=
(
(
uint32_t
)
BASEADDR
)
+
0x265B7
;
// Адрес инструкции ( mov [ebx+4],eax)
jumpBack
=
hookAddress
+
5
;
Hook
(
(
void
*
)
hookAddress
,
hpFilter
,
5
)
;
}
.
.
.
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.