Mehr oder weniger versteckt gibt es einige sehr interessante Bereiche in .net, so zum Beispiel der gesamte Bereich der Reflection. Nun, viele Entwickler kennen Reflection und nutzen diese in ihren Projekten. Wenige aber reizen einzelne Bereiche aus.

Ein kleines Ausreizen sind die folgenden Spielereien.

Die Grundlage

Private Sub Test()
  Dim extAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("c:\WindowsApplication2.exe")

  Dim extForm as Form = extAssembly.CreateInstance("WindowsApplication2.Form1", True)
  Me.AddOwnedForm(extForm)
  extForm.Show()

End Sub

Soweit alles klar und bekannt. Wir laden ein Assembly direkt ab der Festplatte und rufen ein Formular auf.

Namensgebung

Es ist nicht notwendig, dass unsere externen Assemblies unbedingt mit DLL oder EXE enden, wir können xbeliebige Fantasienamen nehmen - und erschweren potentiellen Hackern n bisschen die Arbeit.

  Dim extAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("c:\x.yz")

Benutze das Web

Interessant wird es schon mal, wenn wir anstelle der Festplatte einen Internetserver benutzen:

  Dim extAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("http://www.myweb.ch/myTest/WindowsApplication2.exe")

Und es funktioniert... Zu beachten ist, dass wir in einer neuen Sicherheitsstufe gelandet sind, sprich standardmässig können wir nicht einfach alles mit unserem Code tun.

Benutze eine Webseite ... Der für mich spannendste Versuch war es, eine Internetseite statt des Exes zu verwenden - und siehe, die einfachste Variante klappt schon - und schwupp eröffnen sich uns massive Möglichkeiten...

  Dim extAssembly As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("http://www.myweb.ch/myTest/CallMyExe.asp")

Der Inhalt von CallMyExe.asp ist vorderhand äusserst trivial:

<%@ Language=VBScript %>
<%response.redirect "
http://www.myweb.ch/mytest/windowsapplication2.exe"%>

Aber Ihr erkennt schon das ungeheure Potential, welches darin steckt ...

  • Wir generieren ad hoc eine URL, welche auch Sicherheitsinfos übermittelt, z.B. Keys
  • Unsere Webseite kann selbstständig diverse Sicherheitsabfragen machen
  • Wir übermitteln parametrisierte URLs und die Webseite entscheidet welcher Art Modul zurückgesendet wird
  • Letztenendes können wir die Assemblies sogar als BLOB in der Datenbank speichern und ad hoc zurückgeben, sodass unsere Verzeichnisse auf dem Webserver absolut blank sind ...

So, viel Spass beim ausprobieren

Daniel