Avira Falschmeldung bei IncludeBinary

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Fluid Byte »

Bisonte hat geschrieben:Dann hat man aber bestimmt das Problem beim Endnutzer immer noch...
Genau da liegt das Problem. Ob es bei mir fehlerfrei ausgeführt werden kann ist sekundär aber beim Endnutzer muss es problemlos funktionieren.
Thorium hat geschrieben:Dann beschwer dich bei Avira, die immer wieder ihre Definitionen versauen oder fummel solange rumm bis keine Meldung mehr kommt.
So einfach ist es leider das nicht. Jede Anti-Viren-Software hat ihr Schwächen was auch Falschmeldungen beinhaltet. Da ist Avira ganz sicher nicht alleine. Nur kann man den Normalverbraucher nicht dazu bewegen die Anwendung in eine Ausnahmeliste einzutragen. Das mag für Programmierer bzw. erfahrene Benutzer eine Lösung sein aber wenn OTTO das sieht löscht er einfach die Anwendung.

@marroh:
Die Idee habe ich gestern angefangen umzusetzen. Dabei ist RC4 wohl gar nicht ausschlaggebend sondern es ist nur wichtig das die .EXE nicht "nackt" eingebunden wird. Sie mit ZIP oder RAR zu packen dürfte den gleichen Effekt haben (wenns dann funktioniert).

Ein Nachteil ist aber bei größeren Anwendungen das der Start etwas verzögert wird. Mann muss ja erst Registerbreite erkennen, .EXE entpacken, ins TEMP-Verzeichnis schreiben und ausführen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
NoUser

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von NoUser »

Fluid Byte hat geschrieben:
Bisonte hat geschrieben: Die Idee habe ich gestern angefangen umzusetzen. Dabei ist RC4 wohl gar nicht ausschlaggebend sondern es ist nur wichtig das die .EXE nicht "nackt" eingebunden wird. Sie mit ZIP oder RAR zu packen dürfte den gleichen Effekt haben (wenns dann funktioniert).

Ein Nachteil ist aber bei größeren Anwendungen das der Start etwas verzögert wird. Mann muss ja erst Registerbreite erkennen, .EXE entpacken, ins TEMP-Verzeichnis schreiben und ausführen.
Es ist so wie Du es sagst. Darum tippte ich dass die Lösung alles andere als sauber ist. Klar, ob die EXE nun gepackt oder verschlüsselt eingebunden wird ist egal. Die kurze Verzögerung kann man (denke ich mal) schon verkraften. Und sollte es wirklich viel länger dauern könnte man ja auch kurz einen Splash-Screen anzeigen um dem Benutzer zu signalisieren dass da was abgearbeitet wird.

Wenn Du es so umsetzt wäre es nett wenn Du das Ergebnis hier präsentieren würdest. Dann weiss ich ob es so immer noch geht oder eben nicht.

lg Martin
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Fluid Byte »

Es funktioniert, aber nur beim 64Bit Compiler. Das nutzt mir aber leider nichts da ich den Launcher als 32Bit kompilieren muss damit er sowohl auf 32Bit sowie auf 64Bit ausgeführt werden kann.

Es reicht im 32Bit Compiler nur "IncludeBinary" als einzige Zeile (!) stehen zu haben und es gibt besagt Fehlermeldung von Avira :freak:

Ein Ass hab ich aber noch im Ärmel. Ich werde versuchen die 32Bit/64Bit .EXE bzw. ein PB-Archiv was diese beinhaltet (Packer Lib) ans Ende der "Launcher.exe" zu hängen.

Wenn das nicht klappt weiß ich auch nicht weiter ... :|
Windows 10 Pro, 64-Bit / Outtakes | Derek
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Kaeru Gaman »

geht es dir nur um Windows?
probier doch mal, es als Windows-Ressource anzuhängen und nicht per IncludeBinary.
das müßte von Avira eigentlich eher akzeptiert werden, weil das die offizielle Lösung zum anhängen von Ressourcen ist.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Fluid Byte »

Ich hab' ein Resource Script erstellt (.rc) und es in den Compiler-Optionen eingebunden (Typ = RCDATA).
Die Anwendung lässt sich dann auch kompilieren. Das Problem ist dass man auf die Resourcen mittels BeginUpdateResource_()/EndUpdateResource_() zugreifen muss. Sobald aber ein BeginUpdateResource_() im Quelltext ist kann die .EXE nicht mehr erstellt werden (gibt vorher besagte Warnung).

Ich denke mal in der Windows-Version macht PB dasselbe, ist also identisch mit IncludeBinary.

Der Tipp war eigentlich gut aber nun stehe ich wieder am Anfang ... :freak:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von ts-soft »

Nimmste den hier: http://www.realsource.de/index.php/down ... aconverter
Fügst die beiden Exen hinzu, stellst Packformat meinetwegen auf None.
Erstellst eine test.res
Zur Nutzung dann:

Code: Alles auswählen

Import "test.res" : EndImport
XIncludeFile "UDRes_Include.pbi"

UDRes_Save(GetTemporaryDirectory() + "test.exe", 1)
; usw.
Avira AntiVir Premium sagt keinen mucks :wink:

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Fluid Byte »

Fluid Byte hat geschrieben:Ein Ass hab ich aber noch im Ärmel. Ich werde versuchen die 32Bit/64Bit .EXE bzw. ein PB-Archiv was diese beinhaltet (Packer Lib) ans Ende der "Launcher.exe" zu hängen.
Das deckt sich wohl mit deiner Methode. Lediglich wird keine rohe .EXE bzw. ein gepacktes Archiv angehängt sondern ein exportiertes Resource Script (.res).

Wie auch immer, ich habe es gerade ausprobiert und kann hiermit bestätigen das es einwandfrei funktioniert!
Ich werd' demnächst mal meinen Code für einen 32Bit/64Bit Multi-Launcher in Tipps&Tricks posten.

Danke ts-soft 8)
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von ts-soft »

> sondern ein exportiertes Resource Script (.res).
Da muß ich mich aber wehren. Es ist ein vom PureDataConverter kompilierte binäre Resource-Datei
(kein Script) und der Compiler ist nativ in PB geschrieben und im PureDataConverter integriert.

Der Compiler kann zwar nur einen Resource-Typ, aber der reicht ja für den Zweck :wink:

Freut mich, wenn alles funktioniert.

Gruß

Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von Fluid Byte »

Ok ok, ich nehm' alles zurück :mrgreen:

Ein Frage hab' ich aber noch. Die beiden .EXE haben eine Größe von 83kb und 55kb. Daraus resultiert eine .res-Datei von 139kb.

Warum ist dann aber die "Launcher.exe" die die Ressourcen enthält 331kb groß? Das ist mehr als die beiden .EXE roh und die .res-Datei zusammen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Avira Falschmeldung bei IncludeBinary

Beitrag von ts-soft »

Wenn Du keine Komprimierung genutzt hast, sollteste den Import in der UDRes_Include entfernen und
evtl. noch anpassen. Lediglich in den anderen Formaten wird eine spezielle Include generiert, die nur
die genutzten Packformate Importiert. Da ich bei den *.res keine Include-Datei generiere ist diese für
alle Packformate ausgerichtet.

Gruß
Thomas

// edit
Hab Dir mal eine UDRes_Include.pbi erstellt, die keinerlei Packer integriert :wink:

Code: Alles auswählen

;{
; Version 1.1
;
; Copyright (c) 2008 by Thomas Schulz / ts-soft@web.de
; http://www.realsource.de
;
; The contents of this file are subject To the Mozilla Public License Version
; 1.1 (the "License"); you may not use this file except in compliance with
; the License. You may obtain a copy of the License at
; http://www.mozilla.org/MPL/
;
; Software distributed under the License is distributed on an "AS IS" basis,
; WITHOUT WARRANTY OF ANY KIND, either express Or implied. See the License
; For the specific language governing rights And limitations under the
; License.
;
; The Original Code is UDRes_Include.pbi
;
; The Initial Developer of the Original Code is Thomas Schulz.
;
; Portions created by Thomas Schulz are Copyright (C) 2008
; Thomas Schulz. All Rights Reserved.
;}

