Advertisement
BaSs_HaXoR

[4.4]PS3Lib.CCAPI.cs SOURCE

Sep 16th, 2014
855
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 20.53 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Windows.Forms;
  6. namespace PS3Lib
  7. {
  8.     public class CCAPI
  9.     {
  10.         public enum BuzzerMode
  11.         {
  12.             Continuous,
  13.             Single,
  14.             Double
  15.         }
  16.         private class CCAPIGlobalPointer
  17.         {
  18.             private IntPtr _intPtr = IntPtr.Zero;
  19.             public CCAPIGlobalPointer(IntPtr intPtr)
  20.             {
  21.                 this._intPtr = intPtr;
  22.             }
  23.             ~CCAPIGlobalPointer()
  24.             {
  25.                 if (this._intPtr != IntPtr.Zero)
  26.                 {
  27.                     Marshal.FreeHGlobal(this._intPtr);
  28.                 }
  29.             }
  30.             public IntPtr GetPtr()
  31.             {
  32.                 return this._intPtr;
  33.             }
  34.         }
  35.         public class ConsoleInfo
  36.         {
  37.             public string Ip;
  38.             public string Name;
  39.         }
  40.         public enum ConsoleType
  41.         {
  42.             CEX = 1,
  43.             DEX,
  44.             TOOL
  45.         }
  46.         public enum LedColor
  47.         {
  48.             Green = 1,
  49.             Red
  50.         }
  51.         public enum LedMode
  52.         {
  53.             Off,
  54.             On,
  55.             Blink
  56.         }
  57.         public enum NotifyIcon
  58.         {
  59.             INFO,
  60.             CAUTION,
  61.             FRIEND,
  62.             SLIDER,
  63.             WRONGWAY,
  64.             DIALOG,
  65.             DIALOGSHADOW,
  66.             TEXT,
  67.             POINTER,
  68.             GRAB,
  69.             HAND,
  70.             PEN,
  71.             FINGER,
  72.             ARROW,
  73.             ARROWRIGHT,
  74.             PROGRESS
  75.         }
  76.         public enum ProcessType
  77.         {
  78.             VSH,
  79.             SYS_AGENT,
  80.             CURRENTGAME
  81.         }
  82.         public enum RebootFlags
  83.         {
  84.             HardReboot = 3,
  85.             ShutDown = 1,
  86.             SoftReboot
  87.         }
  88.         private class System
  89.         {
  90.             public static int connectionID = -1;
  91.             public static uint processID = 0u;
  92.             public static uint[] processIDs;
  93.         }
  94.         public class TargetInfo
  95.         {
  96.             public int CCAPI;
  97.             public int ConsoleType;
  98.             public int Firmware;
  99.             public ulong SysTable;
  100.             public int TempCell;
  101.             public int TempRSX;
  102.         }
  103.         private CCAPI.TargetInfo pInfo = new CCAPI.TargetInfo();
  104.         public Extension Extension
  105.         {
  106.             get
  107.             {
  108.                 return new Extension(SelectAPI.ControlConsole);
  109.             }
  110.         }
  111.         public CCAPI()
  112.         {
  113.             if (this.GetDllVersion() < 250)
  114.             {
  115.             }
  116.         }
  117.         public string BaSs_HaXoRwazHere()
  118.         {
  119.             string text = "Sup bro. Fancy meeting you here! ;p";
  120.             return MessageBox.Show(string.Concat(new string[]
  121.             {
  122.                 text,
  123.                 Environment.NewLine,
  124.                 "Go check out my youtube channel :D",
  125.                 Environment.NewLine,
  126.                 "www.youtube.com/user/CODNoobFriendly"
  127.             })).ToString();
  128.         }
  129.         private bool IsValidHexString(IEnumerable<char> hexString)
  130.         {
  131.             return (
  132.                 from currentCharacter in hexString
  133.                 select (currentCharacter >= '0' && currentCharacter <= '9') || (currentCharacter >= 'a' && currentCharacter <= 'f') || (currentCharacter >= 'A' && currentCharacter <= 'F')).All((bool isHexCharacter) => isHexCharacter);
  134.         }
  135.         private byte[] HexStringToByteArray(string hex)
  136.         {
  137.             return (
  138.                 from x in Enumerable.Range(0, hex.Length)
  139.                 where x % 2 == 0
  140.                 select Convert.ToByte(hex.Substring(x, 2), 16)).ToArray<byte>();
  141.         }
  142.         public void SetPSID(string PSID)
  143.         {
  144.             if (this.IsValidHexString(PSID) && PSID.Length == 32)
  145.             {
  146.                 byte[] buffer = this.HexStringToByteArray(PSID);
  147.                 this.SetLv2Memory(9223372036859580196uL, buffer);
  148.             }
  149.             else
  150.             {
  151.                 MessageBox.Show("Check Your PSID. Wrong Length or Hex Chars.");
  152.             }
  153.         }
  154.         public string GetConsoleID()
  155.         {
  156.             byte[] array = new byte[16];
  157.             this.GetLv2Memory(9223372036858981040uL, array);
  158.             return BitConverter.ToString(array).Replace("-", " ");
  159.         }
  160.         [DllImport("CCAPI2.dll", CallingConvention = CallingConvention.Cdecl)]
  161.         private static extern int getLv1Memory(int connectionId, ulong offset, uint size, byte[] buffOut);
  162.         public int GetLv1Memory(uint offset, byte[] buffer)
  163.         {
  164.             return CCAPI.getLv1Memory(CCAPI.System.connectionID, (ulong)offset, (uint)buffer.Length, buffer);
  165.         }
  166.         public int GetLv1Memory(ulong offset, byte[] buffer)
  167.         {
  168.             return CCAPI.getLv1Memory(CCAPI.System.connectionID, offset, (uint)buffer.Length, buffer);
  169.         }
  170.         [DllImport("CCAPI2.dll", CallingConvention = CallingConvention.Cdecl)]
  171.         private static extern int getLv2Memory(int connectionId, ulong offset, uint size, byte[] buffOut);
  172.         public int GetLv2Memory(ulong offset, byte[] buffer)
  173.         {
  174.             return CCAPI.getLv2Memory(CCAPI.System.connectionID, offset, (uint)buffer.Length, buffer);
  175.         }
  176.         [DllImport("CCAPI2.dll", CallingConvention = CallingConvention.Cdecl)]
  177.         private static extern int setLv1Memory(int connectionId, ulong offset, uint size, byte[] buffIn);
  178.         public int SetLv1Memory(uint offset, byte[] buffer)
  179.         {
  180.             return CCAPI.setLv1Memory(CCAPI.System.connectionID, (ulong)offset, (uint)buffer.Length, buffer);
  181.         }
  182.         public int SetLv1Memory(ulong offset, byte[] buffer)
  183.         {
  184.             return CCAPI.setLv1Memory(CCAPI.System.connectionID, offset, (uint)buffer.Length, buffer);
  185.         }
  186.         [DllImport("CCAPI2.dll", CallingConvention = CallingConvention.Cdecl)]
  187.         private static extern int setLv2Memory(int connectionId, ulong offset, uint size, byte[] buffIn);
  188.         public int SetLv2Memory(ulong offset, byte[] buffer)
  189.         {
  190.             return CCAPI.setLv2Memory(CCAPI.System.connectionID, offset, (uint)buffer.Length, buffer);
  191.         }
  192.         public string GetPSID()
  193.         {
  194.             byte[] array = new byte[16];
  195.             this.GetLv2Memory(9223372036859580196uL, array);
  196.             return BitConverter.ToString(array).Replace("-", " ");
  197.         }
  198.         public int AttachProcess()
  199.         {
  200.             CCAPI.System.processID = 0u;
  201.             int num = this.GetProcessList(out CCAPI.System.processIDs);
  202.             int result;
  203.             if (!this.SUCCESS(num) || CCAPI.System.processIDs.Length <= 0)
  204.             {
  205.                 result = -1;
  206.             }
  207.             else
  208.             {
  209.                 for (int i = 0; i < CCAPI.System.processIDs.Length; i++)
  210.                 {
  211.                     string empty = string.Empty;
  212.                     num = this.GetProcessName(CCAPI.System.processIDs[i], out empty);
  213.                     if (!this.SUCCESS(num))
  214.                     {
  215.                         break;
  216.                     }
  217.                     if (!empty.Contains("flash"))
  218.                     {
  219.                         CCAPI.System.processID = CCAPI.System.processIDs[i];
  220.                         break;
  221.                     }
  222.                     num = -1;
  223.                 }
  224.                 if (CCAPI.System.processID == 0u)
  225.                 {
  226.                     CCAPI.System.processID = CCAPI.System.processIDs[CCAPI.System.processIDs.Length - 1];
  227.                 }
  228.                 result = num;
  229.             }
  230.             return result;
  231.         }
  232.         public int AttachProcess(CCAPI.ProcessType procType)
  233.         {
  234.             CCAPI.System.processID = 0u;
  235.             int num = this.GetProcessList(out CCAPI.System.processIDs);
  236.             int result;
  237.             if (num < 0 || CCAPI.System.processIDs.Length <= 0)
  238.             {
  239.                 result = -1;
  240.             }
  241.             else
  242.             {
  243.                 for (int i = 0; i < CCAPI.System.processIDs.Length; i++)
  244.                 {
  245.                     string empty = string.Empty;
  246.                     num = this.GetProcessName(CCAPI.System.processIDs[i], out empty);
  247.                     if (num < 0)
  248.                     {
  249.                         break;
  250.                     }
  251.                     if (procType == CCAPI.ProcessType.VSH && empty.Contains("vsh"))
  252.                     {
  253.                         CCAPI.System.processID = CCAPI.System.processIDs[i];
  254.                         break;
  255.                     }
  256.                     if (procType == CCAPI.ProcessType.SYS_AGENT && empty.Contains("agent"))
  257.                     {
  258.                         CCAPI.System.processID = CCAPI.System.processIDs[i];
  259.                         break;
  260.                     }
  261.                     if (procType == CCAPI.ProcessType.CURRENTGAME && !empty.Contains("flash"))
  262.                     {
  263.                         CCAPI.System.processID = CCAPI.System.processIDs[i];
  264.                         break;
  265.                     }
  266.                 }
  267.                 if (CCAPI.System.processID == 0u)
  268.                 {
  269.                     CCAPI.System.processID = CCAPI.System.processIDs[CCAPI.System.processIDs.Length - 1];
  270.                 }
  271.                 result = num;
  272.             }
  273.             return result;
  274.         }
  275.         public int AttachProcess(uint process)
  276.         {
  277.             uint[] array = new uint[64];
  278.             int num = this.GetProcessList(out array);
  279.             int result;
  280.             if (this.SUCCESS(num))
  281.             {
  282.                 for (int i = 0; i < array.Length; i++)
  283.                 {
  284.                     if (array[i] == process)
  285.                     {
  286.                         num = 0;
  287.                         CCAPI.System.processID = process;
  288.                         result = num;
  289.                         return result;
  290.                     }
  291.                     num = -1;
  292.                 }
  293.             }
  294.             result = num;
  295.             return result;
  296.         }
  297.         public void ClearTargetInfo()
  298.         {
  299.             this.pInfo = new CCAPI.TargetInfo();
  300.         }
  301.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi16closeTargetCommsEv")]
  302.         private static extern int closeTargetComms();
  303.         private void CompleteInfo(ref CCAPI.TargetInfo Info, int fw, int ccapi, ulong sysTable, int consoleType, int tempCELL, int tempRSX)
  304.         {
  305.             Info.Firmware = fw;
  306.             Info.CCAPI = ccapi;
  307.             Info.SysTable = sysTable;
  308.             Info.ConsoleType = consoleType;
  309.             Info.TempCell = tempCELL;
  310.             Info.TempRSX = tempRSX;
  311.         }
  312.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi14connectConsoleEPKc")]
  313.         private static extern int connectConsole(string targetIP);
  314.         public int ConnectTarget(string targetIP)
  315.         {
  316.             if (this.SUCCESS(CCAPI.System.connectionID))
  317.             {
  318.                 CCAPI.disconnectConsole(CCAPI.System.connectionID);
  319.             }
  320.             CCAPI.initTargetComms();
  321.             CCAPI.System.connectionID = CCAPI.connectConsole(targetIP);
  322.             CCAPI cCAPI = new CCAPI();
  323.             cCAPI.Notify(CCAPI.NotifyIcon.FRIEND, "PS3Lib(4.4) [UNOFFICIAL]: By BaSs_HaXoR");
  324.             return CCAPI.System.connectionID;
  325.         }
  326.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi17disconnectConsoleEi")]
  327.         private static extern int disconnectConsole(int connectionID);
  328.         public int DisconnectTarget()
  329.         {
  330.             return CCAPI.disconnectConsole(CCAPI.System.connectionID);
  331.         }
  332.         public uint GetAttachedProcess()
  333.         {
  334.             return CCAPI.System.processID;
  335.         }
  336.         public byte[] GetBytes(uint offset, uint length)
  337.         {
  338.             byte[] array = new byte[length];
  339.             this.GetMemory(offset, array);
  340.             return array;
  341.         }
  342.         public byte[] GetBytes(ulong offset, uint length)
  343.         {
  344.             byte[] array = new byte[length];
  345.             this.GetMemory(offset, array);
  346.             return array;
  347.         }
  348.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN8Settings14getConsoleInfoEiPcS0_")]
  349.         private static extern int getConsoleInfo(int index, IntPtr ptrN, IntPtr ptrI);
  350.         public List<CCAPI.ConsoleInfo> GetConsoleList()
  351.         {
  352.             List<CCAPI.ConsoleInfo> list = new List<CCAPI.ConsoleInfo>();
  353.             int numberOfConsoles = CCAPI.getNumberOfConsoles();
  354.             IntPtr intPtr = Marshal.AllocHGlobal(256);
  355.             IntPtr intPtr2 = Marshal.AllocHGlobal(256);
  356.             for (int i = 0; i < numberOfConsoles; i++)
  357.             {
  358.                 CCAPI.ConsoleInfo consoleInfo = new CCAPI.ConsoleInfo();
  359.                 CCAPI.getConsoleInfo(i, intPtr, intPtr2);
  360.                 consoleInfo.Name = Marshal.PtrToStringAnsi(intPtr);
  361.                 consoleInfo.Ip = Marshal.PtrToStringAnsi(intPtr2);
  362.                 list.Add(consoleInfo);
  363.             }
  364.             Marshal.FreeHGlobal(intPtr);
  365.             Marshal.FreeHGlobal(intPtr2);
  366.             return list;
  367.         }
  368.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi13getDllVersionEv")]
  369.         private static extern int getDllVersion();
  370.         public int GetDllVersion()
  371.         {
  372.             return CCAPI.getDllVersion();
  373.         }
  374.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi15getFirmwareInfoEiPiS0_PyS0_")]
  375.         private static extern int getFirmwareInfo(int connectionId, ref int firmware, ref int ccapi, ref ulong systable, ref int consoleType);
  376.         public string GetFirmwareType()
  377.         {
  378.             if (this.pInfo.ConsoleType.ToString() == "")
  379.             {
  380.                 this.GetTargetInfo(out this.pInfo);
  381.             }
  382.             string text = string.Empty;
  383.             string result;
  384.             if (this.pInfo.ConsoleType == 1)
  385.             {
  386.                 result = "CEX";
  387.             }
  388.             else
  389.             {
  390.                 if (this.pInfo.ConsoleType == 2)
  391.                 {
  392.                     result = "DEX";
  393.                 }
  394.                 else
  395.                 {
  396.                     if (this.pInfo.ConsoleType == 3)
  397.                     {
  398.                         text = "TOOL";
  399.                     }
  400.                     result = text;
  401.                 }
  402.             }
  403.             return result;
  404.         }
  405.         public string GetFirmwareVersion()
  406.         {
  407.             if (this.pInfo.Firmware == 0)
  408.             {
  409.                 this.GetTargetInfo();
  410.             }
  411.             string text = this.pInfo.Firmware.ToString("X8");
  412.             string str = text.Substring(1, 1) + ".";
  413.             string str2 = text.Substring(3, 1);
  414.             string str3 = text.Substring(4, 1);
  415.             return str + str2 + str3;
  416.         }
  417.         public int GetMemory(uint offset, byte[] buffer)
  418.         {
  419.             return CCAPI.getProcessMemory(CCAPI.System.connectionID, CCAPI.System.processID, (ulong)offset, (uint)buffer.Length, buffer);
  420.         }
  421.         public int GetMemory(ulong offset, byte[] buffer)
  422.         {
  423.             return CCAPI.getProcessMemory(CCAPI.System.connectionID, CCAPI.System.processID, offset, (uint)buffer.Length, buffer);
  424.         }
  425.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN8Settings19getNumberOfConsolesEv")]
  426.         private static extern int getNumberOfConsoles();
  427.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi14getProcessListEiPjS0_")]
  428.         private static extern int getProcessList(int connectionID, ref uint numberProcesses, IntPtr processIdPtr);
  429.         public int GetProcessList(out uint[] processIds)
  430.         {
  431.             uint num = 0u;
  432.             CCAPI.CCAPIGlobalPointer cCAPIGlobalPointer = new CCAPI.CCAPIGlobalPointer(Marshal.AllocHGlobal(256));
  433.             int processList = CCAPI.getProcessList(CCAPI.System.connectionID, ref num, cCAPIGlobalPointer.GetPtr());
  434.             processIds = new uint[num];
  435.             if (this.SUCCESS(processList))
  436.             {
  437.                 IntPtr unBuf = cCAPIGlobalPointer.GetPtr();
  438.                 for (uint num2 = 0u; num2 < num; num2 += 1u)
  439.                 {
  440.                     unBuf = this.ReadDataFromUnBufPtr<uint>(unBuf, ref processIds[(int)((UIntPtr)num2)]);
  441.                 }
  442.             }
  443.             return processList;
  444.         }
  445.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi16getProcessMemoryEijyjPh")]
  446.         private static extern int getProcessMemory(int connectionID, uint processID, ulong offset, uint size, byte[] buffOut);
  447.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi14getProcessNameEijPc")]
  448.         private static extern int getProcessName(int connectionID, uint processID, IntPtr strPtr);
  449.         public int GetProcessName(uint processId, out string name)
  450.         {
  451.             IntPtr intPtr = Marshal.AllocHGlobal(529);
  452.             int processName = CCAPI.getProcessName(CCAPI.System.connectionID, processId, intPtr);
  453.             name = string.Empty;
  454.             if (this.SUCCESS(processName))
  455.             {
  456.                 name = Marshal.PtrToStringAnsi(intPtr);
  457.             }
  458.             return processName;
  459.         }
  460.         private int GetTargetInfo()
  461.         {
  462.             int[] array = new int[2];
  463.             int fw = 0;
  464.             int ccapi = 0;
  465.             int consoleType = 0;
  466.             ulong sysTable = 0uL;
  467.             int num = CCAPI.getFirmwareInfo(CCAPI.System.connectionID, ref fw, ref ccapi, ref sysTable, ref consoleType);
  468.             int result;
  469.             if (num >= 0)
  470.             {
  471.                 CCAPI.CCAPIGlobalPointer cCAPIGlobalPointer = new CCAPI.CCAPIGlobalPointer(Marshal.AllocHGlobal(8));
  472.                 num = CCAPI.getTemperature(CCAPI.System.connectionID, cCAPIGlobalPointer.GetPtr());
  473.                 if (num < 0)
  474.                 {
  475.                     result = num;
  476.                     return result;
  477.                 }
  478.                 IntPtr unBuf = cCAPIGlobalPointer.GetPtr();
  479.                 for (uint num2 = 0u; num2 < 2u; num2 += 1u)
  480.                 {
  481.                     unBuf = this.ReadDataFromUnBufPtr<int>(unBuf, ref array[(int)((UIntPtr)num2)]);
  482.                 }
  483.                 this.CompleteInfo(ref this.pInfo, fw, ccapi, sysTable, consoleType, array[0], array[1]);
  484.             }
  485.             result = num;
  486.             return result;
  487.         }
  488.         public int GetTargetInfo(out CCAPI.TargetInfo Info)
  489.         {
  490.             Info = new CCAPI.TargetInfo();
  491.             int[] array = new int[2];
  492.             int fw = 0;
  493.             int ccapi = 0;
  494.             int consoleType = 0;
  495.             ulong sysTable = 0uL;
  496.             int num = CCAPI.getFirmwareInfo(CCAPI.System.connectionID, ref fw, ref ccapi, ref sysTable, ref consoleType);
  497.             int result;
  498.             if (num >= 0)
  499.             {
  500.                 CCAPI.CCAPIGlobalPointer cCAPIGlobalPointer = new CCAPI.CCAPIGlobalPointer(Marshal.AllocHGlobal(8));
  501.                 num = CCAPI.getTemperature(CCAPI.System.connectionID, cCAPIGlobalPointer.GetPtr());
  502.                 if (num < 0)
  503.                 {
  504.                     result = num;
  505.                     return result;
  506.                 }
  507.                 IntPtr unBuf = cCAPIGlobalPointer.GetPtr();
  508.                 for (uint num2 = 0u; num2 < 2u; num2 += 1u)
  509.                 {
  510.                     unBuf = this.ReadDataFromUnBufPtr<int>(unBuf, ref array[(int)((UIntPtr)num2)]);
  511.                 }
  512.                 this.CompleteInfo(ref Info, fw, ccapi, sysTable, consoleType, array[0], array[1]);
  513.                 this.CompleteInfo(ref this.pInfo, fw, ccapi, sysTable, consoleType, array[0], array[1]);
  514.             }
  515.             result = num;
  516.             return result;
  517.         }
  518.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi14getTemperatureEiPj")]
  519.         private static extern int getTemperature(int connectionId, IntPtr tempPtr);
  520.         public string GetTemperatureCELL()
  521.         {
  522.             if (this.pInfo.TempCell == 0)
  523.             {
  524.                 this.GetTargetInfo(out this.pInfo);
  525.             }
  526.             return this.pInfo.TempCell.ToString() + " C";
  527.         }
  528.         public string GetTemperatureRSX()
  529.         {
  530.             if (this.pInfo.TempRSX == 0)
  531.             {
  532.                 this.GetTargetInfo(out this.pInfo);
  533.             }
  534.             return this.pInfo.TempRSX.ToString() + " C";
  535.         }
  536.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi15initTargetCommsEv")]
  537.         private static extern int initTargetComms();
  538.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi6notifyEiiPw")]
  539.         private static extern int notify(int connectionId, int mode, [MarshalAs(UnmanagedType.LPWStr)] string msgWChar);
  540.         public int Notify(CCAPI.NotifyIcon icon, string message)
  541.         {
  542.             return CCAPI.notify(CCAPI.System.connectionID, (int)icon, message);
  543.         }
  544.         public int Notify(int icon, string message)
  545.         {
  546.             return CCAPI.notify(CCAPI.System.connectionID, icon, message);
  547.         }
  548.         private IntPtr ReadDataFromUnBufPtr<T>(IntPtr unBuf, ref T storage)
  549.         {
  550.             storage = (T)((object)Marshal.PtrToStructure(unBuf, typeof(T)));
  551.             return new IntPtr(unBuf.ToInt64() + (long)Marshal.SizeOf(storage));
  552.         }
  553.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi10ringBuzzerEii")]
  554.         private static extern int ringBuzzer(int connectionId, int type);
  555.         public int RingBuzzer(CCAPI.BuzzerMode flag)
  556.         {
  557.             return CCAPI.ringBuzzer(CCAPI.System.connectionID, (int)flag);
  558.         }
  559.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi12setConsoleIDEiPh")]
  560.         private static extern int setConsoleID(int connectionId, byte[] consoleID);
  561.         public int SetConsoleID(string consoleID)
  562.         {
  563.             string hex = string.Empty;
  564.             if (consoleID.Length >= 32)
  565.             {
  566.                 hex = consoleID.Substring(0, 32);
  567.             }
  568.             return CCAPI.setConsoleID(CCAPI.System.connectionID, CCAPI.StringToByteArray(hex));
  569.         }
  570.         public int SetConsoleID(byte[] consoleID)
  571.         {
  572.             return CCAPI.setConsoleID(CCAPI.System.connectionID, consoleID);
  573.         }
  574.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi13setConsoleLedEiii")]
  575.         private static extern int setConsoleLed(int connectionId, int color, int status);
  576.         public int SetConsoleLed(CCAPI.LedColor color, CCAPI.LedMode mode)
  577.         {
  578.             return CCAPI.setConsoleLed(CCAPI.System.connectionID, (int)color, (int)mode);
  579.         }
  580.         public int SetMemory(uint offset, byte[] buffer)
  581.         {
  582.             return CCAPI.setProcessMemory(CCAPI.System.connectionID, CCAPI.System.processID, (ulong)offset, (uint)buffer.Length, buffer);
  583.         }
  584.         public int SetMemory(ulong offset, byte[] buffer)
  585.         {
  586.             return CCAPI.setProcessMemory(CCAPI.System.connectionID, CCAPI.System.processID, offset, (uint)buffer.Length, buffer);
  587.         }
  588.         public int SetMemory(ulong offset, string hexadecimal, EndianType Type = EndianType.LittleEndian)
  589.         {
  590.             byte[] array = CCAPI.StringToByteArray(hexadecimal);
  591.             if (Type == EndianType.LittleEndian)
  592.             {
  593.                 Array.Reverse(array);
  594.             }
  595.             return CCAPI.setProcessMemory(CCAPI.System.connectionID, CCAPI.System.processID, offset, (uint)array.Length, array);
  596.         }
  597.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi16setProcessMemoryEijyjPh")]
  598.         private static extern int setProcessMemory(int connectionID, uint processID, ulong offset, uint size, byte[] buffIn);
  599.         [DllImport("CCAPI.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "_ZN5CcApi8shutdownEii")]
  600.         private static extern int shutdown(int connectionId, int mode);
  601.         public int ShutDown(CCAPI.RebootFlags flag)
  602.         {
  603.             return CCAPI.shutdown(CCAPI.System.connectionID, (int)flag);
  604.         }
  605.         internal static byte[] StringToByteArray(string hex)
  606.         {
  607.             Func<int, byte> func = null;
  608.             Func<int, byte> func2 = null;
  609.             string replace = hex.Replace("0x", "");
  610.             string Stringz = replace.Insert(replace.Length - 1, "0");
  611.             bool flag;
  612.             if (replace.Length % 2 == 0)
  613.             {
  614.                 flag = true;
  615.             }
  616.             else
  617.             {
  618.                 flag = false;
  619.             }
  620.             byte[] result;
  621.             byte[] array;
  622.             try
  623.             {
  624.                 if (flag)
  625.                 {
  626.                     if (func == null)
  627.                     {
  628.                         func = ((int x) => Convert.ToByte(replace.Substring(x, 2), 16));
  629.                     }
  630.                     result = (
  631.                         from x in Enumerable.Range(0, replace.Length)
  632.                         where x % 2 == 0
  633.                         select x).Select(func).ToArray<byte>();
  634.                     return result;
  635.                 }
  636.                 if (func2 == null)
  637.                 {
  638.                     func2 = ((int x) => Convert.ToByte(Stringz.Substring(x, 2), 16));
  639.                 }
  640.                 array = (
  641.                     from x in Enumerable.Range(0, replace.Length)
  642.                     where x % 2 == 0
  643.                     select x).Select(func2).ToArray<byte>();
  644.             }
  645.             catch
  646.             {
  647.                 throw new ArgumentException("Value not possible.", "Byte Array");
  648.             }
  649.             result = array;
  650.             return result;
  651.         }
  652.         public bool SUCCESS(int Void)
  653.         {
  654.             return Void >= 0;
  655.         }
  656.     }
  657. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement