Помогите собрать Dll пожалуйста Код (Text): ;;;;;;;;;;;;;;;;;EXE;;;;;;;;;;;;;;;; .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\shell32.lib .data? hLib dd ? .data DllnotFound db "Dll x4live.dll not found.",0 dllname db "dll.dll",0 DllMain db "DllMain",0 .code start: LoadLibraryA PROTO :DWORD push offset dllname call LoadLibraryA cmp eax,0 je @F mov hLib,eax GetProcAddress PROTO :DWORD,:DWORD push eax push offset DllMain call GetProcAddress call eax FreeLibrary PROTO :DWORD push hLib call FreeLibrary jmp @exit @@: MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 10h push 0 push offset DllnotFound push 0 call MessageBoxA ExitProcess PROTO :DWORD @exit: push eax call ExitProcess end start ;;;;;;;;;;;;;;;;;;;DLL;;;;;;;;;;;;;;;;;;;; .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\shell32.lib .data MainDllmsg db "MainDll proc msg",0 .code DllEntry proc hInstDLL:DWORD, reason:DWORD, reserved1:DWORD mov eax,1 ret DllEntry endp MainDll proc MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 0 push 0 push offset MainDllmsg push 0 call MessageBoxA ret MainDll endp End DllEntry ;;;;;;;;;;;;;;;;Def;;;;;;;;;;;;;;;; LIBRARY dll EXPORTS MainDll ехе собирается а вот длл пишет ошибку собераю так Ml.exe /c /coff dll.asm Link.exe /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:dll.obj LINK : warning LNK4001: no object files specified; libraries used LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 LINK : fatal error LNK1159: no output file specified
C:\Users\Алексей\Desktop\masm>Ml.exe /c /coff dll.asm Microsoft (R) Macro Assembler Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved. Assembling: dll.asm C:\Users\Алексей\Desktop\masm> Link.exe /nologo /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:dll.obj LINK : warning LNK4001: no object files specified; libraries used LINK : warning LNK4068: /MACHINE not specified; defaulting to X86 LINK : fatal error LNK1159: no output file specified C:\Users\Алексей\Desktop\masm>dir dll.* Том в устройстве C не имеет метки. Серийный номер тома: D460-F1D2 Содержимое папки C:\Users\Алексей\Desktop\masm 27.08.2010 18:21 504 dll.asm 27.08.2010 16:55 32 dll.def 28.08.2010 15:18 775 dll.obj 3 файлов 1 311 байт 0 папок 234 762 006 528 байт свободно C:\Users\Алексей\Desktop\masm>pause Для продолжения нажмите любую клавишу . . .
fragment да еп далась тебе эта /LIBPATH: Код (Text): C:\masm32>goto make C:\masm32>set exe=dll C:\masm32>\masm32\Ml.exe /c /coff "C:\masm32\dll.bat" Microsoft (R) Macro Assembler Version 10.00.30128.01 Copyright (C) Microsoft Corporation. All rights reserved. Assembling: C:\masm32\dll.bat C:\masm32>\masm32\Link.exe /nologo /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def dll.obj Creating library dll.lib and object dll.exp C:\masm32>pause или C:\masm32>goto make C:\masm32>set exe=dll C:\masm32>\masm32\Ml.exe /c /coff "C:\masm32\dll.bat" Microsoft (R) Macro Assembler Version 10.00.30128.01 Copyright (C) Microsoft Corporation. All rights reserved. Assembling: C:\masm32\dll.bat C:\masm32>\masm32\Link.exe /nologo /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:C:\masm32\lib\ dll.obj Creating library dll.lib and object dll.exp C:\masm32>pause ну да LINKу объектник нафиг не нужен правда
Делаю все как вы сказали Link.exe /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:dll.obj LINK : fatal error LNK1159: no output file specified непонимаю не надо было указывать выходной фаил , если указываешь то получаются два файла exp и еще какойто а мне нужна dll Вот посмотрите каму не трудно: http://share.netbynet.ru/98masm.zip все , всем спасибо , получилось собрать dll Link.exe /DLL /SUBSYSTEM:WINDOWS /DEF:dll.def /LIBPATH:/library dll.obj но программа не работает , посмотрите исходничек пожалуйсиа ошибка видемо вот здесь Код (Text): GetProcAddress PROTO :DWORD,:DWORD push eax push offset DllMain call GetProcAddress cmp eax,0 je @error
Код (Text): .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\shell32.lib .data MainDllmsg db "MainDll proc msg",0 .code DllEntry proc hInstDLL:DWORD, reason:DWORD, reserved1:DWORD mov eax,1 ret DllEntry endp MainDll proc MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 0 push 0 push offset MainDllmsg push 0 call MessageBoxA ret MainDll endp End DllEntry Код (Text): .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\shell32.lib .data? hLib dd ? .data DllnotFound db "Dll x4live.dll not found.",0 dllname db "dll.dll",0 MainDll db "MainDll",0 .code start: LoadLibraryA PROTO :DWORD push offset dllname call LoadLibraryA cmp eax,0 je @F mov hLib,eax GetProcAddress PROTO :DWORD,:DWORD push eax push offset MainDll call GetProcAddress cmp eax,0 je @F call eax FreeLibrary PROTO :DWORD push hLib call FreeLibrary jmp @exit @@: MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 10h push 0 push offset DllnotFound push 0 call MessageBoxA ExitProcess PROTO :DWORD @exit: push eax call ExitProcess end start Код (Text): LIBRARY dll EXPORTS MainDll
я читал и смотрел исходники Iczelion`a , вроде все так же делаю, ладно если ошибка так не видна то буду смотреть внимательней еще раз
а вот так кто нибудь пробывал делать? Фаил создается но текстовая мсг не появляется нет возврата из библиотеки , помогите Код (Text): .686 .model flat,stdcall option casemap:none includelib library\kernel32.lib includelib library\user32.lib includelib library\shell32.lib .data MainDllmsg db "MainDll proc msg",0 exename db "file.exe",0 .data? Temp db 260 dup (?) hFile dd ? .code DllEntry proc hInstDLL:DWORD, reason:DWORD, reserved1:DWORD mov eax,1 ret DllEntry endp MainDll proc GetTempPathA PROTO :DWORD,:DWORD push offset Temp push 260 call GetTempPathA lstrcatA PROTO :DWORD,:DWORD push offset exename push offset Temp call lstrcatA CreateFileA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD push 0h push 0h push 2h push 0h push 1h+2h push 80000000h+40000000h push offset Temp call CreateFileA mov hFile,eax WriteFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD push 0 push 0 push FileLen push offset File push eax call WriteFile CloseHandle PROTO :DWORD push hFile call CloseHandle MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD push 0 push 0 push offset MainDllmsg push 0 call MessageBoxA ret MainDll endp End DllEntry .data FileLen equ 2560d File db 04dh, 05ah, 090h, 000h, 003h, 000h, 000h, 000h, 004h, 000h db 000h, 000h, 0ffh, 0ffh, 000h, 000h, 0b8h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 040h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ...
fragment По теме - нужно указывать 4-й параметр. Вы уже захламили форум своими скринами и копиями постов с WriteFile(). Вас предупреждали.
Спасибо огромное, Вас понял. Всё работает как часы, спасибо!!! http://share.netbynet.ru/689exeindll.zip