Size: a a a

Ассемблер

2021 May 29

АШ

Алексей Шведов... in Ассемблер
С двух библиотек
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а что с ней?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
в .data ты разве это не сделал?
источник

АШ

Алексей Шведов... in Ассемблер
В моём варианте используется только 4 переменных, а инициализация происходит сразу в таблицах с именами
источник

АШ

Алексей Шведов... in Ассемблер
Блин, вот если бы как-то можно было оптимизировать получение адресов строк из таблицы в моём варианте, а не писать отдельный парсер, было бы ещё лучше
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
работать возможно не будет, но идея примерно такая
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
или FUNC.size
источник

АШ

Алексей Шведов... in Ассемблер
О, вот это уже удобнее выглядит
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
так я тебе про это и говорю
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
size это значение которое генерирует сам макрос struct, удобно если надо знать размер всей структуры для таких вещей (массивы структур)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а как ты используешь GetProcAddress если ты без импортов делаешь прогу?
источник

АШ

Алексей Шведов... in Ассемблер
Ищу в PEB адрес kernel32, получаю export table и ищу GetProcAddress
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
а, значит у тя тоже примерно так же адрес используется как для функций выше. ищешь адрес, щаносишь в таблицу и используешь
источник

АШ

Алексей Шведов... in Ассемблер
Фух, всё. Вот теперь красиво получилось, без лишних переменных, и удобно (сжатый отрывок:)
kernel32 dd ?
kernelTable:
FUNC 'LoadLibraryA', 0
FUNC 'ExitProcess', 0
kernelTable.count = 2

code:
krnlInit
:
cmp esi, kernelTable.count
je krnlEndInit

lea ebx, [kernelTable]
mov edx, esi
imul edx, sizeof.FUNC
add ebx, edx

push ebx
push [kernel32]
call [GetProcAddress]

mov [ebx+FUNC.addr], eax

inc esi
jmp krnlInit

krnlEndInit:

push
0
lea eax, [kernelTable+1*sizeof.FUNC]
call [eax+FUNC.addr]
ret
источник

АШ

Алексей Шведов... in Ассемблер
Как-то даже смахивает на вариант с dd 0, 0, 0, kernel32, kernel_table, 0 с импорт-таблицей из FASM'а
источник

d

disba1ancer in Ассемблер
а почему ты не хочешь воспользоваться таблицей импорта?
источник

АШ

Алексей Шведов... in Ассемблер
Я ей пользуюсь. Просто конкретно задача такая под софт, что таблицу импорта тут использовать не получится
источник

d

disba1ancer in Ассемблер
почему это?
источник

a

asm in Ассемблер
Добро пожаловать Юрий Кубышка. Не ответив на вопрос, будешь удалён из чата
источник

АШ

Алексей Шведов... in Ассемблер
Что такое CR0, и за что отвечает 16 флаг CR0 в DOS и Windows
источник