Sicherheitscenter vs. meine .exe



  • Hallo, also ich habe jetzt mein Kniffelspiel fertig gestellt.
    Aber einer meiner "Tester" bekommt diese "Schutzmeldung", wenn er meine .exe starten will:
    http://www.sro.at/bildupload/images/Schutzmeldung.jpg
    Also mal ehrlich, was soll denn das, wieso blockt das Sicherheitscenter von XP meine .exe?



  • Hast du vll. n Hook eingebaut, darüber beschweren sich die meisten Fw's.

    MfG CodeFinder



  • dein Programm verwendet zahlreiche Reg-Funktionen, darunter aber nicht RegDelete irgendwas. Oh wie ich das hasse, Programme die die Registry zumüllen und das nimmer löschen! 😡 😡 😡



  • Einen Hook, nicht, dass ich wüsste.

    Und zu den Regschlüsseln, die müssen erhalten bleiben, weil dort Einstellungen des Programms auch über das Beenden des Programms hinaus gesichert werden.
    Und in der Deinstall.txt (die mit im zip-Archiv enthalten ist) steht auch direkt drin, welcher Registryschlüssel erstellt wird und dann, wenn das Programm nichtmehr verwendet wird gelöscht werden soll ...
    Ach ja, und ich hatte mal testweise alle Regfunktionen entfernt, die Meldung kam aber trotzdem.



  • Mach ne Sicherheitskopie von deinem Quelltext und fang dann an alles nacheinander rauszulöschen! Dann wirste ja rausfinden woran es liegt! Oder passiert das auch bei einem Hallo Welt Programm?



  • Nein, es ist mir erst aufgefallen, als ich das programm bei einem Freund getestet habe, weil bei mir die MessageBox nicht auftritt ... Deshalb ist das auch ein bissl doof zu testen, aber ich denke mir bleibt nichts anderes übrig ...
    Aber kann denn die FW einfach in meinen Code gucken, oder wie?

    Könnte eine PeekMessage()-Funktion dran schuld sein?



  • Firewall, die denken kann? Heute nicht...
    Habt ihr die selben Firewalls? Wenn ja: Sind deine Sicherheitseinstellungen nicht so hoch wie die deines Freundes?

    Mfg Ominion



  • Top_se schrieb:

    Und zu den Regschlüsseln, die müssen erhalten bleiben, weil dort Einstellungen des Programms auch über das Beenden des Programms hinaus gesichert werden.
    Und in der Deinstall.txt (die mit im zip-Archiv enthalten ist) steht auch direkt drin, welcher Registryschlüssel erstellt wird und dann, wenn das Programm nichtmehr verwendet wird gelöscht werden soll ...

    das finde ich mal sehr angenehm, daß weder installer noch deinstaller gebraucht werden. und dann isses ja eigentlich auch lögisch, daß ich als eingeschränkter benutzer kniffeln kann. die 14 dialogboxen mit "fehler beim erstellen" und "fehler beim lesen" am anfang verwirren mich da ein wenig.
    würde CURRENT_USER statt LOCALE_MACHINE nicht viel sinniger sein?



  • Top_se schrieb:

    Aber kann denn die FW einfach in meinen Code gucken, oder wie?

    sie kann leicht sehen, welche funktionen aus dlls du benutzt. ist da irgendwas komisches (wie gesagt hooks zum beispiel), heult sie.

    Könnte eine PeekMessage()-Funktion dran schuld sein?

    nee, die benutzt jeder.



  • Lol, naja so war das nicht gemeint, aber ... ach egal.

    Naja, also er hat da warscheinl. noch die XP SP2-FW laufen, die den Spaß blockt, was ich auch nicht habe ...

    Der Freund ist ein Sicherheitsfetischist und der wird in gottes Namen niemals seine Sicherheitseinstellungen runter schrauben, da glaubt er schon eher, dass ich ihn etwas bößes will ... und deshalb würde ich halt gern wissen, wann solche Blockierungen meist vorgenommen werden.

    edit: volkard, dir antworte ich gleich!



  • Firewall hacken...
    Naja meistens geht da gar nichts (leider).

    Mfg Ominion



  • les mal
    http://users.ece.gatech.edu/~owen/Academic/ECE4112/Fall2004/Projects/dll injecting.doc
    und such darin nach IsBadWritePtr
    deine exe benutzt auch IsBadWritePtr

    stell dann deine exe mal auf die release-version um und schau, um dann noch sowas komisches drin ist.



  • So, okay, danke für die Info, also das mit dem eingeschränkten Konto war ganz schlecht von mir, daran hab ich nicht gedacht ... Daher rühren auch die messageboxen ...

    Ich habe mir LOCAL_MACHINE ausgesucht, weil ich ursprünglich die Highscore auch in der Registry lagern wollte und dann sollte auf dem PC nur 1 Highsocre da sein, also dass sie Benutzer des PC`s "kämpfen" können, aber nun werde ich wohl auf CURRENT_USER switchen!

    Das word-dokument schau ich mir mal an!



  • Also
    1., woher weißt du denn, dass meine exe diese IsBadWritePtr-Funktion verwendet.

    2., wie meinst du denn das hier:

    stell dann deine exe mal auf die release-version um

    Und eigentl. hab ich in dem Programm nur Funktionen benutzt, die ich auch in der MSDN gefunden habe und diese IsBadWritePtr-Funktion nie mit absicht ...
    Wie kann ich die dann aus meinem Code heraussuchen?

    Sorry für die dummen Fragen!



  • Top_se schrieb:

    Ich habe mir LOCAL_MACHINE ausgesucht, weil ich ursprünglich die Highscore auch in der Registry lagern wollte und dann sollte auf dem PC nur 1 Highsocre da sein, also dass sie Benutzer des PC`s "kämpfen" können, aber nun werde ich wohl auf CURRENT_USER switchen!

    können die user ja gerne so machen. zum beispiel als admin installieren und nur die highscore.txt für alle zum schreiben aufmachen. oder noch cooler gleich auf ner netzfreigabe spielen, damit die ganze forma eine hiscore-tabelle shared.



  • Top_se schrieb:

    Und eigentl. hab ich in dem Programm nur Funktionen benutzt, die ich auch in der MSDN gefunden habe und diese IsBadWritePtr-Funktion nie mit absicht ...
    Wie kann ich die dann aus meinem Code heraussuchen?

    schau dir deine exe mal genau an. zum beispiel mit wordpad.

    da siehste dann irgendwann

    ] InitCommonControlsEx  COMCTL32.dll  >♥Sleep KERNEL3
    2.dll  ¡ DispatchMessageA  ª☻TranslateMessage  :☺GetMessageA »☻UpdateWindow  '☻S
    howWindow  ` CreateWindowExA ↨☻RegisterClassExA  ·☺LoadCursorA »☺LoadIconA Z Def
    WindowProcA  ☺☻PostQuitMessage ý☺PeekMessageA  z DialogBoxParamA é☺MoveWindow  ÿ
     GetClientRect t☺GetWindowRect ½☺LoadImageA  n☺GetWindowLongA  Ü☺MessageBoxA *☻R
    eleaseDC ;☻SendMessageA  ◄☺GetDlgItem  Ø☻wsprintfA "☺InvalidateRect  ♀☺GetDC Æ E
    ndDialog ‼☺GetDlgItemTextA È EndPaint  ♪ BeginPaint  o☻SetScrollPos  p☻SetScroll
    Range  USER32.dll  ¥☺GetStockObject  O DeleteDC  N☻TextOutA  Í☺LineTo  Ñ☺MoveToE
    x  ■☻SetBkMode ↕ BitBlt  ♫☻SelectObject  - CreateCompatibleDC  GDI32.dll í☺RegQu
    eryValueExA  ã☺RegOpenKeyExA Ê☺RegCloseKey Î☺RegCreateKeyExA ú☺RegSetValueExA  A
    DVAPI32.dll  Ô☺GetTimeZoneInformation  »☺GetSystemTime j☺GetLocalTime  u☺GetModu
    leHandleA  ¬☺GetStartupInfoA    ☺GetCommandLineA Ú☺GetVersion  ¶ ExitProcess v D
    ebugBreak  ®☺GetStdHandle  <♥WriteFile ↓☻InterlockedDecrement  {☻OutputDebugStri
    ngA  -☺GetProcAddress  A☻LoadLibraryA  ↔☻InterlockedIncrement  s☺GetModuleFileNa
    meA  ~♥WideCharToMultiByte '☻IsBadWritePtr $☻IsBadReadPtr  ↕☻HeapValidate  h☺Get
    LastError  1 CloseHandle F♥TerminateProcess  ;☺GetCurrentProcess W♥UnhandledExce
    ptionFilter  î FreeEnvironmentStringsA ï FreeEnvironmentStringsW M☺GetEnvironmen
    tStrings O☺GetEnvironmentStringsW  ☼♥SetHandleCount  ^☺GetFileType ♠☻HeapDestroy
     ♦☻HeapCreate  ◘☻HeapFree  m♥VirtualFree Ä☻RtlUnwind Û☻SetConsoleCtrlHandler ☻☻H
    eapAlloc ♀☻HeapReAlloc j♥VirtualAlloc  !♥SetStdHandle  æ FlushFileBuffers  d☻Mul
    tiByteToWideChar O CreateFileA ý GetCPInfo ö GetACP  S☺GetOEMCP  ¯☺GetStringType
    A  ²☺GetStringTypeW  ♠♥SetFilePointer  £☻ReadFile  ý☻SetEndOfFile  3☻LCMapString
    

    klar haste das nicht alles eingebaut. aber du hast sachen aus der bibliothek benutzt. und das macht anscheinend sowas.
    zunächst mal stell die release-version ein. mir scheint, daß viel des komischen codes nur drauf geht, um gegebenenfalls nach schutzfehlern zu suchen.
    hilft das noch nicht, dann stell bei den linkeroptionen ein, daß du dlls statt static libs als runtime-libs benutzen willst. dann müßte der komische code ja in der dll stehen und vielleicht isses dann kein problem mehr.



  • Top_se schrieb:

    2., wie meinst du denn das hier:

    stell dann deine exe mal auf die release-version um

    ich hab deinen compiler nicht und kann dir nicht sagen, wie das bei dir geht.
    vielleicht steht bei den smart-icons unter dem menu irgendwo eine combo-box, in der Debug steht und die sich heftig wünsch, daß du auch mal Release reinschreibst. wenn dem so ist, mach das mal und schau dann die exe-date nochmal an.
    wenn dem nicht so ist, mußte uns verraten, welchen compiler du benutzt und dir muß jemand andrer helfen, den debug-code loszuwerden.



  • Vorausgesetzt du kompilierst auch mit deiner IDE (was ich kräftig unterlasse). Wenn du nähmlich deinen Compiler über die Konsole bedienst, gibt es diese Möglichkeit (bei den mir bekannten Compilern) nicht.

    Mfg Ominion



  • Okay, jetzt hab ich den Releaseknopp gefunden, was issn da der Unterschied?

    Also ich habe MS Visual C++ 6 und jetzt bei der Releaseverion bekomme ich 2 ganz komische Fehler, die mir nun garnichts sagen:

    --------------------Konfiguration: KniffelWinAPI - Win32 Release--------------------
    Ressourcen werden kompiliert...
    Kompilierung läuft...
    main.cpp
    Linker-Vorgang läuft...
    main.obj : error LNK2001: Nichtaufgeloestes externes Symbol __imp__InitCommonControlsEx@4
    Release/KniffelWinAPI.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    KniffelWinAPI.exe - 2 Fehler, 0 Warnung(en)

    Aber dass man in Wordpad die Funktionen sieht, die ich aufrufe is ja auch lustig ...

    Danke ihr beiden, seid mir eine riesen Hilfe!



  • Ominion schrieb:

    Vorausgesetzt du kompilierst auch mit deiner IDE (was ich kräftig unterlasse).

    in der exe steht am ende
    C:\Dokumente und Einstellungen\Udo\Eigene Dateien\Programmieren\C++\Meins!\KniffelWinAPI\Debug\KniffelWinAPI.pdb
    ich denke, wir können irgend eine version des ms developer studios unterstellen.
    und er hat den modus noch auf Debug stehen.
    und er heißt Udo.


Anmelden zum Antworten