Pull to refresh

Comments 8

" пример с использованием магических констант как делать не надо " - ну и не только в константах магических дело: если бы вы вместо чисел использовали именованные контстанты типа E_LFANEW это тоже было бы не очень, потому что нужно учитывать поле SizeOfOptionalHeader

ну да, надо бы конечно,

а этот опциональный заголовок он вообще может быть разного размера? ну кроме 0 и 176 байт, когда из него EXPORT_DIRECTORY и берётся

Блин, перепутал с секциями, позор мне! :-(
Можно фиксированные смещения использовать. Это вот с секциями нельзя, а директориями можно

Спасибо за труд! Было бы отлично, если бы подобная либа была и под библиотеки на Linux!

Так-то есть ffi от luajit, и alien который lua обёртка для libffi, вполне себе кроссплатформенные.

Я слишком туп оказался чтобы их под виндами с lua54 собрать, пришлось пилить своё :)

Там "платформеннозависимого" кода не сильно много (собственно всё вынесено в win64.c), только пара функций, которые ассембленый код с учётом calling convention генерят, в них только порядок запихивания аргументов в стэк/регистры поменять, а остальное dlsym/GetProcAddress и mprotect/VirtualProtect только названиями отличаются, может когда-нибудь руки дойдут.

Ок. Спасибо ещё раз за пояснения! Мне пока это не очень актуально, но скоро очень даже может пригодиться!

upd: теперь есть и под linux, и возможно bsd, там отличий вроде не должно быть.

О! Здорово! Ещё раз большое человеческое спасибо!

Sign up to leave a comment.

Articles