Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.assembler > #1233
| From | Jens Kallup <kallup.jens@web.de> |
|---|---|
| Newsgroups | de.comp.lang.assembler |
| Subject | Re: DLL Funktion in Assembler aufrufen ... |
| Date | 2022-04-17 17:31 +0200 |
| Organization | kallup.net - non-profit |
| Message-ID | <jc2q73F8pmoU1@mid.individual.net> (permalink) |
| References | <jbtgilF88alU1@mid.individual.net> <t3e4ct.2b8.1@stefan.msgid.phost.de> |
[Multipart message — attachments visible in raw view] - view raw
Hallo Ihr beiden, ich bin schon wieder mit etwas neueren Informationen hier gestrandet: Im Moment beschäftige ich mich damit, die .EXE cutables, die mit dem FPC (Free Pascal Compiler) 3.2.0 etwas kleiner zu machen, so dass man am Ende minimalen binär Code erhält. Dazu habe ich bereits schon 2021 damit angefangen, ist dann aber doch etwas ins stocken gekommen, und die Sachlage hat sich inzwischen ein wenig geändert. Im Projekt habe ich mit der 64-Bit Version von IDA 7 ein Assembly von meinen Projekt (.exe + .dll) erhalten, bei dem ich im Moment nicht so ganz durchblicke. Und zwar müsste für die (im Moment bestehende Funktion: nullsub_1 ein Puffer Label entstehen, damit dann das Programm etwas damit anfangen kann. Den eigentliche Code habe ich mittels FPC 3.2.0 erstellen lassen, was man im Makefile zu diesen Projekt entnehmen kann. Als Entwicklungs-Umgebung habe ich: - Windows 10/11 - MinGW-64 Bit - und die zu MinGW-64 MYS gehörende POSIX Std.Programme wie - sed - ... genutzt. Das Makefile ist etwas speziefisch auf meine Umgebung ausgelegt, was dann evtl. umgeschrieben werden muss. Ein paar Kommentare auf Englisch sind dann aber auch enthalten. Als make.exe habe ich die GNU artige Version, die mit MSYS installiert werden kann, verwendet. Hier ist der Ausschnitt zu diesen Code, der vom Compiler erzeugt wurde und mittel IDA 7 wieder disassembliert wurde: public start start proc near var_8= qword ptr -8 push rbp mov rbp, rsp lea rsp, [rsp-30h] mov [rbp+var_8], 0 nop lea rax, nullsub_1 ; <--- hier lea rdx, aHalloXxl ; "hallo xxl " mov rcx, rax call fpc_ansistr_assign ; in C geschrieben: void* fpc_ansistr_assign(void* dst, void* src); ; ab hier sollte es dann normal weiter gehen ; macht es auch, aber siehe den code oberhalb ... ; mov rcx, qword ptr cs:nullsub_1 call _$dll$laz_rtl$LengthString movsx ecx, ax call _$dll$laz_rtl$WriteLnInteger lea rcx, aMeerjung ; "meerjung" call _$dll$laz_rtl$WriteLnString lea rcx, [rbp+var_8] call _$dll$laz_rtl$ReadLn lea rcx, [rbp+var_8] call fpc_ansistr_decr_ref mov ecx, 1 call _$dll$laz_rtl$LazExitProcess nop nop mov rcx, rbp call sub_7FF66A4A1060 mov ecx, 0 ; uExitCode mov rax, cs:ExitProcess call rax ; ExitProcess nop lea rsp, [rbp+0] pop rbp retn start endp Und hier könnt Ihr gerne vom github.com das Projekt downloaden: https://github.com/paule32/mini_fpc_windows In der test1.pas Datei, die sich im Verzeichnis sample befindet könnt Ihr entnehmen, dass das vorliegende Problem in Zeile: 11 zu suchen ist. Dort verlangt der FPC das Symbol fpc_ansistr_assign, was, so denke ich keine Funktion, sondern eine Addresse mit den Puffer sein sollte. Jetzt habe ich so viel geschrieben ... Wenn was nicht klar sein sollte, oder noch Informationen fehlen, so bin ich auf Rückantwort gerne dankbar, und werde dienlich bei stehen. Mit freundlichen Grüßen Jens
Back to de.comp.lang.assembler | Previous | Next — Previous in thread | Next in thread | Find similar
DLL Funktion in Assembler aufrufen ... Jens Kallup <kallup.jens@web.de> - 2022-04-15 17:16 +0200
Re: DLL Funktion in Assembler aufrufen ... Herbert Kleebauer <klee@unibwm.de> - 2022-04-15 22:06 +0200
Re: DLL Funktion in Assembler aufrufen ... Stefan Reuther <stefan.news@arcor.de> - 2022-04-16 10:05 +0200
Re: DLL Funktion in Assembler aufrufen ... Jens Kallup <kallup.jens@web.de> - 2022-04-17 17:31 +0200
Re: DLL Funktion in Assembler aufrufen ... Jens Kallup <kallup.jens@web.de> - 2022-04-17 19:47 +0200
Re: DLL Funktion in Assembler aufrufen ... "Stefan Kanthak" <postmaster@[127.0.0.1]> - 2022-04-20 20:30 +0200
csiph-web