Я наткнулся на кейлоггер на ассемблере на форуме. Я думал, что могу сам создать кейлоггер. Когда я читал код, чтобы увидеть, что на самом деле происходит в этой программе, я наткнулся на несколько интересных вещей.
1.Программа почти никогда не помещала переменную в стек. Он переместил значение переменной в регистр, а затем протолкнул регистр. например.
;hInst:DWORD 4
lea esi, hInst
push esi
2.Программа очищала массивы с помощью stosd. например:
;array1 BYTE 256 DUP(?)
lea edi, array1
push 256/4
xor eax, eax
rep stosd 3
Программа использовала push-pop для присвоения значений, как в приведенном выше примере.
Каковы преимущества вышеуказанных конвенций?