Size: a a a

Ассемблер

2021 August 29

d

disba1ancer in Ассемблер
вот edi придётся на стек класть
источник

E

Entusiast in Ассемблер
А ESI, EBX, EDX у тебя свободны?

Сохрани в них EAX, EDI, ECX
источник

d

disba1ancer in Ассемблер
edx свободен
источник

d

disba1ancer in Ассемблер
у меня свободны eax ecx edx
источник

E

Entusiast in Ассемблер
Ну, по крайней мере, в EDX можно EDI сохранить. ECX в стэк, а EAX сохранять не надо, он будет нуль (точнее, возвращающее значение)
источник

E

Entusiast in Ассемблер
Точнее, не нуль, а значением, которым заполняется память
источник

d

disba1ancer in Ассемблер
зачем ecx в стек если он свободен?
источник

E

Entusiast in Ассемблер
Ну если у тебя вынесено это в отдельную функцию
источник

d

disba1ancer in Ассемблер
конечно отдельная
источник

E

Entusiast in Ассемблер
Ну надо же будет сохранить ECX тогда
источник

d

disba1ancer in Ассемблер
это для случаев когда компилятор будет оптимизировать в memset
источник

d

disba1ancer in Ассемблер
зачем? по соглашению он не сохраняется
источник

E

Entusiast in Ассемблер
Ну не сохраняй, в чём проблема тогда
источник

d

disba1ancer in Ассемблер
ну я понял что ты предлагаешь
источник

d

disba1ancer in Ассемблер
в общем мне наверное придётся бенчить...
источник

d

disba1ancer in Ассемблер
пока оставлю что есть только lea понатыкаю
источник

E

Entusiast in Ассемблер
Бенчить?
источник

d

disba1ancer in Ассемблер
сделать замеры
источник

d

disba1ancer in Ассемблер
да, а stos не будет быстрее mov [edi], eax add edi, 4, или как?
источник

C

Cofeefee in Ассемблер
Нужна платная консультация по перехвату DeviceIoControl под Win64.
Есть программа, который загружает разные модули (DLL), обращающиеся к драйверу железки через DeviceIoControl.
Обращение к железке из основного процесса выглядит так:
Main Process: LoadLibrary (внешняя DLL)
Внешняя DLL: CreateFile ("\\.\Device")
DeviceIoControl(hDevice, ControlCode, DataBuffer)

Через DLL-hijacking я встраиваю в процесс свою собственную DLL, задача которой перехват обращений к железке. Эмуляция железки через подмену/перехват в драйвере и написанию собственного драйвера железки - не решение задачи, нужен перехват из собственной DLL.
1. Возможно ли подобное решение?
2. Если возможно, то как?
источник