Thread View: de.comp.lang.assembler
1 messages
1 total messages
Started by Jens Kallup
Mon, 01 Apr 2013 22:03
YASM: einmal gehts, einmal nicht, zuviel code?
Author: Jens Kallup
Date: Mon, 01 Apr 2013 22:03
Date: Mon, 01 Apr 2013 22:03
689 lines
18682 bytes
18682 bytes
This is a multi-part message in MIME format. --------------050309080705000005000405 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit Hallo, habe im Anhang asm code, der eine raw Windows 32 bit PE exe erzeugt (mit yasm.exe assembler) wenn ich in pecode.asm, die markierten stellen auskommentiere kommt stets die Meldung, dass msvcr.DLL nicht gefunden werden konnte. ansonsten geht der code. Was kann das sein? Danke für Hilfe Jens die mydll.cc übersetze ich mit mingw gcc 32bit so: g++ -mwindows -shared -o mydll.dll -c mydll.cc und die start.exe so: yasm -o start.exe start.asm --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="start.asm" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="start.asm" ;--------------------------------------------- ; start.asm - don't touch (c) 2012 Jens Kallup ;--------------------------------------------- %include 'head.inc' ; PE BITS 32 EntryPoint: %include 'pecode.asm' EndOfCode: %include 'macros.inc' %include 'import.inc' filesize equ $ - $$ --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="pecode.asm" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="pecode.asm" push dword printEntry call [__imp__testABC] add esp, 4 call [__imp__testABCD] push 0 call [__imp__ExitProcess] mov ax, 0 ret printEntry: push Msg1 call [__imp__printf1] add esp, 1 * 4 push Msg2 call [__imp__printf2] add esp, 1 * 4 ret start_procedure: ; hier crasht es, wenn nicht vorhanden/kommentiert, geht die exe Ausführung push ebp mov ebp, esp ; push dword 0 push dword 200 push dword 200 push dword 500 push dword 500 ; call [__imp__newFormWidget] add esp, 5 * 4 pop ebp ret Msg1 db " * a PE with multiple descriptors", 0 Msg2 db " to the same DLL (under different names)", 0ah, 0 --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="head.inc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="head.inc" %include 'consts.inc' IMAGEBASE equ 400000h org IMAGEBASE bits 32 SECTIONALIGN equ 1000h FILEALIGN equ 200h istruc IMAGE_DOS_HEADER at IMAGE_DOS_HEADER.e_magic, db 'MZ' at IMAGE_DOS_HEADER.e_lfanew, dd NT_SIGNATURE - IMAGEBASE iend NT_SIGNATURE: istruc IMAGE_NT_HEADERS at IMAGE_NT_HEADERS.Signature, db 'PE', 0, 0 iend istruc IMAGE_FILE_HEADER at IMAGE_FILE_HEADER.Machine, dw IMAGE_FILE_MACHINE_I386 at IMAGE_FILE_HEADER.NumberOfSections, dw NUMBEROFSECTIONS at IMAGE_FILE_HEADER.SizeOfOptionalHeader, dw SIZEOFOPTIONALHEADER at IMAGE_FILE_HEADER.Characteristics, dw IMAGE_FILE_EXECUTABLE_IMAGE | IMAGE_FILE_32BIT_MACHINE iend OptionalHeader: istruc IMAGE_OPTIONAL_HEADER32 at IMAGE_OPTIONAL_HEADER32.Magic, dw IMAGE_NT_OPTIONAL_HDR32_MAGIC at IMAGE_OPTIONAL_HEADER32.AddressOfEntryPoint, dd EntryPoint - IMAGEBASE at IMAGE_OPTIONAL_HEADER32.ImageBase, dd IMAGEBASE at IMAGE_OPTIONAL_HEADER32.SectionAlignment, dd SECTIONALIGN at IMAGE_OPTIONAL_HEADER32.FileAlignment, dd FILEALIGN at IMAGE_OPTIONAL_HEADER32.MajorSubsystemVersion, dw 4 at IMAGE_OPTIONAL_HEADER32.SizeOfImage, dd 2 * SECTIONALIGN at IMAGE_OPTIONAL_HEADER32.SizeOfHeaders, dd SIZEOFHEADERS at IMAGE_OPTIONAL_HEADER32.Subsystem, dw IMAGE_SUBSYSTEM_WINDOWS_CUI at IMAGE_OPTIONAL_HEADER32.NumberOfRvaAndSizes, dd 16 iend istruc IMAGE_DATA_DIRECTORY_16 at IMAGE_DATA_DIRECTORY_16.ImportsVA, dd Import_Descriptor - IMAGEBASE iend SIZEOFOPTIONALHEADER equ $ - OptionalHeader SectionHeader: istruc IMAGE_SECTION_HEADER at IMAGE_SECTION_HEADER.VirtualSize, dd 1 * SECTIONALIGN at IMAGE_SECTION_HEADER.VirtualAddress, dd 1 * SECTIONALIGN %ifdef INCLUDE_BIN at IMAGE_SECTION_HEADER.SizeOfRawData, dd 1 * FILEALIGN + ZipDataSize ; my hack for gzip data %else at IMAGE_SECTION_HEADER.SizeOfRawData, dd 1 * FILEALIGN %endif at IMAGE_SECTION_HEADER.PointerToRawData, dd 1 * FILEALIGN at IMAGE_SECTION_HEADER.Characteristics, dd IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_WRITE iend NUMBEROFSECTIONS equ ($ - SectionHeader) / IMAGE_SECTION_HEADER_size SIZEOFHEADERS equ $ - IMAGEBASE section progbits vstart=IMAGEBASE + SECTIONALIGN align=FILEALIGN --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="macros.inc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="macros.inc" %macro IMPDEF 2 dd %1%2.dll_hintnames - IMAGEBASE dd 0, 0 dd %1.dll - IMAGEBASE dd %1%2.dll_iat - IMAGEBASE %endmacro %macro HINTNAME 2 %1.dll_hintnames: dd hn%2 - IMAGEBASE dd 0 %endmacro %macro DLLNAMEDEF 2 hn%1: dw 0 db %2, 0 %endmacro %macro HINTDEF 2 %1.dll_iat: __imp__%2: dd hn%2 - IMAGEBASE dd 0 %endmacro _d --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="import.inc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="import.inc" Import_Descriptor: IMPDEF kbase, 1 IMPDEF kbase, 2 IMPDEF kbase, 3 IMPDEF msvcrt, 1 IMPDEF msvcrt, 2 IMPDEF kernel32_, 1 ;terminator dd 0, 0, 0, 0, 0 HINTNAME kbase1, testABC HINTNAME kbase2, testABCD HINTNAME kbase3, init_application HINTNAME msvcrt1, printf1 HINTNAME msvcrt2, printf2 HINTNAME kernel32_1, ExitProcess DLLNAMEDEF printf1, 'printf' DLLNAMEDEF printf2, 'printf' DLLNAMEDEF ExitProcess, 'ExitProcess' DLLNAMEDEF testABC, 'testABC' DLLNAMEDEF testABCD, 'testABCD' DLLNAMEDEF init_application, 'init_application' HINTDEF kbase1, testABC HINTDEF kbase2, testABCD HINTDEF kbase3, init_application HINTDEF msvcrt1, printf1 HINTDEF msvcrt2, printf2 HINTDEF kernel32_1, ExitProcess kbase.dll db 'mydll.dll', 0 kernel32_.dll db 'kernel32.dll', 0 msvcrt.dll db 'msvcrt.dll', 0 align FILEALIGN, db 0 --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="consts.inc" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="consts.inc" %define PREFIX_OPERANDSIZE db 66h IMAGE_RESOURCE_DATA_IS_DIRECTORY equ 80000000h PAGE_READWRITE equ 4 ExceptionContinueExecution equ 0 DLL_PROCESS_ATTACH equ 1 DLL_PROCESS_DETACH equ 0 IMAGE_SCN_MEM_EXECUTE equ 020000000h IMAGE_SCN_MEM_READ equ 040000000h IMAGE_SCN_MEM_WRITE equ 080000000h MEM_COMMIT equ 1000h BREAKPOINT equ 080000003h SINGLE_STEP equ 80000004h ACCESS_VIOLATION equ 0c0000005h INVALID_HANDLE equ 0C0000008h INVALID_LOCK_SEQUENCE equ 0C000001eh INTEGER_DIVIDE_BY_ZERO equ 0C0000094h INTEGER_OVERFLOW equ 0C0000095h PRIVILEGED_INSTRUCTION equ 0C0000096h struc exceptionHandler .pException resd 1 ; EXCEPTION_RECORD .pRegistrationRecord resd 1 ; EXCEPTION_REGISTRATION_RECORD .pContext resd 1 ; CONTEXT endstruc SIZE_OF_80387_REGISTERS equ 80 MAXIMUM_SUPPORTED_EXTENSION equ 512 struc CONTEXT .ContextFlags resd 1 ;CONTEXT_DEBUG_REGISTERS .iDr0 resd 1 .iDr1 resd 1 .iDr2 resd 1 .iDr3 resd 1 .iDr6 resd 1 .iDr7 resd 1 ;CONTEXT_FLOATING_POINT .ControlWord resd 1 .StatusWord resd 1 .TagWord resd 1 .ErrorOffset resd 1 .ErrorSelector resd 1 .DataOffset resd 1 .DataSelector resd 1 .RegisterArea resb SIZE_OF_80387_REGISTERS .Cr0NpxState resd 1 ;CONTEXT_SEGMENTS .regGs resd 1 .regFs resd 1 .regEs resd 1 .regDs resd 1 ;CONTEXT_INTEGER .regEdi resd 1 .regEsi resd 1 .regEbx resd 1 .regEdx resd 1 .regEcx resd 1 .regEax resd 1 ;CONTEXT_CONTROL .regEbp resd 1 .regEip resd 1 .regCs resd 1 .regFlag resd 1 .regEsp resd 1 .regSs resd 1 ;CONTEXT_EXTENDED_REGISTERS .ExtendedRegisters resb MAXIMUM_SUPPORTED_EXTENSION endstruc IMAGE_SIZEOF_SHORT_NAME equ 8 struc IMAGE_DOS_HEADER .e_magic resw 1 .e_cblp resw 1 .e_cp resw 1 .e_crlc resw 1 .e_cparhdr resw 1 .e_minalloc resw 1 .e_maxalloc resw 1 .e_ss resw 1 .e_sp resw 1 .e_csum resw 1 .e_ip resw 1 .e_cs resw 1 .e_lfarlc resw 1 .e_ovno resw 1 .e_res resw 4 .e_oemid resw 1 .e_oeminfo resw 1 .e_res2 resw 10 .e_lfanew resd 1 endstruc struc IMAGE_NT_HEADERS .Signature resd 1 ; .FileHeader resb IMAGE_FILE_HEADER_size ; .OptionalHeader resb IMAGE_OPTIONAL_HEADER32_size endstruc struc IMAGE_FILE_HEADER .Machine resw 1 .NumberOfSections resw 1 .TimeDateStamp resd 1 .PointerToSymbolTable resd 1 .NumberOfSymbols resd 1 .SizeOfOptionalHeader resw 1 .Characteristics resw 1 endstruc IMAGE_FILE_MACHINE_I386 equ 014ch IMAGE_FILE_DLL equ 02000h IMAGE_NT_OPTIONAL_HDR32_MAGIC equ 010bh struc IMAGE_OPTIONAL_HEADER32 .Magic resw 1 .MajorLinkerVersion resb 1 .MinorLinkerVersion resb 1 .SizeOfCode resd 1 .SizeOfInitializedData resd 1 .SizeOfUninitializedData resd 1 .AddressOfEntryPoint resd 1 .BaseOfCode resd 1 .BaseOfData resd 1 .ImageBase resd 1 .SectionAlignment resd 1 .FileAlignment resd 1 .MajorOperatingSystemVersion resw 1 .MinorOperatingSystemVersion resw 1 .MajorImageVersion resw 1 .MinorImageVersion resw 1 .MajorSubsystemVersion resw 1 .MinorSubsystemVersion resw 1 .Win32VersionValue resd 1 .SizeOfImage resd 1 .SizeOfHeaders resd 1 .CheckSum resd 1 .Subsystem resw 1 .DllCharacteristics resw 1 .SizeOfStackReserve resd 1 .SizeOfStackCommit resd 1 .SizeOfHeapReserve resd 1 .SizeOfHeapCommit resd 1 .LoaderFlags resd 1 .NumberOfRvaAndSizes resd 1 .DataDirectory resb 0 endstruc struc IMAGE_DATA_DIRECTORY VirtualAddress resd 1 isize resd 1 endstruc struc IMAGE_DATA_DIRECTORY_16 .ExportsVA resd 1 .ExportsSize resd 1 .ImportsVA resd 1 .ImportsSize resd 1 .ResourceVA resd 1 .ResourceSize resd 1 .Exception resd 2 .Security resd 2 .FixupsVA resd 1 .FixupsSize resd 1 .DebugVA resd 1 .DebugSize resd 1 .Description resd 2 .MIPS resd 2 .TLSVA resd 1 .TLSSize resd 1 .Load resd 2 .BoundImportsVA resd 1 .BoundImportsSize resd 1 .IATVA resd 1 .IATSize resd 1 .DelayImportsVA resd 1 .DelayImportsSize resd 1 .COM resd 2 .reserved resd 2 endstruc struc IMAGE_SECTION_HEADER .Name resb IMAGE_SIZEOF_SHORT_NAME .VirtualSize resd 1 .VirtualAddress resd 1 .SizeOfRawData resd 1 .PointerToRawData resd 1 .PointerToRelocations resd 1 .PointerToLinenumbers resd 1 .NumberOfRelocations resw 1 .NumberOfLinenumbers resw 1 .Characteristics resd 1 endstruc IMAGE_SUBSYSTEM_WINDOWS_CUI equ 3 IMAGE_SUBSYSTEM_WINDOWS_GUI equ 2 IMAGE_FILE_RELOCS_STRIPPED equ 00001h IMAGE_FILE_EXECUTABLE_IMAGE equ 00002h IMAGE_FILE_LINE_NUMS_STRIPPED equ 00004h IMAGE_FILE_LOCAL_SYMS_STRIPPED equ 00008h IMAGE_FILE_32BIT_MACHINE equ 00100h %macro _ 0 nop %endmacro %macro _c 0 int3 align 4, int3 %endmacro %macro _d 0 db 0 align 16, db 0 %endmacro %macro setSEH 1 push %1 push dword [fs:0] mov [fs:0], esp %endmacro %macro clearSEH 0 pop dword [fs:0] add esp, 4 %endmacro struc IMAGE_OPTIONAL_HEADER64 .Magic resw 1 .MajorLinkerVersion resb 1 .MinorLinkerVersion resb 1 .SizeOfCode resd 1 .SizeOfInitializedData resd 1 .SizeOfUninitializedData resd 1 .AddressOfEntryPoint resd 1 .BaseOfCode resd 1 .ImageBase resq 1 .SectionAlignment resd 1 .FileAlignment resd 1 .MajorOperatingSystemVersion resw 1 .MinorOperatingSystemVersion resw 1 .MajorImageVersion resw 1 .MinorImageVersion resw 1 .MajorSubsystemVersion resw 1 .MinorSubsystemVersion resw 1 .Win32VersionValue resd 1 .SizeOfImage resd 1 .SizeOfHeaders resd 1 .CheckSum resd 1 .Subsystem resw 1 .DllCharacteristics resw 1 .SizeOfStackReserve resq 1 .SizeOfStackCommit resq 1 .SizeOfHeapReserve resq 1 .SizeOfHeapCommit resq 1 .LoaderFlags resd 1 .NumberOfRvaAndSizes resd 1 .DataDirectory resb 0 endstruc IMAGE_FILE_MACHINE_AMD64 equ 8664h IMAGE_NT_OPTIONAL_HDR64_MAGIC equ 020bh IMAGE_REL_BASED_HIGHLOW equ 3 CR equ 0dh EOF equ 1ah LF equ 0ah struc IMAGE_RESOURCE_DIRECTORY .Characteristics resd 1 .TimeDateStamp resd 1 .MajorVersion resw 1 .MinorVersion resw 1 .NumberOfNamedEntries resw 1 .NumberOfIdEntries resw 1 endstruc struc IMAGE_RESOURCE_DIRECTORY_ENTRY .NameID resd 1 .OffsetToData resd 1 endstruc struc IMAGE_RESOURCE_DATA_ENTRY .OffsetToData resd 1 .Size1 resd 1 .CodePage resd 1 .Reserved resd 1 endstruc struc _IMAGE_DELAY_IMPORT_DESCRIPTOR .grAttrs resd 1 ; attributes .rvaDLLName resd 1 ; RVA to dll name .rvaHmod resd 1 ; RVA of module handle .rvaIAT resd 1 ; RVA of the IAT .rvaINT resd 1 ; RVA of the INT .rvaBoundIAT resd 1 ; RVA of the optional bound IAT .rvaUnloadIAT resd 1 ; RVA of optional copy of original IAT .dwTimeStamp resd 1 ; 0 if not bound endstruc struc TRUNC_OPTIONAL_HEADER32 .Magic resw 1 .MajorLinkerVersion resb 1 .MinorLinkerVersion resb 1 .SizeOfCode resd 1 .SizeOfInitializedData resd 1 .SizeOfUninitializedData resd 1 .AddressOfEntryPoint resd 1 .BaseOfCode resd 1 .BaseOfData resd 1 .ImageBase resd 1 .SectionAlignment resd 1 .FileAlignment resd 1 .MajorOperatingSystemVersion resw 1 .MinorOperatingSystemVersion resw 1 .MajorImageVersion resw 1 .MinorImageVersion resw 1 .MajorSubsystemVersion resw 1 .MinorSubsystemVersion resw 1 .Win32VersionValue resd 1 .SizeOfImage resd 1 .SizeOfHeaders resd 1 .CheckSum resd 1 .Subsystem resb 1 ; truncated as a byte ; no more data endstruc struc VS_FIXEDFILEINFO .dwSignature resd 1 .dwStrucVersion resd 1 .dwFileVersionMS resd 1 .dwFileVersionLS resd 1 .dwProductVersionMS resd 1 .dwProductVersionLS resd 1 .dwFileFlagsMask resd 1 .dwFileFlags resd 1 .dwFileOS resd 1 .dwFileType resd 1 .dwFileSubtype resd 1 .dwFileDateMS resd 1 .dwFileDateLS resd 1 endstruc RT_VERSION equ 16 RT_MANIFEST equ 24 CREATEPROCESS_MANIFEST_RESOURCE_ID EQU 1 ISOLATIONAWARE_MANIFEST_RESOURCE_ID EQU 2 ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID EQU 3 struc ACTCTX ; typedef struct tagACTCTX { .cbSize resd 1 ; ULONG cbSize; .dwFlags resd 1 ; DWORD dwFlags; .lpSource resd 1 ; LPCWSTR lpSource; .wProcessorArchitecture resw 1 ; USHORT wProcessorArchitecture; .wLangId resw 1 ; LANGID wLangId; .lpAssemblyDirectory resd 1 ; LPCTSTR lpAssemblyDirectory; .lpResourceName resd 1 ; LPCTSTR lpResourceName; .lpApplicationName resd 1 ; LPCTSTR lpApplicationName; .hModule resd 1 ; HMODULE hModule; endstruc ; } ACTCTX, *PACTCTX; ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID equ 1 ACTCTX_FLAG_LANGID_VALID equ 2 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID equ 4 ACTCTX_FLAG_RESOURCE_NAME_VALID equ 8 ACTCTX_FLAG_SET_PROCESS_DEFAULT equ 16 ACTCTX_FLAG_APPLICATION_NAME_VALID equ 32 ACTCTX_FLAG_HMODULE_VALID equ 128 ; widechar string macro %macro WIDE 1 %assign %%__i 1 %strlen %%__len %1 %rep %%__len %substr %%__c %1 %%__i db %%__c db 0 %assign %%__i %%__i + 1 %endrep db 0, 0 %endmacro %macro __string 2 %%string: dw %%SLEN dw %%VALLEN / 2 ; dammit ! dw 1 ; text type WIDE %1 align 4, db 0 %%val: WIDE %2 %%VALLEN equ $ - %%val align 4, db 0 %%SLEN equ $ - %%string %endmacro --------------050309080705000005000405 Content-Type: text/plain; charset=windows-1252; name="mydll.cc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mydll.cc" I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxp Yi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1 ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzdHJpbmc+CgovKgojaW5jbHVkZSA8UUFwcGxpY2F0 aW9uPgojaW5jbHVkZSA8UVZlY3Rvcj4KCiNpbmNsdWRlICJ4YmFzZS5oIgoKbmFtZXNwYWNl IG15ZGF0YQp7CiAgICBjbGFzcyBRU3RyaW5nTGlzdCAgZGF0YV9wYXRoczsKICAgIGNsYXNz IFFWZWN0b3I8TXlRV29ya0FyZWEqPiB3YTsKfQoqLwoKZXh0ZXJuICJDIiB2b2lkIHRlc3RB QkModm9pZCAoKnB0cikodm9pZCkpCnsKICAgIHByaW50ZigiSGFsbG8gQUJDXG4iKTsKICAg IHB0cigpOwp9CgpleHRlcm4gIkMiIHZvaWQgdGVzdEFCQ0Qodm9pZCkKewogICAgcHJpbnRm KCJmcmFuemlcbiIpOwp9CgovKgpleHRlcm4gIkMiIHZvaWQgaW5pdF9hcHBsaWNhdGlvbih2 b2lkKQp7CglpbnQgYXJnYyA9IDE7CgljaGFyICphcmd2WzFdID0geyAiQXBwbGljYXRpb24u ZXhlIiB9OwoKCXByaW50ZigiaW5pdCBhcHBcbiIpOwoKCVFBcHBsaWNhdGlvbiBhcHAoYXJn YywgYXJndik7CglhcHAuZXhlYygpOwp9CiovCgovKgpRV2lkZ2V0ICoqZm9ybXM7CmV4dGVy biAiQyIgdm9pZCBuZXdGb3JtV2lkZ2V0KGludCB3biwgaW50IHRvcCwgaW50IGxlZnQsIGlu dCB3aWR0aCwgaW50IGhlaWdodCkKewoJZm9ybXNbd25dID0gbmV3IFFXaWRnZXQ7Cglmb3Jt c1t3bl0tPnNldEdlb21ldHJ5KHRvcCxsZWZ0LHdpZHRoLGhlaWdodCk7Cglmb3Jtc1t3bl0t PnNob3coKTsKfQoqLw== --------------050309080705000005000405--
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads