SharpMagic.dll Read/Write/Process Memory

    • C#

      SharpMagic.dll Read/Write/Process Memory

      SharpMagic.dll


      1. Was ist die SharpMagic.dll ?

      Die SharpMagic.dll ist eine Bibliothek verschiedenster Funktionen innerhalb einer Klasse.
      Geschrieben wird sie für C#, kann natürlich aber beliebig in anderen Sprachen benutzt werden.


      1. Wer kann diese Bibliothek benutzen ?

      Sie würde für Entwickler für Bots/Hacks und alle sonstigen Anwendungen geschrieben, die Memory Read/Memory Read innerhalb von Prozessen benötigen.


      3.Funktionen

      • Open Process
      • Read Processes
      • Read Memory In Processes
      • Read Pointer
      • Read Pointer + Offsets to 7 level
      • Write Memory in Processes
      • Schreibfunktionen sind nahezu identisch den Lesefunktionen


      Dies sind noch nicht alle Funktionen, nur ein Ausschnitt. Aber jeder der sich bissl auskennt, kann diese auch der Lib entnehmen.


      Version : 1.0.2 befindet sich im Anhang.

      Aktuelle Version + Tut und Patchnodes gibts hier: SharpMagic

      Hier VirusTotal :virustotal.com/file/5d610e52c6…bbd3/analysis/1348508300/
      Dateien
      • SharpMagic.rar

        (5,57 kB, 28 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Romanthebrain“ ()

      Purm schrieb:

      sorry, dass ich deine arbeit nicht so wirklich würdige, aber was ist der vorteil z.B. BlackMagic gegenüber?


      Letztendlich sind alle Bibliotheken nur eine Dekoration.

      Die SharpMagic nimmt dir das Rechnen ab:
      Spoiler anzeigen

      C# - CSharp

      1. public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5, int pOffset6)
      2. {
      3. return (this.ReadInt(this.ReadInt(this.ReadInt(this.ReadInt(this.ReadInt(this.DllImageAddress(Module) + pOffset) + pOffset2) + pOffset3) + pOffset4) + pOffset5) + pOffset6);
      4. }

      :D :D :D :D :D

      Interessante Sachen, wie Mustersuche gibt es aber nicht:
      Spoiler anzeigen

      C# - CSharp

      1. public static extern int FindWindowByCaption(int ZeroOnly, string lpWindowName);
      2. public int ImageAddress();
      3. public int ImageAddress(int pOffset);
      4. public string MyProcessName();
      5. [DllImport("kernel32.dll")]
      6. public static extern int OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);
      7. public int Pointer(bool AddToImageAddress, int pOffset);
      8. public int Pointer(string Module, int pOffset);
      9. public int Pointer(bool AddToImageAddress, int pOffset, int pOffset2);
      10. public int Pointer(string Module, int pOffset, int pOffset2);
      11. public int Pointer(bool AddToImageAddress, int pOffset, int pOffset2, int pOffset3);
      12. public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3);
      13. public int Pointer(bool AddToImageAddress, int pOffset, int pOffset2, int pOffset3, int pOffset4);
      14. public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3, int pOffset4);
      15. public int Pointer(bool AddToImageAddress, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5);
      16. public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5);
      17. public int Pointer(bool AddToImageAddress, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5, int pOffset6);
      18. public int Pointer(string Module, int pOffset, int pOffset2, int pOffset3, int pOffset4, int pOffset5, int pOffset6);
      19. public byte ReadByte(int pOffset);
      20. public byte ReadByte(bool AddToImageAddress, int pOffset);
      21. public byte ReadByte(string Module, int pOffset);
      22. public float ReadFloat(int pOffset);
      23. public float ReadFloat(bool AddToImageAddress, int pOffset);
      24. public float ReadFloat(string Module, int pOffset);
      25. public int ReadInt(int pOffset);
      26. public int ReadInt(bool AddToImageAddress, int pOffset);
      27. public int ReadInt(string Module, int pOffset);
      28. public byte[] ReadMem(int pOffset, int pSize);
      29. public byte[] ReadMem(int pOffset, int pSize, bool AddToImageAddress);
      30. [DllImport("kernel32.dll")]
      31. public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesRead);
      32. public short ReadShort(int pOffset);
      33. public short ReadShort(bool AddToImageAddress, int pOffset);
      34. public short ReadShort(string Module, int pOffset);
      35. public string ReadStringAscii(int pOffset, int pSize);
      36. public string ReadStringAscii(bool AddToImageAddress, int pOffset, int pSize);
      37. public string ReadStringAscii(string Module, int pOffset, int pSize);
      38. public string ReadStringUnicode(int pOffset, int pSize);
      39. public string ReadStringUnicode(bool AddToImageAddress, int pOffset, int pSize);
      40. public string ReadStringUnicode(string Module, int pOffset, int pSize);
      41. public uint ReadUInt(int pOffset);
      42. public uint ReadUInt(bool AddToImageAddress, int pOffset);
      43. public uint ReadUInt(string Module, int pOffset);
      44. public bool StartProcess();
      45. [DllImport("kernel32.dll")]
      46. public static extern bool VirtualProtectEx(int hProcess, int lpAddress, int dwSize, uint flNewProtect, out uint lpflOldProtect);
      47. public void WriteByte(int pOffset, byte pBytes);
      48. public void WriteByte(bool AddToImageAddress, int pOffset, byte pBytes);
      49. public void WriteByte(string Module, int pOffset, byte pBytes);
      50. public void WriteDouble(int pOffset, double pBytes);
      51. public void WriteDouble(bool AddToImageAddress, int pOffset, double pBytes);
      52. public void WriteDouble(string Module, int pOffset, double pBytes);
      53. public void WriteFloat(int pOffset, float pBytes);
      54. public void WriteFloat(bool AddToImageAddress, int pOffset, float pBytes);
      55. public void WriteFloat(string Module, int pOffset, float pBytes);
      56. public void WriteInt(int pOffset, int pBytes);
      57. public void WriteInt(bool AddToImageAddress, int pOffset, int pBytes);
      58. public void WriteInt(string Module, int pOffset, int pBytes);
      59. public void WriteMem(int pOffset, byte[] pBytes);
      60. public void WriteMem(int pOffset, byte[] pBytes, bool AddToImageAddress);
      61. [DllImport("kernel32.dll")]
      62. public static extern bool WriteProcessMemory(int hProcess, int lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesWritten);
      63. public void WriteShort(int pOffset, short pBytes);
      64. public void WriteShort(bool AddToImageAddress, int pOffset, short pBytes);
      65. public void WriteShort(string Module, int pOffset, short pBytes);
      66. public void WriteStringAscii(int pOffset, string pBytes);
      67. public void WriteStringAscii(bool AddToImageAddress, int pOffset, string pBytes);
      68. public void WriteStringAscii(string Module, int pOffset, string pBytes);
      69. public void WriteStringUnicode(int pOffset, string pBytes);
      70. public void WriteStringUnicode(bool AddToImageAddress, int pOffset, string pBytes);
      71. public void WriteStringUnicode(string Module, int pOffset, string pBytes);
      72. public void WriteUInt(int pOffset, uint pBytes);
      73. public void WriteUInt(bool AddToImageAddress, int pOffset, uint pBytes);
      74. public void WriteUInt(string Module, int pOffset, uint pBytes);


      Damit du dir nicht deine Finger wund schreibst:

      C# - CSharp

      1. public int Pointer(string Module, params int[] Offsets)
      2. {
      3. int tmp = this.DllImageAddress(Module);
      4. foreach (int Offset in Offsets)
      5. {
      6. tmp = this.ReadInt(tmp + Offset)
      7. }
      8. return tmp;
      9. }

      Damit kann man (fast) unbegrenzt viele Offsets angeben und du musst nicht immer die Methoden überladen.

      Edit: Fehler fängst du aber nicht (try ... catch ...) ab?!
      Gesendet von meiner Schreibmaschine mittels Brieftaube.
      wieschoo.comBotSuite.NET

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Derpy Hooves“ ()

      Ist ja noch die erste Version. Aber ich werde die Pattern auf jeden Fall mit rein nehmen und dann ist die Lib top. :) naja fast hehe. Hab für die Pattern ne seperate Lib. Denke aber, dass ich diese in die SharpMagic aufnehme. Fehler werden momentan einfach mit 0 ausgegeben. vielleicht könnten wir unsere Libs ja als Koproject laufen lassen. Also keine Fusion aber somit keine Überschneidungen.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Romanthebrain“ ()

      Nein , ich hab mehrere Quellen als Vorbild genommen. Darunter auch die Blackmagic , die corelib und seine. Diese lib habe ich vorher für bots benutzt. Sie lief parallel zu denPatterns, Die Funktion ist in meiner Lib schon drin, nur noch auskommentiert. Auch hab ich in der Lib fehler festgestellt, und die Methoden neu geschrieben, da seine anscheinend nicht mehr mit framework 4 funktionierten, wie du auch in diesem link entnehmen kannst. Ich lade sowieso die updatete hoch.
      Hab darin deine Pointer + Offset Methode genutzt....

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Romanthebrain“ ()

      Chaya_ schrieb:



      Mein Scan Hash : ed91174d99d3679b8811ffa1e063e09818a302c278e7fe57531008a9d826fe0b
      Angegebener Hash : 5d610e52c60f42088a484ae6ce5e32092ef537559dbe31636a6202184557bbd3

      virustotal.com/de/file/ed91174…fe0b/analysis/1488727031/


      nach jedem dll update ändert sich auch der hashwert.

      der virustotal vom thread ist 4 jahre alt.

      da die antiviruse sowieso alle behindert sind und dieser thread von einem admin ist kann man schon denken das dass hier legit ist.