Size: a a a

Ассемблер

2021 April 06

A

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

A

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

fz

f z in Ассемблер
а то, что он не всегда может быть прописан внутри .dll, это ничего не меняет?
источник

A

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

A

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

II

Ira Irina in Ассемблер
Может линкер ставит автоматом лепит какую-нибудь заглушку, и она и становится точкой входа?
источник

fz

f z in Ассемблер
у фасма в примерах чет большое я только видел, а тут вот совсем простой пример:
format   PE gui dll                 ; собираем DLL-модуль
include 'win32ax.inc'               ; макросы для укороченных директив
include 'encoding/win1251.inc'      ; подключим кирилицу
;---------
.data
mes0    db  'Библиотека Dll удачно поключена!',0      ; мессага-флаг, что DLL робит
wName   db  'Тест внешнего модуля',0                  ;  ..обзовём окно.

;---------
.code
start:                    ; точка входа!
      mov     eax,1      ; возвращаем TRUE
      ret                ;  ..в родитель LdrLoadDLL()

; Теперь наша либа зарегана, и мы можем вставлять всякие процедуры.
; Пока только одна.., которая просто покажет окно.
proc   Hello
      invoke  MessageBox,0,mes0,wName,0   ; даём о себе знать!
      ret                                 ; на выход.
endp                                       ; конец процедуры 'Hello'

.end start                ; макрос автоматом вставит секцию импорта.

; А вот секцию экспорта нужно вбить на клаве,
; и перечислить в ней весь экспорт, чтобы EXE смог их импортировать
;---------
section '.edata' export data readable      ;
export  'myDll.dll',\                      ; имя нашей библиотеки
        Hello, 'Hello'                    ; тут перечисляем имена всех процедур
;---------
section '.reloc' fixups data discardable   ; разрешаем загрузчику перемещать базу DLL в памяти
источник

II

Ira Irina in Ассемблер
источник

II

Ira Irina in Ассемблер
источник

fz

f z in Ассемблер
он автоматом слепит функцию входа DllEntryPoint, но я не уверен, что для dll и exe одинаковые правила касаемо точек входа
источник

A

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

fz

f z in Ассемблер
в примере, который я дал, нигде функция входа не описана явно. Насколько я понял, главное вначале положить в регистр eax 1
источник

A

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

A

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

A

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

fz

f z in Ассемблер
simple dll
источник

fz

f z in Ассемблер
попробуй посмотреть эту
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
start: это и есть точка входа
источник

A

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

fz

f z in Ассемблер
да и совершенно необязательно чтобы она называлась dllentrypoint
источник