Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.assembler > #1233

Re: DLL Funktion in Assembler aufrufen ...

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>

Show all headers | View raw


[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 | NextPrevious in thread | Next in thread | Find similar


Thread

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