Page 1 sur 1

VirusTotal Public API v2.0

Publié : dim. 28/mai/2017 13:51
par celtic88
Bonjour les pures :)

à propos : https://www.virustotal.com/fr/documentation/public-api/
le code permet de scanner vos fichiers en ligne et obtenir le rapport de scan au format "json"

versions avec winhttp

Code : Tout sélectionner

;By Celtic88 2016
;about : https://www.virustotal.com/fr/documentation/public-api/

EnableExplicit

#VirustotalAPIkey = "" ;here put your vapi key

#WorkMemorySize = 1024*24

Macro h
  Chr(34) 
EndMacro

Prototype.i WinHttpOpen(pwszUserAgent.p-unicode,
                        dwAccessType.l,
                        pwszProxyName.p-unicode,
                        pwszProxyBypass.p-unicode,
                        dwFlags.l )
Prototype.i WinHttpConnect(hSession.i,
                           pswzServerName.p-unicode,
                           nServerPort.l,
                           dwReserved.l)
Prototype.l WinHttpCloseHandle(hInternet.i)
Prototype.i WinHttpOpenRequest(hConnect.i,
                               pwszVerb.p-unicode,
                               pwszObjectName.p-unicode,
                               pwszVersion.p-unicode,
                               pwszReferrer.p-unicode,
                               *ppwszAcceptTypes,
                               dwFlags.l);
Prototype.l WinHttpSendRequest(hRequest.i,
                               pwszHeaders.p-unicode,
                               dwHeadersLength.l,
                               *lpOptional,
                               dwOptionalLength.l,
                               dwTotalLength.l,
                               *dwContext)
Prototype.l WinHttpReceiveResponse(hRequest.i,
                                   *lpReserved)
Prototype.l WinHttpSetOption(hInternet.i,
                             dwOption.l,
                             *lpBuffer,
                             dwBufferLength.l );
Prototype.l WinHttpQueryDataAvailable(hRequest.i,
                                      *lpdwNumberOfBytesAvailable)
Prototype.l WinHttpReadData(hRequest.i,
                            *lpBuffer,
                            dwNumberOfBytesToRead.l,
                            *lpdwNumberOfBytesRead);
Prototype.l WinHttpQueryHeaders(hRequest.i,
                                dwInfoLevel.l,
                                pwszName.p-unicode, 
                                *lpBuffer,
                                *lpdwBufferLength,
                                *lpdwIndex)
Prototype.l WinHttpWriteData(hRequest,
                             *lpBuffer,
                             dwNumberOfBytesToWrite.l,
                             *lpdwNumberOfBytesWritten)

Global winhttp_dll=OpenLibrary(#PB_Any,"winhttp.dll")
Global WinHttpOpen.WinHttpOpen=GetFunction(winhttp_dll,"WinHttpOpen")
Global WinHttpCloseHandle.WinHttpCloseHandle=GetFunction(winhttp_dll,"WinHttpCloseHandle")
Global WinHttpConnect.WinHttpConnect=GetFunction(winhttp_dll,"WinHttpConnect")
Global WinHttpOpenRequest.WinHttpOpenRequest=GetFunction(winhttp_dll,"WinHttpOpenRequest")
Global WinHttpSendRequest.WinHttpSendRequest=GetFunction(winhttp_dll,"WinHttpSendRequest")
Global WinHttpReceiveResponse.WinHttpReceiveResponse=GetFunction(winhttp_dll,"WinHttpReceiveResponse")
Global WinHttpSetOption.WinHttpSetOption=GetFunction(winhttp_dll,"WinHttpSetOption")
Global WinHttpReadData.WinHttpReadData=GetFunction(winhttp_dll,"WinHttpReadData")
Global WinHttpQueryDataAvailable.WinHttpQueryDataAvailable=GetFunction(winhttp_dll,"WinHttpQueryDataAvailable")
Global WinHttpQueryHeaders.WinHttpQueryHeaders=GetFunction(winhttp_dll,"WinHttpQueryHeaders")
Global WinHttpWriteData.WinHttpWriteData=GetFunction(winhttp_dll,"WinHttpWriteData")

#INTERNET_SCHEME_HTTPS_WINHTTP                                                   =2
#WINHTTP_ACCESS_TYPE_DEFAULT_PROXY                                        =0
#WINHTTP_NO_PROXY_NAME                                                                     =#Null$
#WINHTTP_NO_PROXY_BYPASS                                                                  =#Null$
#WINHTTP_FLAG_ESCAPE_DISABLE                                                           = $00000040
#WINHTTP_NO_REFERER                                                                                 = #Null$
#WINHTTP_DEFAULT_ACCEPT_TYPES                                                       =#Null
#WINHTTP_NO_REQUEST_DATA                                                                  =#Null

Threaded VirustotalhSession,VirustotalhConnect

Procedure.s GetHashFile(File$)
  Protected Rdf=ReadFile(#PB_Any,File$)
  If Rdf
    Protected *Dataf=AllocateMemory(#WorkMemorySize)
    If *Dataf
      #PROV_RSA_AES = 24
      #CRYPT_VERIFYCONTEXT = $F0000000
      #CALG_MD5 = $00008003
      #HP_HASHSIZE = $0004
      #HP_HASHVAL = $0002
      Protected hProv,hHash,*ihash, iDataLen.l,iDataLenType.l,iReturn$,o.l,Rd.l
      CryptAcquireContext_(@hProv, #Null, #Null, #PROV_RSA_AES, #CRYPT_VERIFYCONTEXT)
      If hProv
        CryptCreateHash_(hProv, #CALG_MD5, 0, 0, @hHash)
        If hHash
          While Eof(Rdf)=0
            Rd=ReadData(Rdf,*Dataf,#WorkMemorySize)
            CryptHashData_(hHash, *Dataf, Rd, 1)
          Wend
          iDataLenType=4
          CryptGetHashParam_(hHash,#HP_HASHSIZE,@iDataLen,@iDataLenType,0)
          If iDataLen
            iDataLenType=iDataLen
            CryptGetHashParam_(hHash,#HP_HASHVAL,*Dataf,@iDataLenType,0)
            For o=0 To iDataLenType-1
              iReturn$+ RSet(Hex(PeekA(*Dataf+o),#PB_Ascii), 2, "0")
            Next
          EndIf
          CryptDestroyHash_(hHash)
        EndIf
        CryptReleaseContext_(hProv, 0)
      EndIf
      FreeMemory(*Dataf)
    EndIf
    CloseFile(Rdf)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Procedure Virustotal_Connect()
  VirustotalhSession = WinHttpOpen("", #WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, #WINHTTP_NO_PROXY_NAME,#WINHTTP_NO_PROXY_BYPASS,0)
  If VirustotalhSession
    VirustotalhConnect =WinHttpConnect(VirustotalhSession,"www.virustotal.com",80,0)
    If Not VirustotalhConnect:WinHttpCloseHandle(VirustotalhSession):VirustotalhSession=0:ProcedureReturn 0:EndIf
    ProcedureReturn VirustotalhConnect
  EndIf
EndProcedure

Procedure Virustotal_Close()
  If VirustotalhSession:WinHttpCloseHandle(VirustotalhSession):EndIf
  If VirustotalhConnect:WinHttpCloseHandle(VirustotalhConnect):EndIf
EndProcedure

Procedure.s Virustotal_ScanFile(FileToScan$)
  Protected iReturn$,iDatelen.l,*m,Rcv.l,iRead.l,p.l
  Protected sBoundary$="--------Boundary"
  Protected sHeaders$ = "Content-Type: multipart/form-data; boundary=" + sBoundary$ + #CRLF$
  Protected sData$ = "--" + sBoundary$ + #CRLF$
  sData$ + "Content-Disposition: form-data; name=" + h + "apikey" + h + #CRLF$ + #CRLF$ + #VirustotalAPIkey + #CRLF$
  sData$ + "--" + sBoundary$ + #CRLF$
  sData$ + "Content-Disposition: form-data; name=" +h+ "file" +h + "; filename="+h+ GetFilePart(FileToScan$,#PB_FileSystem_NoExtension) +h + #CRLF$ + "Content-Type: application/octet-stream" + #CRLF$ + #CRLF$
  Protected EndData$ = #CRLF$ +"--" + sBoundary$ + "--" + #CRLF$
  
  Protected Rdf =ReadFile(#PB_Any,FileToScan$)
  If Rdf
    Protected SizeData.l=Lof(Rdf)+StringByteLength(sData$ ,#PB_Ascii)+StringByteLength(EndData$ ,#PB_Ascii)
    Protected  *iData = AllocateMemory(#WorkMemorySize)
    If *iData
      Protected hRequest=WinHttpOpenRequest(VirustotalhConnect,"Post","/vtapi/v2/file/scan","HTTP/1.1",#WINHTTP_NO_REFERER,#WINHTTP_DEFAULT_ACCEPT_TYPES,#WINHTTP_FLAG_ESCAPE_DISABLE)
      If hRequest
        WinHttpSendRequest(hRequest,sHeaders$,Len(sHeaders$),#WINHTTP_NO_REQUEST_DATA, 0,SizeData,0)
        
        PokeS(*iData,sData$,-1,#PB_Ascii)
        WinHttpWriteData(hRequest,*iData,StringByteLength(sData$ ,#PB_Ascii),0)
        For p=0 To Lof(Rdf) Step #WorkMemorySize
          iRead= ReadData(Rdf,*iData, #WorkMemorySize)
          WinHttpWriteData(hRequest,*iData,iRead,0)
          Debug "Send :"+Str(iRead)
        Next
        PokeS(*iData,EndData$,-1,#PB_Ascii)
        WinHttpWriteData(hRequest,*iData,StringByteLength(EndData$ ,#PB_Ascii),0)
        
        WinHttpReceiveResponse(hRequest,0)
        While WinHttpQueryDataAvailable(hRequest,@iDatelen) = 1 And iDatelen > 0
          *m=ReAllocateMemory(*m,Rcv+iDatelen)
          WinHttpReadData(hRequest,*m+Rcv,iDatelen,0)
          Rcv+iDatelen
        Wend
        
        If *m
          iReturn$= PeekS(*m,Rcv,#PB_Ascii)
          FreeMemory(*m)
        EndIf
        
        WinHttpCloseHandle(hRequest)
      EndIf
      FreeMemory(*iData)
    EndIf
    CloseFile(Rdf)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Procedure.s Virustotal_Get(HashFile$,sCommand$,sType$="resource")
  Protected iReturn$,iDatelen.l,*m,Rcv.l
  Protected *iData = Ascii(sType$+"=" + HashFile$ + "&key=" + #VirustotalAPIkey)
  If *iData
    Protected sHeaders$ = "Content-Type: application/x-www-form-urlencoded" + #CRLF$
    Protected hRequest=WinHttpOpenRequest(VirustotalhConnect,"Post","/vtapi/v2/"+sCommand$,"HTTP/1.1",#WINHTTP_NO_REFERER,#WINHTTP_DEFAULT_ACCEPT_TYPES,#WINHTTP_FLAG_ESCAPE_DISABLE)
    If hRequest
      WinHttpSendRequest(hRequest,sHeaders$,Len(sHeaders$),*iData,MemorySize(*iData)-1,MemorySize(*iData)-1,0)
      WinHttpReceiveResponse(hRequest,0)
      
      While WinHttpQueryDataAvailable(hRequest,@iDatelen) = 1 And iDatelen > 0
        *m=ReAllocateMemory(*m,Rcv+iDatelen)
        WinHttpReadData(hRequest,*m+Rcv,iDatelen,0)
        Rcv+iDatelen
      Wend
      
      If *m
        iReturn$= PeekS(*m,Rcv,#PB_Ascii)
        FreeMemory(*m)
      EndIf
      
      WinHttpCloseHandle(hRequest)
    EndIf
    FreeMemory(*iData)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Macro Virustotal_GetReportFile(HashFile)
  Virustotal_Get(HashFile,"file/report")
EndMacro

Macro Virustotal_RescanFile(HashFile)
  Virustotal_Get(HashFile,"file/rescan")
EndMacro

Macro Virustotal_ScanUrl(Url)
  Virustotal_Get(Url,"url/scan","url")
EndMacro

Macro Virustotal_GetReportUrl(Url)
  Virustotal_Get(Url,"url/report")
EndMacro

Virustotal_Connect()
Define HashFile$ =GetHashFile("virus.exe")
Debug HashFile$
Debug Virustotal_ScanFile("virus.exe")
Debug Virustotal_GetReportFile(HashFile$)
Debug Virustotal_ScanUrl("www.purebasic.fr")
Debug Virustotal_GetReportUrl("www.purebasic.fr")
versions multi os

Code : Tout sélectionner

;By Celtic88 new version multi os
;about : https://www.virustotal.com/fr/documentation/public-api/

EnableExplicit
InitNetwork() 
UseMD5Fingerprint()

#VirustotalAPIkey = "" ; here put your vapi key

#WorkMemorySize = 1024*24; 24Kb

Macro h
  Chr(34) 
EndMacro

Macro ScanFileRequest(Content_Length,DataBoundary)
  "POST /vtapi/v2/file/scan HTTP/1.1" +#CRLF$ +
                                       "Connection: Close" +#CRLF$ +
                                       "Content-Type: multipart/form-data; boundary=--------Boundary" +#CRLF$ +
                                       "Content-Length: "+ Str(Content_Length) +#CRLF$ +
                                       "Host: www.virustotal.com" +#CRLF$ +#CRLF$+
                                       DataBoundary
EndMacro

Macro SimpleRequest(file,sData)
  "POST /vtapi/v2/" +file+ " HTTP/1.1" +#CRLF$ +
                     "Connection: Close" +#CRLF$ +
                     "Content-Type: application/x-www-form-urlencoded" +#CRLF$ +
                     "Content-Length: " +Str(Len(sData)) +#CRLF$ +
                     "Host: www.virustotal.com"+#CRLF$ +#CRLF$ +
                     sData
EndMacro 

Procedure.s GetHashFile(File$)
  Protected Rdf=ReadFile(#PB_Any,File$)
  If Rdf
    Protected *Dataf=AllocateMemory(#WorkMemorySize)
    If *Dataf
      Protected fmd5 = StartFingerprint(#PB_Any, #PB_Cipher_MD5) 
      If fmd5
        Protected Rd.l,iReturn$
        While Eof(Rdf)=0
          Rd=ReadData(Rdf,*Dataf,#WorkMemorySize)
          AddFingerprintBuffer(fmd5, *Dataf, Rd)   
        Wend
        iReturn$=  FinishFingerprint(fmd5) 
      EndIf
      FreeMemory(*Dataf)
    EndIf
    CloseFile(Rdf)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Procedure.s Virustotal_ScanFile(FileToScan$)
  Protected Rdf =ReadFile(#PB_Any,FileToScan$)
  If Rdf
    Protected  *iData = AllocateMemory(#WorkMemorySize)
    If *iData
      Protected hConnect =OpenNetworkConnection("www.virustotal.com",80)
      If hConnect
        Protected DataBoundary$=    "----------Boundary" +#CRLF$ +
                                    "Content-Disposition: form-data; name="+h+"apikey"+h+ #CRLF$ +#CRLF$ +
                                    #VirustotalAPIkey +#CRLF$ +
                                    "----------Boundary" +#CRLF$ +
                                    "Content-Disposition: form-data; name="+h+"file"+h+"; filename="+h+ GetFilePart(FileToScan$)  +h +#CRLF$ +
                                    "Content-Type: " + "application/octet-stream" +#CRLF$ +#CRLF$
        Protected DataEnfBoundary$=#CRLF$ +"----------Boundary--" + #CRLF$
        Protected Content_Length = Lof(Rdf)+StringByteLength(DataBoundary$ ,#PB_Ascii)+StringByteLength(DataEnfBoundary$ ,#PB_Ascii)
        SendNetworkString(hConnect,ScanFileRequest(Content_Length,DataBoundary$), #PB_Ascii)
        Protected p.l, iRead.l,Ev, *m, iReturn$,Rcv.l
        For p=0 To Lof(Rdf) Step #WorkMemorySize
          iRead= ReadData(Rdf,*iData, #WorkMemorySize)
          While (SendNetworkData(hConnect,*iData,iRead) < 1) 
            If NetworkClientEvent(hConnect) = #PB_NetworkEvent_Disconnect:Break 2:EndIf
            Delay(50)
          Wend
          Debug "Send :"+Str(iRead)
        Next
        SendNetworkString(hConnect,DataEnfBoundary$, #PB_Ascii)
        Repeat
          Delay(50)
          Ev=NetworkClientEvent(hConnect) 
        Until Ev = #PB_NetworkEvent_Data Or Ev = #PB_NetworkEvent_Disconnect; you can place a timeout!
        
        While NetworkClientEvent(hConnect) <> #PB_NetworkEvent_Disconnect ; get Request response
          iRead=ReceiveNetworkData(hConnect,*iData,#WorkMemorySize)
          If iRead
            *m=ReAllocateMemory(*m,Rcv+iRead)
            If *m
              CopyMemory(*iData, *m+Rcv, iRead)
              Rcv+iRead
            EndIf
          EndIf
        Wend
        
        If *m
          iReturn$= PeekS(*m,Rcv,#PB_Ascii)
          iReturn$=Mid(iReturn$,FindString(iReturn$, #CRLF$ +#CRLF$ )+4) 
          FreeMemory(*m)
        EndIf
        
        CloseNetworkConnection(hConnect)
      EndIf
      FreeMemory(*iData)
    EndIf
    CloseFile(Rdf)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Procedure.s Virustotal_Get(HashFile$,sCommand$,sType$="resource")
  Protected iReturn$,Ev,Rcv.l,tRcv.l
  Protected *iData = AllocateMemory(#WorkMemorySize)
  If *iData
    Protected hConnect =OpenNetworkConnection("www.virustotal.com",80)
    If hConnect
      SendNetworkString(hConnect,SimpleRequest(sCommand$, sType$+"=" + HashFile$ + "&key=" + #VirustotalAPIkey), #PB_Ascii)
      Repeat
        Delay(50)
        Ev=NetworkClientEvent(hConnect) 
      Until Ev = #PB_NetworkEvent_Data Or Ev = #PB_NetworkEvent_Disconnect
      While NetworkClientEvent(hConnect) <> #PB_NetworkEvent_Disconnect
        tRcv=ReceiveNetworkData(hConnect,*iData+Rcv,#WorkMemorySize)
        If tRcv
          Rcv+tRcv
          *iData=ReAllocateMemory(*iData,Rcv+(#WorkMemorySize))
          If Not *iData:Break:EndIf
        EndIf
      Wend
      If *iData
        iReturn$= PeekS(*iData,Rcv,#PB_Ascii)
        iReturn$=Mid(iReturn$,FindString(iReturn$, #CRLF$ +#CRLF$ )+4) 
      EndIf
      CloseNetworkConnection(hConnect)
    EndIf
    FreeMemory(*iData)
  EndIf
  ProcedureReturn iReturn$
EndProcedure

Macro Virustotal_GetReportFile(HashFile); Get scanned File Report!
  Virustotal_Get(HashFile,"file/report")
EndMacro

Macro Virustotal_RescanFile(HashFile)
  Virustotal_Get(HashFile,"file/rescan")
EndMacro

Macro Virustotal_ScanUrl(Url)
  Virustotal_Get(Url,"url/scan","url")
EndMacro

Macro Virustotal_GetReportUrl(Url)
  Virustotal_Get(Url,"url/report")
EndMacro

Define HashFile$ =GetHashFile("virus.exe")
Debug HashFile$
Debug Virustotal_ScanFile("virus.exe")
Debug Virustotal_GetReportFile(HashFile$)
Debug Virustotal_ScanUrl("www.purebasic.fr")
Debug Virustotal_GetReportUrl("www.purebasic.fr")

amusez vous a+ :)

Re: VirusTotal Public API v2.0

Publié : lun. 29/mai/2017 14:47
par celtic88
j ai remarqué que certain antivirus detect les programmes compilé avec "Pb" comme des programme Suspects son raison:! malgré que la compilation est native

il ya une méthode avec "OLLYDBG" pour régler ce problème, mais je ne sais pas si c'est légale ou non de poster la méthode ici

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 9:57
par Mesa
celtic88 a écrit :il ya une méthode avec "OLLYDBG" pour régler ce problème, mais je ne sais pas si c'est légale ou non de poster la méthode ici
Envoie moi la méthode en mp et on verra avec Fred.

Merci.

Mesa.

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 10:44
par Ar-S
Je suis preneur en tout cas.
Si c'est faisable avec olly, peut être que Fred peut modifier quelque chose lors de la compilation pour remédier au problème (sauf s'il s'agit de faire passer PB pour un prog signé gro$oft)

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 11:36
par vurvur
Merci pour le partage!

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 15:54
par celtic88
Ar-S a écrit :Je suis preneur en tout cas.
Si c'est faisable avec olly, peut être que Fred peut modifier quelque chose lors de la compilation pour remédier au problème (sauf s'il s'agit de faire passer PB pour un prog signé gro$oft)
si c est pour le grand Mr:FRED je suis sur même certain qu'il sait mieux que nous tous ensemble réunis :oops:

pour les programmeurs avancés, je vous laisse un indice

voilà comment les maudit avs detect les pb :)

Code : Tout sélectionner

Structure Pb_Dectector
  Push1.a; $68
  Push1v.l
  Push2.a ;$68
  Push2v.l
  Push3.a ;$68
  Push3v.l
  Call1.a; $E8
  Call1ad.l
  Add.a; $83
  Addv.u
  Push4.a ;$68
  Push4v.l 
  Call2.a; $E8
  Call2ad.l
EndStructure

tIMAGE_DOS_HEADER2.IMAGE_DOS_HEADER
tIMAGE_NT_HEADERS2.IMAGE_NT_HEADERS
tIMAGE_SECTION_HEADER.IMAGE_SECTION_HEADER
iPbDectector.Pb_Dectector

ReadFile(0, "Purebasic.exe"); select pb file

ReadData(0,@tIMAGE_DOS_HEADER2,SizeOf(IMAGE_DOS_HEADER))
FileSeek(0,tIMAGE_DOS_HEADER2\e_lfanew)
ReadData(0,@tIMAGE_NT_HEADERS2,SizeOf(IMAGE_NT_HEADERS))
If tIMAGE_NT_HEADERS2\OptionalHeader\Magic <> 267 ;  jai pas 64bit :-)
  End
EndIf
FileSeek(0,tIMAGE_DOS_HEADER2\e_lfanew+SizeOf(IMAGE_NT_HEADERS))
ReadData(0,@tIMAGE_SECTION_HEADER,SizeOf(IMAGE_SECTION_HEADER))

For i=1 To tIMAGE_NT_HEADERS2\FileHeader\NumberOfSections
  With tIMAGE_SECTION_HEADER
    If \VirtualAddress=tIMAGE_NT_HEADERS2\OptionalHeader\AddressOfEntryPoint
      offsetentrypoint =( tIMAGE_NT_HEADERS2\OptionalHeader\AddressOfEntryPoint-\VirtualAddress)+\PointerToRawData
      Break
    EndIf
  EndWith
  FileSeek(0,tIMAGE_DOS_HEADER2\e_lfanew+SizeOf(IMAGE_NT_HEADERS)+ (SizeOf(IMAGE_SECTION_HEADER)*(1+i)))
  ReadData(0,@tIMAGE_SECTION_HEADER,SizeOf(IMAGE_SECTION_HEADER))
Next

Debug "entry point :" +Str(offsetentrypoint)
FileSeek(0,offsetentrypoint)
ReadData(0,@iPbDectector,SizeOf(Pb_Dectector))

If (iPbDectector\Push1) = $68 And (iPbDectector\Push2) = $68  And (iPbDectector\Push3) = $68  And (iPbDectector\Call1) = $E8 And
   (iPbDectector\Add) = $83 And (iPbDectector\Push4) = $68  And (iPbDectector\Call2) = $E8
  
  Debug "Is Pb Studio :)"
  
EndIf

CloseFile(0)
       

Image

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 18:00
par vurvur
celtic88 a écrit :
Ar-S a écrit :Je suis preneur en tout cas.
Si c'est faisable avec olly, peut être que Fred peut modifier quelque chose lors de la compilation pour remédier au problème (sauf s'il s'agit de faire passer PB pour un prog signé gro$oft)
si c est pour le grand Mr:FRED je suis sur même certain qu'il sait mieux que nous tous ensemble réunis :oops:

pour les programmeurs avancés, je vous laisse un indice

voilà comment les maudit avs detect les pb :)
Merci pour les indices, mais est-ce que ta méthode élimine toutes les fausses détections sur virustotal (par exemple pour un simple Hello World)?

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 18:27
par Ar-S
Surement pas toutes.
Tu peux créer des programmes avec des comportements réellement suspect. L'inclusion d'exe, la récupération en ligne, l'injection ddl etc...
à ce moment c'est logique que les AV soient méfiants, c'est leur boulot. Après les fausses détections à la "hello world" c'est effectivement frustrant. Si on peut éviter de "salir" la réputation de PB avec des progs standards ce serait un gros plus.

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 18:53
par vurvur
Ar-S a écrit :Surement pas toutes.
Tu peux créer des programmes avec des comportements réellement suspect. L'inclusion d'exe, la récupération en ligne, l'injection ddl etc...
à ce moment c'est logique que les AV soient méfiants, c'est leur boulot. Après les fausses détections à la "hello world" c'est effectivement frustrant. Si on peut éviter de "salir" la réputation de PB avec des progs standards ce serait un gros plus.
J'ai bien dit les fausses détections, les détections abusives, qui ne sont dues qu'à la mauvaise qualité de certains antivirus (qui souvent d'ailleurs ne se donnent pas la peine de répondre ou de rectifier leurs erreurs quand on les leur signale). Cela dit PureBasic n'est pas le seul langage victime de ce genre d'abus. J'ai encore eu le cas récemment avec un "hello world" en C compilé avec gcc.

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 19:10
par celtic88
tout à fait d'accord avec @Ar-S

la chose qui m'a poussé de poster ça ,seulement parce que il ya des stupide "avs" qui ne cherchent pas dans le contenu du fichier mais sur son origine

et ça me chiffonne :(( , malgré que....

vurvur : oui sera Clean 8) mais il faut ajouter quelque truc dans le code :twisted: :roll:

Re: VirusTotal Public API v2.0

Publié : mar. 30/mai/2017 19:37
par celtic88
:wink:

Code : Tout sélectionner

Debug "Polink Version : " +Str(tIMAGE_NT_HEADERS2\OptionalHeader\MajorLinkerVersion) +"."+
Str( tIMAGE_NT_HEADERS2\OptionalHeader\MinorLinkerVersion)

Re: VirusTotal Public API v2.0

Publié : mer. 07/juin/2017 22:58
par Ollivier
A ce propos, c'est quoi cette histoire de Scintilla, vérolé par la NSA ?

Re: VirusTotal Public API v2.0

Publié : mer. 07/juin/2017 23:15
par Zorro
un Fake ??

pourquoi la NSA s'embeterai a utiliser Scintilla
alors qu'ils ont probablement deja acces aux microprocesseur d'Intel
et aux system d'exploitations Windows ......
(pourquoi crois tu que Bill Gate a été reçut a l'élysée par Chirac en 2004 , http://www.silicon.fr/bill-gates-est-re ... 31768b4a4a

et plus recemment par Hollande ??
pour parler chiffons ??
je ne le pense pas ... :)

Image

Re: VirusTotal Public API v2.0

Publié : mar. 05/déc./2017 12:10
par Kwai chang caine
Merci du partage maitre CELTIC 8)

C'est qui le mec à coté de BILOU ? 8O
Aaaah oui Hollande, j'avais déjà oublié !!!!
Zorro a écrit :pour parler chiffons ??
Chiffon surement pas :?
Mais cravate peut être ?? elle est bien droite sur cette photo :mrgreen: