Vielen Dank erstmal für die vielen Antworten und Tips.
Abt hat Recht, ich will weniger mich schützen eher den User.
Uglify hab ich kurz angeschaut, hänge aber noch bisl da Abhängigkeiten fehlen. Wenn ich es zum laufen bekomme dann Committe ich es mal.
Denke da stimmt mit IronJS was nicht.
Leider habe ich eben keine andere Möglichkeit als die CS-Datei im Hauptprogramm (welches von einem dritten ist) zu laden.
Es gibt kein Assembly.
Die *.cs-Dateien werden an Kunden weitergegeben.
Ich verspreche mir ein "bisschen mehr" Schutz dadurch, dass Änderungen nicht so einfach gemacht werden können.
Mir ist bekannt dass es keinen 100% Schutz gibt. Dennoch möchte ich es jemand schwer machen, der den Code verändern möchte.
Bezüglich Referenzen:
Hier gibt es kein Problem, da alles wie beschrieben in einer Datei vorhanden sein muss.
Es würde mir reichen wenn alle Variablen und Methoden umbenannt werden, aber wie gesagt, können die aufgelistet Obfuscator die nur auf DLLs bzw. EXE.
Hallo Zusammen,
ich suche einen Obfuscator welcher die Sourcedateien verändert.
Ich habe schon einige getestet (List of obfuscators for .NET), leider gehen diese davon aus, dass eine DLL oder EXE geschützt wird.
Hintergrund:
Die Dateien werden in einem Programm als API-Erweiterungen geladen. Hier ist es nur möglich eine *.cs-Datei zu laden.
Ich habe auch schon getestet eine DLL zu kompilieren und diese dann zu obfuscaten, danach das Decompilat zu laden, aber hier klappt auch was nicht, da in dotPeek einige Issues angezeigt werden.
Hat jemand Tipps bzw. einen möglich Workflow?
Danke im Voraus.
Hallo Zusammen,
ich schleppe das Problem nun schon bei zwei Projekten mit und habe noch keine Lösung, darum muss ich nach Hilfe bitten.
Anbei ein Projekt welches mir mehrere Fehler / Probleme aufzeigt. Meiner Meinung nach hängen Sie aber alle Zusammen.
Ich habe ein WPF-Projekt in dem ich ein UserControl einbinde, welches in einem anderem Projekt in der Projektmappe liegt.
Binde ich dieses UC ein, bekomme den Fehler dass dieses nicht gefunden wurde. Komischerweise tritt dieser Fehler nur sporadisch auf. Der Designer zeigt keine Vorschau, aber baue ich es, startet es mit erwartetem UI.
Die Einbindung ist:
xmlns:errorList="clr-namespace:ErrorList;assembly=ErrorList"
...
<errorList:ErrorListControl x:Name="errors"/>
Der zweite Fehler, welcher immer erscheint ist eine Ressource (Converter), welche ich z.B. in der App.xaml hinterlege:
<Application.Resources>
<demoResourceProblem:ValueToBackgroundColorConverter x:Key="valueToBackground" />
</Application.Resources>
Bei der Verwendung (DatagridColumn soll farbig anzeigen ob die Anzahl positiv/negativ ist):
<Setter Property="Background" Value="{Binding Count, Converter={StaticResource valueToBackground}}" />
... erhalte ich folgende Fehler:> Fehlermeldung:
Fehler 1 Der Name "ValueToBackgroundColorConverter" ist im Namespace "clr-namespace:DemoResourceProblem" nicht vorhanden. \...\DemoResourceProblem\App.xaml 7 9 DemoResourceProblem
Fehler 2 Ein Objekt vom Typ "System.Object" kann auf eine Eigenschaft, die den Typ "System.Windows.Data.IValueConverter" erwartet, nicht angewendet werden. \...\DemoResourceProblem\App.xaml 17 67 DemoResourceProblem
Fehler 3 Der Name "ValueToBackgroundColorConverter" ist im Namespace "clr-namespace:DemoResourceProblem" nicht vorhanden. \...\DemoResourceProblem\App.xaml 1 1 DemoResourceProblem
Verzweifle hier ein bisschen. Habe natürlich nach diesen Verhalten gegoogelt, und nur die Tips gelesen, das Zielsystem / Framework umzustellen:
Namespace not found
xmlns assembly Erweiterung
Vielen Dank schon im Voraus!
Ich habe jetzt einfach mal die PHP-Variante getestet da es wahrscheinlicher ist dass diese performanter ist...
gebe die Pfade direkt aus und hole mir den Inhalt in C#
function getDirectory( $path = '.', $level = 0 ){
$ignore = array( 'cgi-bin', '.', '..' );
// Directories to ignore when listing output. Many hosts
// will deny PHP access to the cgi-bin.
$dh = @opendir( $path );
// Open the directory to the handle $dh
while( false !== ( $file = readdir( $dh ) ) ){
// Loop through the directory
if( !in_array( $file, $ignore ) ){
// Check that this file is not to be ignored
$spaces = str_repeat( ' ', ( $level * 4 ) );
// Just to add spacing to the list, to better
// show the directory tree.
if( is_dir( "$path/$file" ) ){
// Its a directory, so we need to keep reading down...
// echo "<strong>$spaces $file</strong><br />";
getDirectory( "$path/$file", ($level+1) );
// Re-call this same function but on a new directory.
// this is what makes function recursive.
} else {
$link = str_replace("./files/","http://www.xxx.de/files/",$path);
$link = "$link/$file";
echo "$link<br/>";
// Just print out the filename
}
}
}
closedir( $dh );
// Close the directory handle
}
Wie gesagt bin ich in php garnicht fit ... habe bestehende lösung angepasst.
Für Anregungen bzgl. php-code bin ich sehr offen!
DANKE
Gruß
cyn
Hallo zusammen,
ich bräuchte kurz eure Meinung 😃
Wir müssen auf unserem FTP-Server öfters einen Prüflauf ausführen welche bzw. ob Dateien vorhanden sind.
Ich prüfe zuerst ob die gesuchte Datei vorhanden ist:
public bool FTPFileExists(string FilePath)
{
FtpWebRequest req = (FtpWebRequest)WebRequest.Create(sFtpUrl + FilePath);
req.Credentials = new NetworkCredential(sFtpUser, sFtpPassword);
req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
try
{
FtpWebResponse resp = (FtpWebResponse)req.GetResponse();
resp.Close();
return true; // File exist
}
catch
{
return false; // File doesn’t exist
}
}
... aber das dauert je nach Tagesform unserer Internetleitung eine weile.
(Ich habe keine Möglichkeit gefunden nicht jedesmal für eine Datei einen neuen Request zu machen. Vorschläge wie ich dies beschleunigen kann?)
Nun möchte ich generell vor dem Start der Überprüfung ein Filelisting erstellen welche alle Dateien in einem Ordner (Unterordner einbezogen) erstellt.
Mir ist die Listingfunktion bekannt, habe aber Angst dass ich hier an perfomance nicht viel gewinne.
Eine fertige Funktion / Methode habe ich leider nicht gefunden um dies zu testen. Das zu programmieren bekomme ich schon hin.
Nun zu meiner konkreten Frage:
Da auf dem Server auch PHP läuft könnte ich dies auch als PHP-Script machen und beim Aufruf der php-Datei ein Listing Ausgeben. Leider bin ich hier nicht so fit.
**- soll ich dies in php realisieren und in meiner c#-anwendung einlesen?
Es kann sein dass paar mal im Jahr eine Überprüfung mit 5000 Dateien stattfindet. Macht das was aus wenn ich 5000x auf den FTP per request "einprügle"? Nicht das dieser meint ich mach ne "attacke" 😃
Vielen Dank für eure Meinung
Gruß
cyn
Da der Code nicht mehr gepostet wurde, stellt sich für mich noch die Frage wie der Prozess angezeigt werden kann.
Soviel ich verstanden habe (MSDN) muss ich mit ShowWindow die Form aufrufen. Leider ist dies aber nicht verfügbar (steckt das nicht in der user32 ?!).
Anbei mein Code zum Aufrufen des Prozesses:
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr SetParent(IntPtr child, IntPtr newParent);
Process proc = new Process();
private void Form1_Load(object sender, EventArgs e)
{
proc.StartInfo.FileName = FILENAME;
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForInputIdle();
IntPtr processWindowHandle = proc.MainWindowHandle;
SetParent(processWindowHandle, this.Handle);
ShowWindow(SW_SHOWMAXIMIZED, 3); //FEHLER
}
Danke schon mal 😃
Gruß
cyn
Vielen Dank. Weiß nicht warum ich das nicht gefunden habe. Keywords waren richtig 😕
(Ironie ist aber nicht sehr nett)
Grüße
Vielen Dank erstmal.
Versuche die Woche den Code zu übersetzen, bin aber nicht so fit in VB.
Bitte Thema noch offen lassen!
Danke!
Gruß
cyn