FASM-Resource <-> AntiVir



  • Hy, ich schon wieder
    Ich habe wieder ein Problem:
    *Wenn ich in meinem Programm (in FASM) die Funktion GetStdHandle aufrufe(zB um Text auszugeben) zeigt mir AntiVir an, dass es sich bei meinem Programm um einen Virus handelt. Warum denn?

    push STD_OUTPUT_HANDLE
    call [GetStdHandle]
    

    Problem, siehe unten

    danke für eure Hilfe



  • Weil dein Virenscanner suckt, makier deine Anwendung als "virenfrei", dann solltest du Ruhe haben.



  • Das muss an irgendetwas anderem in deinem Programm liegen. Ist schliesslich bestimmt nicht die einzige Konsolenanwendung, die GetStdHandle benutzt.



  • sry dass ich erst jetzt wieder schreibe, aber hatte die letzten tage keine Zeit.
    Mein Code:

    proc FB_Print Text:DWORD
          call [AllocConsole]
          push 0
          push 0
          push [Text]
          call [FB_Len]
          push eax
          push [Text]
          push STD_OUTPUT_HANDLE
          call [GetStdHandle]
          push eax
          call [WriteFile]
          ret
       endp
    


  • Hallo flona,

    Du machst in deiner Funktion lauter push aber kein einziges pop. Das ist nicht gut... Vielleicht erkennt dies Deine Antivirus-Software, dass da ein Stacküberlauf droht, was ich zwar bezweifle, aber könnte ja sein.



  • abc.w:
    Das ist eine Methode, Parameter an Funktionen zu uebergeben. Die Funktionen raeumen beim Ruecksprung den Stack wieder auf (sollten sie dann zumindest).

    flona:
    ...
    Welchen Assembler und Linker benutzt du (sieht mir irgendwie nach MASM aus)? Zeig doch mal bitte, wie du die WinAPI-Funktionen importierst und den ganzen Kram dann linkst und assemblierst.
    Allgemein sehen die Parameter so weit gut aus...

    Ansonsten:
    Was sind "Text" und "FB_Len"? Wenn es keine Pointer sind, greifst du wahrscheinlich falsch darauf zu.



  • Das ist eine Methode, Parameter an Funktionen zu uebergeben. Die Funktionen raeumen beim Ruecksprung den Stack wieder auf (sollten sie dann zumindest).

    Die Pascal-Aufrufkonvention? Ich wüsste jetzt nicht, dass Win32 API Pascal-Aufrufkonvention verwendet - bezweifle es stark auch.
    Die Funktion, so wie sie flona gepostet hat, enthält Fehler und ist falsch. Ich würde flona an dieser Stelle gerne einen Rat geben, Win32 Programme in C zu schreiben, spart tagelange (oder gar nächtelange?) Fehlersuche... Ist aber natürlich interessant, warum die Antivirus-Software ausgerechnet bei der exe meckert.



  • abc.w schrieb:

    Das ist eine Methode, Parameter an Funktionen zu uebergeben. Die Funktionen raeumen beim Ruecksprung den Stack wieder auf (sollten sie dann zumindest).

    Die Pascal-Aufrufkonvention? Ich wüsste jetzt nicht, dass Win32 API Pascal-Aufrufkonvention verwendet - bezweifle es stark auch. Die Funktion, so wie sie flona gepostet hat, enthält Fehler und ist falsch.

    Du kannst zweifeln so viel du willst, richtiger macht es deine Behauptung nicht.
    http://de.wikipedia.org/wiki/Aufrufkonvention#stdcall



  • Du kannst zweifeln so viel du willst, richtiger macht es deine Behauptung nicht.
    http://de.wikipedia.org/wiki/Aufrufkonvention#stdcall

    A ja, ok, bitte um Entschuldigung, Leute hier durcheinandergebracht zu haben.
    Deswegen steht ja auch bei jeder (na ja fast bei jeder) WinAPI Funktion WINAPI davor: int WINAPI WinMain(... und WINAPI ist als __stdcall definiert.
    Mit der neuen Erkenntnis sieht die Funktion von flona sogar fast richtig aus. Vorausgesetzt die Funktion FB_Len ist auch __stdcall. Und, MSDN Meinung nach, muss der Parameter lpNumberOfBytesWritten ungleich NULL sein:

    This parameter can be NULL only when the lpOverlapped parameter is not NULL.

    Warum auch immer... bitte um Korrektur, wenn ich mich wieder mal täusche...
    http://msdn.microsoft.com/en-us/library/aa365747.aspx



  • sry ich weiß nicht warum ich immer auf die Print Funkton gekommen bin aber ich habe jetzt festgestellt, dass es nicht an der, sondern an dem Resource-Teil liegt, der von meinem Compiler, an dem ich arbeite, automatisch erzeugt wird. Ist er drin meckert AntiVir. Warum? Und es ist kein MASM-Code, sondern FASM:

    section '.rsrc' resource data readable
       versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_GERMAN+SUBLANG_DEFAULT,0,\
       'FileDescription','Das ist ...',\
       'LegalCopyright','No rights reserved.',\
       'FileVersion','0.0',\
       'ProductVersion','0.0',\
       'OriginalFilename','Test.exe',\
       'ProductName','TestExe'
    

Anmelden zum Antworten