Seite 2 von 4

Verfasst: 15.08.2009 11:11
von Raphi
cxAlex hat geschrieben:Warum willst du das machen?
Imprizip will ich ein programm basteln, dass es ermöglicht mit 1-2 klicks
ein Netzwerk(über lan oder Drahtlos) herzustellen.
Denn wenn man übber netzwerk spiele spilen möchte stört meistens die Firewall. /:->

Verfasst: 15.08.2009 11:15
von cxAlex
Für das reicht es dann aber auch die Anwendung freizugeben:

http://www.purebasic.fr/german/viewtopi ... s+firewall

Hier mal der Code EnableExplicit - freundlich und so wie du ihn in deiner App verwenden solltest:

Code: Alles auswählen

;add your app to firewall - AuthorizedApplication (xp/sp2)

EnableExplicit

Interface INetFwAuthorizedApplication Extends IDispatch
  get_Name(a)
  put_Name(a)
  get_ProcessImageFileName(a)
  put_ProcessImageFileName(a)
  get_IpVersion(a)
  put_IpVersion(a)
  get_Scope(a)
  put_Scope(a)
  get_RemoteAddresses(a)
  put_RemoteAddresses(a)
  get_Enabled(a)
  put_Enabled(a)
EndInterface

Interface INetFwAuthorizedApplications Extends IDispatch
  get_Count(a)
  Add(a)
  Remove(a)
  Item(a, b)
  get__NewEnum(a)
EndInterface

Interface INetFwProfile Extends IDispatch
  get_Type(a)
  get_FirewallEnabled(a)
  put_FirewallEnabled(a)
  get_ExceptionsNotAllowed(a)
  put_ExceptionsNotAllowed(a)
  get_NotificationsDisabled(a)
  put_NotificationsDisabled(a)
  get_UnicastResponsesToMulticastBroadcastDisabled(a)
  put_UnicastResponsesToMulticastBroadcastDisabled(a)
  get_RemoteAdminSettings(a)
  get_IcmpSettings(a)
  get_GloballyOpenPorts(a)
  get_Services(a)
  get_AuthorizedApplications(a)
EndInterface

Interface INetFwPolicy Extends IDispatch
  get_CurrentProfile(a)
  GetProfileByType(a, b)
EndInterface

Interface INetFwMgr Extends IDispatch
  get_LocalPolicy(a)
  get_CurrentProfileType(a)
  RestoreDefaults()
  IsPortAllowed(a, b, c, d, e, f, g)
  IsIcmpTypeAllowed(a, b, c, d, e)
EndInterface

Global a2u_memtarget

Procedure.l Ansi2Uni(ansi.s)
  Shared a2u_memtarget
  If a2u_memtarget : CoTaskMemFree_(a2u_memtarget) : EndIf
  SHStrDup_(@ansi, @a2u_memtarget)
  ProcedureReturn a2u_memtarget
EndProcedure

Procedure free_app_firewall(name.s, app.s)
  Protected ret, INetMgr.INetFwMgr, INetPolicy.INetFwPolicy
  Protected colApplications.INetFwAuthorizedApplications
  Protected object.INetFwAuthorizedApplication
  Protected objPolicy.INetFwProfile
  CoInitialize_(0)
  If CoCreateInstance_(?CLSID_NetFwMgr, 0, 1, ?IID_INetFwMgr, @INetMgr) = 0
    INetMgr\get_LocalPolicy(@INetPolicy)
    INetPolicy\get_CurrentProfile(@objPolicy)
    If CoCreateInstance_(?CLSID_FwAuthorizedApplication, 0, 1, ?IID_INetFwAuthorizedApplication, @object) = #ERROR_SUCCESS
      object\put_Name(Ansi2Uni(name))
      object\put_IPVersion(2)
      object\put_ProcessImageFileName(Ansi2Uni(app))
      object\put_RemoteAddresses(Ansi2Uni("*"))
      object\put_Scope(0)
      object\put_Enabled(#True)
    EndIf
    objPolicy\get_AuthorizedApplications(@colApplications)
    If colApplications\add(object) = #ERROR_SUCCESS
      ret = 1
    EndIf
  EndIf
  CoUninitialize_()
  
  ProcedureReturn ret
  
EndProcedure

DataSection
  CLSID_NetFwMgr:
  Data.l $304CE942
  Data.w $6E39, $40D8
  Data.b $94, $3A, $B9, $13, $C4, $0C, $9C, $D4
  
  IID_INetFwMgr:
  Data.l $F7898AF5
  Data.w $CAC4, $4632
  Data.b $A2, $EC, $DA, $06, $E5, $11, $1A, $F2
  
  CLSID_FwAuthorizedApplication:
  Data.l $EC9846B3
  Data.w $2762, $4A6B
  Data.b $A2, $14, $6A, $CB, $60, $34, $62, $D2
  
  IID_INetFwAuthorizedApplication:
  Data.l $B5E64FFA
  Data.w $C2C5, $444E
  Data.b $A3, $01, $FB, $5E, $00, $01, $80, $50
EndDataSection




Debug free_app_firewall("MyGame", ProgramFilename())

Verfasst: 15.08.2009 14:28
von Joel
Also so unnormal ist das gar nicht. Selbst Programm wie Skype oder ICQ machen Windows XP Firewallhacking sehr gerne ohne Hinweis: :D

Verfasst: 15.08.2009 18:55
von NicknameFJ
Joel hat geschrieben:Also so unnormal ist das gar nicht. Selbst Programm wie Skype oder ICQ machen Windows XP Firewallhacking sehr gerne ohne Hinweis: :D

Was aber dennoch nicht der Gute Ton ist.

Solche Sachen macht man nur mit ausdrücklicher Zustimmung des Nutzers.

Grüße

NicknameFJ

Verfasst: 17.08.2009 21:31
von Raphi
ich hab jetzt den code übernommen complimirt und abgespielt.
Jetzt hat sich ein fenster vom debugger göffnet mit Kopiern, Speichern, Löschen und anzeigen ???

Hat das jetzt was gebracht oder mus ich noch was umstellen? /:->

Verfasst: 18.08.2009 19:35
von Raphi
Was muss ich jetzt tun damit ich das Freigebe was ich will?

Verfasst: 18.08.2009 19:46
von DarkDragon
Raphi hat geschrieben:Was muss ich jetzt tun damit ich das Freigebe was ich will?
Schau dir doch mal die letzte Zeile an!

Code: Alles auswählen

Debug free_app_firewall("MyGame", ProgramFilename())
Das debuggt ob das eintragen deiner Anwendung mit dem Namen "MyGame" mit der dazugehörigen Datei "ProgramFilename()" in die Firewall erfolgreich war.

Verfasst: 18.08.2009 19:58
von Raphi
und was bedeutet dann dieses speicher usw. beim debuger

Und hat das bei einem aufruf automatisch für immer das freigegeben?

Verfasst: 18.08.2009 20:15
von DarkDragon
Raphi hat geschrieben:und was bedeutet dann dieses speicher usw. beim debuger

Und hat das bei einem aufruf automatisch für immer das freigegeben?
1. Das ist der PureBasic Debugger. Damit kannst du den Text der unten steht ...
  • ... in eine Datei speichern
  • ... in die Zwischenablage kopieren
  • ... löschen
Probiers doch das nächste mal einfach aus.

Debug "Hallo Welt!" gibt "Hallo Welt!" auf diesem Fenster aus.

Schau halt mal in deine Firewalleinstellungen, da wird jetzt dein Programm als Ausnahme drinstehen ;-) . Solange, bis du es von Hand daraus entfernst.

Verfasst: 18.08.2009 20:16
von Raphi
Und was bringt das?