Go To Post
Ich möchte ein Teil eines Programms modifizieren um so die Key Abfrage zu umgehen. Habe schon mehrere Stunden rumprobiert und rumgesucht aber hab es einfach nicht hinbekommen.
Das Problem ist wahrscheinlich dass meine Programmiererfahrungen einfach nicht dafür ausreichen
- habe etwas C++ , C# und Ada kenntnisse...
So sieht jedenfalls das Programm aus wenn man es ausführt:

Oben muss der "License Key:" eingegeben werden.
Unter "Path" kann eine bestimmte route ausgewählt werden.
Und wenn man auf "Start" klickt sollte das Programm die Route dann ausführen.
Eine Route kann man sich als großes Makro vorstellen, in dem Mausklicks / Mausbewegungen gespeichert sind.
Wenn man also auf Start klickt wird der Key überprüft, den man eingegeben hat. Ziemlich wahrscheinlich verbindet sich das Programm dazu mit einem Server, denn wenn man die Internetverbindung kappt kommt diese Fehlermeldung:

Bei aktivem Internet aber falschem Key kommt hingegen diese Fehlermeldung:

Das merkwürdige dabei ist aber, dass ich den String „Invalid or inactive license key.“ Nirgends wo im Programmcode finden kann! Ich erkenne also nicht wo im Code der Key überprüft wird und wo, bzw. wie diese Meldung ersteht…
Ich benutze folgende Programme zum Decompilen / Debuggen der .exe:
Dile
Hex-Rays IDA
OllyDbg
Reflector
ILSpy
Dis# .NET decompiler
Programm benutzt .NET Framework 3.5
Allerdings kann ich den Decompilierten Code nicht 1:1 übernehmen… So zum Beispiel spuckt mir ILSpy und Reflector zwei unterschiedliche Teile an Code aus – Was das Recompilieren nach einer erfolgreichen „modifizierung“ des Programmes nur noch erschwert… Bsp. hier:

Hier der Code des StartButton:
TEXT Code:
private void StartButton_Click(object sender, RoutedEventArgs e)
{
try
{
if (this.Overlay != null)
{
this.Overlay.Close();
}
ShipAutomation.LicenseKey = this.LicenseTextBox.Text;
if (ShipAutomation.IsActive || !(this.RecordingCheckBox.IsChecked == false) || ShipAutomation.GetPath())
{
if (this.RecordingCheckBox.IsChecked == true && !ShipAutomation.IsActive)
{
if (System.Windows.MessageBox.Show("Are you sure you want to start a new recording?", "Path Recording", MessageBoxButton.YesNo) == MessageBoxResult.No)
{
return;
}
}
ShipAutomation.IsActive = !ShipAutomation.IsActive;
if (ShipAutomation.IsActive)
{
this.StartButton.Content = "Stop";
if (this.RecordingCheckBox.IsChecked == true)
{
if (this.MouseListener == null)
{
this.MouseListener = new MouseHookListener(new GlobalHooker());
this.MouseListener.Enabled = true;
this.MouseListener.MouseDownExt += new EventHandler<MouseEventExtArgs>(this.MouseListener_MouseDownExt);
}
Threads.LaunchThread(new Action(ShipRecorder.StartRecording));
}
else
{
if (ShipAutomation.IsInhouse())
{
this.Overlay = new Overlay();
MainWindow.ToTransparentWindow(this.Overlay);
this.Overlay.Show();
}
try
{
string value = File.ReadAllText(Environment.CurrentDirectory + "\\Paths\\" + ShipAutomation.CurrentRoute.ToString() + ".json");
ShipAutomation.CoordinateList = JsonConvert.DeserializeObject<MouseCoordinateList>(value);
}
catch
{
this.StartButton.Content = "Start";
ShipAutomation.IsActive = !ShipAutomation.IsActive;
System.Windows.Forms.MessageBox.Show("You have not recorded a path for this ship route yet.");
return;
}
Threads.LaunchThread(new Action(ShipPlayback.StartPlayback));
}
}
else
{
this.StartButton.Content = "Start";
}
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
}
Wenn also jemand mal etwas Zeit und lange weile hat bitte mal anschauen - macht teilweise richtig spaß Code von jemand anders zu verstehen zu suchen
Das Ding ist - ich bin nur popeliger Wirtschaftsinformatiker im 1. Semester – wenn also hier jemand Ahnung hat bitte melden ^^
Hier das Programm:
Only registered and activated users can see links.Virustotal:
Only registered and activated users can see links.