OldSchoolHack

Register / Login English

User Search: Lost

Search-Information
Lost
Threads
Thread Forum Last Post Posts Views
icon

Go to first new post Hilfe benötigt - Reverse Engineering Posted on: Fri 13. Jan 2012, 10:38

Lost

preview Preview

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:
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: Only registered and activated users can see links.
Virustotal:Only registered and activated users can see links.
VB, C/C++, Delphi, etc

Mon 16. Jan 2012, 10:21

by k1u Go to last post
3 835
icon

Go to first new post Hilfe benötigt - Reverse Engineering Posted on: Fri 13. Jan 2012, 10:38

Lost

preview Preview

Go To Post

wow! ich versuchs gleich mal - danke!

--------------------------------------

Edit: Also bin jetzt schon bestimmt ne Stunde dran am rumfummeln. Das Ding ist ja, dass alles auf IL (MSIL) ist... Ich bin mir jetzt aber sicher die richtige Stelle gefunden zu haben (hab nen Teil des codes nachgeschrieben auf C# - einmal mit return false und einmal mit return true um mir auch absolut sicher zu sein...) es muss ja "ldc.i4.0" auf "ldc.i4.1" geändert werden - und zwar befindet sich die Stelle zwischen


CPP Code:
  1.  
  2. 180 ldstr You are using an outdated version of bot. Please go to www.gamebotter.com and download the latest version.
  3. .
  4. ...
  5. .
  6. 276 call System.Void MetaLibrary.Utility.Debug.DebugProcessor::Write(System.String)


Jetzt speicher ich die patched.exe und führe sie aus.

Ich trage einen fake key ein (12345) und klick auf start - die meldung kommt das der Key nicht stimmen würde aber das ist ja auch ok - soll ja danach weitergehen als ob der key doch stimmen würde...

Wenn ich dann also auf OK klick zeigt er mir meinen eingegebenen code als große pinke ziffern auf meinem Bildschirm an und 2 sec später kommt eine fehlermeldung "...hat ein problem festgestell bla..."

Wenn ich die meldung nun debugge zeigt er mir folgendes an:
ImageConverter cannot convert from (null).


? Hab ich etwas falsch gemacht ?
Das Programm sollte doch eigentlich nun funktionieren...


Da es ja vielleicht doch nicht die richtige Stelle war an der ich das "ldc.i4.0" geändert hatte, hab ich auch mal das andere "ldc.i4.0", das sich in der Nähe befindet geändert - funkt aber auch dort nicht...
VB, C/C++, Delphi, etc

Mon 16. Jan 2012, 10:21

by k1u Go to last post
3 835
Downloads
No downloads found.