OldSchoolHack

Registrieren / Anmelden Deutsch

Hilfe benötigt - Reverse Engineering

icon Thema: Hilfe benötigt - Reverse Engineering

Anmeldungsdatum: Mai 2009

Beiträge: 2

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:
http://img714.imageshack.us/img714/4791/botss.jpg

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:
http://img820.imageshack.us/img820/8079/bot3mi.jpg

Bei aktivem Internet aber falschem Key kommt hingegen diese Fehlermeldung:
http://img809.imageshack.us/img809/9881/bot2.jpg

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:
http://img585.imageshack.us/img585/6886/bot4.jpg


Hier der Code des StartButton:
TEXT Code:
  1. private void StartButton_Click(object sender, RoutedEventArgs e)
  2. {
  3. try
  4. {
  5. if (this.Overlay != null)
  6. {
  7. this.Overlay.Close();
  8. }
  9. ShipAutomation.LicenseKey = this.LicenseTextBox.Text;
  10. if (ShipAutomation.IsActive || !(this.RecordingCheckBox.IsChecked == false) || ShipAutomation.GetPath())
  11. {
  12. if (this.RecordingCheckBox.IsChecked == true && !ShipAutomation.IsActive)
  13. {
  14. if (System.Windows.MessageBox.Show("Are you sure you want to start a new recording?", "Path Recording", MessageBoxButton.YesNo) == MessageBoxResult.No)
  15. {
  16. return;
  17. }
  18. }
  19. ShipAutomation.IsActive = !ShipAutomation.IsActive;
  20. if (ShipAutomation.IsActive)
  21. {
  22. this.StartButton.Content = "Stop";
  23. if (this.RecordingCheckBox.IsChecked == true)
  24. {
  25. if (this.MouseListener == null)
  26. {
  27. this.MouseListener = new MouseHookListener(new GlobalHooker());
  28. this.MouseListener.Enabled = true;
  29. this.MouseListener.MouseDownExt += new EventHandler<MouseEventExtArgs>(this.MouseListener_MouseDownExt);
  30. }
  31. Threads.LaunchThread(new Action(ShipRecorder.StartRecording));
  32. }
  33. else
  34. {
  35. if (ShipAutomation.IsInhouse())
  36. {
  37. this.Overlay = new Overlay();
  38. MainWindow.ToTransparentWindow(this.Overlay);
  39. this.Overlay.Show();
  40. }
  41. try
  42. {
  43. string value = File.ReadAllText(Environment.CurrentDirectory + "\\Paths\\" + ShipAutomation.CurrentRoute.ToString() + ".json");
  44. ShipAutomation.CoordinateList = JsonConvert.DeserializeObject<MouseCoordinateList>(value);
  45. }
  46. catch
  47. {
  48. this.StartButton.Content = "Start";
  49. ShipAutomation.IsActive = !ShipAutomation.IsActive;
  50. System.Windows.Forms.MessageBox.Show("You have not recorded a path for this ship route yet.");
  51. return;
  52. }
  53. Threads.LaunchThread(new Action(ShipPlayback.StartPlayback));
  54. }
  55. }
  56. else
  57. {
  58. this.StartButton.Content = "Start";
  59. }
  60. }
  61. }
  62. catch (Exception ex)
  63. {
  64. System.Windows.Forms.MessageBox.Show(ex.ToString());
  65. }
  66. }


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: Um Links zu sehen, musst du dich registrieren
Virustotal:Um Links zu sehen, musst du dich registrieren