; CompilerIf Defined(uncompress, #PB_Procedure) = #False
; ImportC "zlib.lib"
;   uncompress(*dest, *destLen, *source, sourceLen)
; EndImport
; CompilerEndIf

Enumeration
  #UDRes_Packer_None
  #UDRes_Packer_jCalg1
  #UDRes_Packer_zip
EndEnumeration

CompilerIf Defined(UDResPack, #PB_Structure) = #False
Structure UDResPack
  Size.q
  CRC.q
  Packer.b
  Magic.b[6]
EndStructure
CompilerEndIf

CompilerIf Defined(_UnpackMemory, #PB_Procedure) = #False
Procedure _UnpackMemory(*SourceMemoryID, SourceLength, *DestionationMemoryID, DestLength, Packer = #UDRes_Packer_jCalg1)
;   Select Packer
;     Case #UDRes_Packer_jCalg1
;       ProcedureReturn UnpackMemory(*SourceMemoryID, *DestionationMemoryID)
;     Case #UDRes_Packer_zip
;       If Not uncompress(*DestionationMemoryID, @DestLength, *SourceMemoryID, SourceLength)
;         ProcedureReturn #True
;       EndIf
;   EndSelect
EndProcedure
CompilerEndIf

Procedure UDRes_Get(ResNumber, hModule = 0)
  Protected ResName.s, ResType.s = "PBDATA"
  Protected hFind, hLoad, hLock, hSize, Size, CRC, Packer
  Protected *Mem.UDResPack, *DestMem

  If ResNumber < 0 : ProcedureReturn #False : EndIf
  ResNumber + 1

  ResName = "#" + Str(ResNumber)

  If Not hModule : hModule = GetModuleHandle_(#Null) : EndIf

  hFind = FindResource_(hModule, ResName, @ResType)
  If hFind
    hLoad = LoadResource_(hModule, hFind)
    hSize = SizeofResource_(hModule, hFind)
    hLock = LockResource_(hLoad)

    *Mem = AllocateMemory(hSize)

    If *Mem
      CopyMemory(hLock, *Mem, hSize)
      FreeResource_(hLock)

      If PeekS(@*Mem\Magic[0], 6, #PB_Ascii) <> "PBDATA"

        ProcedureReturn *Mem
      EndIf

      Size    = *Mem\Size
      CRC     = *Mem\CRC
      Packer  = *Mem\Packer

      If Size > 0
        *DestMEM = AllocateMemory(Size)
        If *DestMEM
          If _UnpackMemory(*Mem + SizeOf(UDResPack), MemorySize(*Mem), *DestMEM, Size, Packer) > 0
            FreeMemory(*Mem)
            If CRC32Fingerprint(*DestMEM, Size) = CRC

              ProcedureReturn *DestMEM
            Else
              FreeMemory(*DestMEM)
            EndIf
          Else
            FreeMemory(*DestMEM)
          EndIf
        EndIf
      Else
        FreeMemory(*Mem)
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure.s UDRes_GetFileName(ResNumber, hModule = 0)
  Protected *Mem = UDRes_Get(0, hModule)
  Protected FileNames.s
  If *Mem
    FileNames  = PeekS(*Mem, -1, #PB_UTF8)
    FreeMemory(*Mem)
    ProcedureReturn StringField(FileNames, ResNumber + 1, ",")
  EndIf
EndProcedure

Procedure UDRes_GetResNumber(FileName.s, start = 1, hModule = 0)
  Protected *Mem = UDRes_Get(0, hModule)
  Protected FileNames.s
  Protected I, J

  If *Mem
    FileNames = PeekS(*Mem, -1, #PB_UTF8)
    FreeMemory(*Mem)
    If start < 1 : start = 1 : EndIf

    J = CountString(FileNames, ",")

    For I = start To J
      If UCase(StringField(FileNames, I + 1, ",")) = UCase(FileName)
        ProcedureReturn I
      EndIf
    Next
    
  EndIf

EndProcedure

Procedure UDRes_Save(FileName.s, ResNumber, hModule = 0)
  Protected FileID
  Protected *Mem

  FileID = CreateFile(#PB_Any, FileName)

  If FileID
    *Mem = UDRes_Get(ResNumber, hModule)

    If *Mem
      WriteData(FileID, *Mem, MemorySize(*Mem))
      CloseFile(FileID)
      FreeMemory(*Mem)

      ProcedureReturn #True
    EndIf

    CloseFile(FileID)
    DeleteFile(FileName)
  EndIf
EndProcedure

Procedure UDRes_CatchSound(Sound, ResNumber, hModule = 0)
  Protected *Mem = UDRes_Get(ResNumber, hModule)
  Protected Result

  If *Mem
    Result = CatchSound(Sound, *Mem, MemorySize(*Mem))
    FreeMemory(*Mem)

    ProcedureReturn Result
  EndIf

EndProcedure

Procedure UDRes_CatchImage(Image, ResNumber, Flag = 0, hModule = 0)
  Protected *Mem = UDRes_Get(ResNumber, hModule)
  Protected Result

  If *Mem
    Result = CatchImage(Image, *Mem, MemorySize(*Mem), Flag)
    FreeMemory(*Mem)

    ProcedureReturn Result
  EndIf

EndProcedure

Procedure UDRes_CatchSprite(Sprite, ResNumber, Modus = 0, hModule = 0)
  Protected *Mem = UDRes_Get(ResNumber, hModule)
  Protected Result

  If *Mem
    Result = CatchSprite(Sprite, *Mem, Modus)
    FreeMemory(*Mem)

    ProcedureReturn Result
  EndIf

EndProcedure

CompilerIf #PB_Compiler_Version >= 430
Procedure UDRes_CatchModule(Module, ResNumber, hModule = 0)
  Protected *Mem = UDRes_Get(ResNumber, hModule)
  Protected Result

  If *Mem
    Result = CatchModule(Module, *Mem, MemorySize(*Mem))
    FreeMemory(*Mem)

    ProcedureReturn Result
  EndIf

EndProcedure
CompilerEndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten