diff --git a/BBWY.sln b/BBWY.sln index c551a7e9..e2c8cc78 100644 --- a/BBWY.sln +++ b/BBWY.sln @@ -36,62 +36,122 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BBWY.Test", "BBWY.Test\BBWY EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JD.API", "JD.API\JD.API.csproj", "{3D37A8D3-0364-4539-B3E9-A6610F4659A8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PJZS", "PJZS\PJZS.csproj", "{FB4BF1A9-DA81-446F-903C-89D3F905B7B8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PJZS", "PJZS\PJZS.csproj", "{FB4BF1A9-DA81-446F-903C-89D3F905B7B8}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InDll", "DongDongInJection\InDll\InDll.csproj", "{1F19E500-3B6A-40F9-9814-C941097B93D9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {04DAF636-2630-45BB-BEFA-264EC273E920}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {04DAF636-2630-45BB-BEFA-264EC273E920}.Debug|Any CPU.Build.0 = Debug|Any CPU + {04DAF636-2630-45BB-BEFA-264EC273E920}.Debug|x86.ActiveCfg = Debug|Any CPU + {04DAF636-2630-45BB-BEFA-264EC273E920}.Debug|x86.Build.0 = Debug|Any CPU {04DAF636-2630-45BB-BEFA-264EC273E920}.Release|Any CPU.ActiveCfg = Release|Any CPU {04DAF636-2630-45BB-BEFA-264EC273E920}.Release|Any CPU.Build.0 = Release|Any CPU + {04DAF636-2630-45BB-BEFA-264EC273E920}.Release|x86.ActiveCfg = Release|Any CPU + {04DAF636-2630-45BB-BEFA-264EC273E920}.Release|x86.Build.0 = Release|Any CPU {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Debug|x86.ActiveCfg = Debug|Any CPU + {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Debug|x86.Build.0 = Debug|Any CPU {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Release|Any CPU.ActiveCfg = Release|Any CPU {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Release|Any CPU.Build.0 = Release|Any CPU + {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Release|x86.ActiveCfg = Release|Any CPU + {68F7CDB6-BE89-400D-B6F3-B7BCC826E5E9}.Release|x86.Build.0 = Release|Any CPU {4D58B231-3299-44EE-B579-5DE885383AF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4D58B231-3299-44EE-B579-5DE885383AF2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D58B231-3299-44EE-B579-5DE885383AF2}.Debug|x86.ActiveCfg = Debug|Any CPU + {4D58B231-3299-44EE-B579-5DE885383AF2}.Debug|x86.Build.0 = Debug|Any CPU {4D58B231-3299-44EE-B579-5DE885383AF2}.Release|Any CPU.ActiveCfg = Release|Any CPU {4D58B231-3299-44EE-B579-5DE885383AF2}.Release|Any CPU.Build.0 = Release|Any CPU + {4D58B231-3299-44EE-B579-5DE885383AF2}.Release|x86.ActiveCfg = Release|Any CPU + {4D58B231-3299-44EE-B579-5DE885383AF2}.Release|x86.Build.0 = Release|Any CPU {47E64D1C-6997-4919-9897-FC5DF09327B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {47E64D1C-6997-4919-9897-FC5DF09327B3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {47E64D1C-6997-4919-9897-FC5DF09327B3}.Debug|x86.ActiveCfg = Debug|Any CPU + {47E64D1C-6997-4919-9897-FC5DF09327B3}.Debug|x86.Build.0 = Debug|Any CPU {47E64D1C-6997-4919-9897-FC5DF09327B3}.Release|Any CPU.ActiveCfg = Release|Any CPU {47E64D1C-6997-4919-9897-FC5DF09327B3}.Release|Any CPU.Build.0 = Release|Any CPU + {47E64D1C-6997-4919-9897-FC5DF09327B3}.Release|x86.ActiveCfg = Release|Any CPU + {47E64D1C-6997-4919-9897-FC5DF09327B3}.Release|x86.Build.0 = Release|Any CPU {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Debug|x86.ActiveCfg = Debug|Any CPU + {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Debug|x86.Build.0 = Debug|Any CPU {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Release|Any CPU.ActiveCfg = Release|Any CPU {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Release|Any CPU.Build.0 = Release|Any CPU + {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Release|x86.ActiveCfg = Release|Any CPU + {10F2C0E3-D756-47F8-AEFD-98A800DBFCEB}.Release|x86.Build.0 = Release|Any CPU {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Debug|x86.ActiveCfg = Debug|Any CPU + {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Debug|x86.Build.0 = Debug|Any CPU {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Release|Any CPU.ActiveCfg = Release|Any CPU {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Release|Any CPU.Build.0 = Release|Any CPU + {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Release|x86.ActiveCfg = Release|Any CPU + {5FC60547-0934-4AAD-921B-F4DA03C9F47D}.Release|x86.Build.0 = Release|Any CPU {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Debug|x86.ActiveCfg = Debug|Any CPU + {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Debug|x86.Build.0 = Debug|Any CPU {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Release|Any CPU.ActiveCfg = Release|Any CPU {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Release|Any CPU.Build.0 = Release|Any CPU + {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Release|x86.ActiveCfg = Release|Any CPU + {E38A95F5-05E6-4856-811C-30D7A1B77C68}.Release|x86.Build.0 = Release|Any CPU {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Debug|x86.ActiveCfg = Debug|Any CPU + {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Debug|x86.Build.0 = Debug|Any CPU {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Release|Any CPU.ActiveCfg = Release|Any CPU {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Release|Any CPU.Build.0 = Release|Any CPU + {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Release|x86.ActiveCfg = Release|Any CPU + {2DC24A1B-EFE0-4F9D-8A9A-A6B530696E17}.Release|x86.Build.0 = Release|Any CPU {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Debug|x86.ActiveCfg = Debug|Any CPU + {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Debug|x86.Build.0 = Debug|Any CPU {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Release|Any CPU.ActiveCfg = Release|Any CPU {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Release|Any CPU.Build.0 = Release|Any CPU + {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Release|x86.ActiveCfg = Release|Any CPU + {1A7EB438-5DEF-4940-8CB2-C58141C75524}.Release|x86.Build.0 = Release|Any CPU {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Debug|x86.ActiveCfg = Debug|Any CPU + {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Debug|x86.Build.0 = Debug|Any CPU {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Release|Any CPU.ActiveCfg = Release|Any CPU {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Release|Any CPU.Build.0 = Release|Any CPU + {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Release|x86.ActiveCfg = Release|Any CPU + {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB}.Release|x86.Build.0 = Release|Any CPU {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Debug|x86.ActiveCfg = Debug|Any CPU + {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Debug|x86.Build.0 = Debug|Any CPU {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Release|Any CPU.Build.0 = Release|Any CPU + {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Release|x86.ActiveCfg = Release|Any CPU + {3D37A8D3-0364-4539-B3E9-A6610F4659A8}.Release|x86.Build.0 = Release|Any CPU {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Debug|x86.ActiveCfg = Debug|Any CPU + {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Debug|x86.Build.0 = Debug|Any CPU {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Release|Any CPU.Build.0 = Release|Any CPU + {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Release|x86.ActiveCfg = Release|Any CPU + {FB4BF1A9-DA81-446F-903C-89D3F905B7B8}.Release|x86.Build.0 = Release|Any CPU + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Debug|x86.ActiveCfg = Debug|x86 + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Debug|x86.Build.0 = Debug|x86 + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Release|Any CPU.Build.0 = Release|Any CPU + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Release|x86.ActiveCfg = Release|x86 + {1F19E500-3B6A-40F9-9814-C941097B93D9}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -108,6 +168,7 @@ Global {FCD5E03E-DA48-406B-9AA8-F72F21F62BDB} = {B545F3FA-E6A7-4CB1-B92D-801C66357CF5} {3D37A8D3-0364-4539-B3E9-A6610F4659A8} = {B545F3FA-E6A7-4CB1-B92D-801C66357CF5} {FB4BF1A9-DA81-446F-903C-89D3F905B7B8} = {D097AEA5-A7B1-414D-B82D-F70F177D0D8D} + {1F19E500-3B6A-40F9-9814-C941097B93D9} = {D097AEA5-A7B1-414D-B82D-F70F177D0D8D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {CC045257-4D86-45FD-A1F0-2715C024F1B5} diff --git a/DongDongInJection/InDll/CSharpAPIs.cs b/DongDongInJection/InDll/CSharpAPIs.cs new file mode 100644 index 00000000..01d19bd2 --- /dev/null +++ b/DongDongInJection/InDll/CSharpAPIs.cs @@ -0,0 +1,245 @@ + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace QYDongDongTool +{ + public class CSharpAPIs + { + private delegate bool WNDENUMPROC(IntPtr hWnd, int lParam); + [DllImport("user32.dll")] + private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, int lParam); + //[DllImport("user32.dll")] + //private static extern IntPtr FindWindowW(string lpClassName, string lpWindowName); + [DllImport("user32.dll")] + private static extern int GetWindowTextW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpString, int nMaxCount); + [DllImport("user32.dll")] + private static extern int GetClassNameW(IntPtr hWnd, [MarshalAs(UnmanagedType.LPWStr)] StringBuilder lpString, int nMaxCount); + + + [DllImport("User32.dll", CharSet = CharSet.Auto)] + public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID); + + + [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)] + public static extern int ShowWindow(IntPtr hwnd, int nCmdShow); + + [DllImport("user32.dll")] + public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags); + + [DllImport("user32.dll", EntryPoint = "SetParent")] + public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent); + + [DllImport("user32.dll", CharSet = CharSet.Auto)] + public static extern int MoveWindow(IntPtr hWnd, int x, int y, int nWidth, int nHeight, bool BRePaint); + + + [DllImport("user32.dll")] + public static extern IntPtr GetTopWindow(IntPtr hWnd); + + [DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "GetWindow", SetLastError = true)] + public static extern IntPtr GetNextWindow(IntPtr hwnd, [MarshalAs(UnmanagedType.U4)] int wFlag); + + [DllImport("user32.dll", EntryPoint = "GetDesktopWindow", CharSet = CharSet.Auto, SetLastError = true)] + public static extern IntPtr GetDesktopWindow(); + + [DllImport("user32.dll", EntryPoint = "GetWindowLong")] + private static extern IntPtr GetWindowLongPtr32(IntPtr hWnd, int nIndex); + + [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")] + private static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, int nIndex); + + // This static method is required because Win32 does not support + // GetWindowLongPtr directly + public static IntPtr GetWindowLong(IntPtr hWnd, int nIndex) + { + if (IntPtr.Size == 8) + return GetWindowLongPtr64(hWnd, nIndex); + else + return GetWindowLongPtr32(hWnd, nIndex); + } + + + public static IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong) + { + if (IntPtr.Size == 8) + return SetWindowLongPtr64(hWnd, nIndex, dwNewLong); + else + return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32())); + } + + [DllImport("user32.dll", EntryPoint = "SetWindowLong")] + private static extern int SetWindowLong32(IntPtr hWnd, int nIndex, int dwNewLong); + + [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] + private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, IntPtr dwNewLong); + + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern nint GetForegroundWindow(); + + [DllImport("user32.dll")] + public static extern bool SetForegroundWindow(nint hWnd); + + + //根据窗口来获取进程ID, + public static int GetCurrentProcessID(IntPtr handle) + { + GetWindowThreadProcessId(handle, out int oo); + return oo; + } + public struct WindowInfo + { + public IntPtr hWnd; + public string szWindowName; + public string szClassName; + public int ProcessId { get; set; } + + public int Width { get; set; } + + public int Height { get; set; } + + public int X { get; set; } + + public int Y { get; set; } + } + + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect); + + [StructLayout(LayoutKind.Sequential)] + public struct RECT + { + public int Left; //最左坐标 + public int Top; //最上坐标 + public int Right; //最右坐标 + public int Bottom; //最下坐标 + } + + + public static (int width, int height, int x, int y) GetWindowSize(IntPtr hwnd) + { + RECT rc = new RECT(); + GetWindowRect(hwnd, ref rc); + + int width = rc.Right - rc.Left; //窗口的宽度 + int height = rc.Bottom - rc.Top; //窗口的高度 + int x = rc.Left; + int y = rc.Top; + + + return (width, height, x, y); + } + + + + + /* + SetWindowLong(ChildWindowHandle, GWL_EXSTYLE, (GetWindowLong(ChildWindowHandle, GWL_EXSTYLE) | WS_EX_NOPARENTNOTIFY)); + */ + public enum GWL + { + GWL_WNDPROC = (-4), + GWL_HINSTANCE = (-6), + GWL_HWNDPARENT = (-8), + GWL_STYLE = (-16), + GWL_EXSTYLE = (-20), + GWL_USERDATA = (-21), + GWL_ID = (-12) + } + + public static nint SetWindowStyle(IntPtr hwnd) + { + return SetWindowLong(hwnd, (int)GWL.GWL_EXSTYLE, (GetWindowLong(hwnd, (int)GWL.GWL_EXSTYLE) | 0x00000004)); + } + + public static bool ReSetParent(IntPtr hWnd) + { + int row= SetParent(hWnd, GetDesktopWindow()); + MoveWindow(hWnd, 0, 0, 0, 0, true); + return row > 0; + } + + + public static WindowInfo GetWindowInfo(nint hWnd) + { + WindowInfo wnd = new WindowInfo(); + StringBuilder sb = new StringBuilder(256); + //get hwnd + wnd.hWnd = hWnd; + //get window name + GetWindowTextW(hWnd, sb, sb.Capacity); + wnd.szWindowName = sb.ToString(); + //get window class + GetClassNameW(hWnd, sb, sb.Capacity); + wnd.szClassName = sb.ToString(); + wnd.ProcessId = GetCurrentProcessID(hWnd); + + var size= GetWindowSize(hWnd); + wnd.Width = size.width; + wnd.Height = size.height; + wnd.X = size.x; + wnd.Y = size.y; + + return wnd; + } + + + + public List GetAllDesktopWindows() + { + List wndList = new List(); + + //enum all desktop windows + EnumWindows(delegate (IntPtr hWnd, int lParam) + { + WindowInfo wnd = new WindowInfo(); + StringBuilder sb = new StringBuilder(256); + //get hwnd + wnd.hWnd = hWnd; + //get window name + GetWindowTextW(hWnd, sb, sb.Capacity); + wnd.szWindowName = sb.ToString(); + //get window class + GetClassNameW(hWnd, sb, sb.Capacity); + wnd.szClassName = sb.ToString(); + wnd.ProcessId = GetCurrentProcessID(hWnd); + + var (width, height, x, y) = GetWindowSize(hWnd); + wnd.Width = width; + wnd.Height = height; + wnd.X = x; + wnd.Y = y; + + //add it into list + wndList.Add(wnd); + return true; + }, 0); + + return wndList; + } + //获取窗体位置 最小化 最大化 隐藏 api + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); + + + + } + +} + +public struct WINDOWPLACEMENT +{ + public int length; + public int flags; + public int showCmd; + public System.Drawing.Point ptMinPosition; + public System.Drawing.Point ptMaxPosition; + public System.Drawing.Rectangle rcNormalPosition; +} diff --git a/DongDongInJection/InDll/DllInLine.dll b/DongDongInJection/InDll/DllInLine.dll new file mode 100644 index 00000000..9dd46323 Binary files /dev/null and b/DongDongInJection/InDll/DllInLine.dll differ diff --git a/DongDongInJection/InDll/HookHelper.cs b/DongDongInJection/InDll/HookHelper.cs new file mode 100644 index 00000000..2334c87d --- /dev/null +++ b/DongDongInJection/InDll/HookHelper.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Xml.Linq; + +namespace QYDongDongTool.Unitls +{ + public class MP + { + [DllImport("DllInLine.dll", EntryPoint = "Hook", CallingConvention = CallingConvention.Cdecl)] + public static extern int DllHook(int pid, string dLLPath); + + + [DllImport("DllInLine.dll", EntryPoint = "UnHook", CallingConvention = CallingConvention.Cdecl)] + public static extern int UnHookDll(int pid); + + + public static bool Hook(int pid) + { + string sDllPath = System.Environment.CurrentDirectory+ "\\sendPhone.dll"; + return DllHook(pid, sDllPath) ==0; + } + + public static bool UnHook(int pid) + { + int val= UnHookDll(pid); + return val==0; + } + } +} diff --git a/DongDongInJection/InDll/InDll.csproj b/DongDongInJection/InDll/InDll.csproj new file mode 100644 index 00000000..45f138e2 --- /dev/null +++ b/DongDongInJection/InDll/InDll.csproj @@ -0,0 +1,20 @@ + + + + Exe + net6.0 + enable + enable + AnyCPU;x86 + + + + + Always + + + Always + + + + diff --git a/DongDongInJection/InDll/Program.cs b/DongDongInJection/InDll/Program.cs new file mode 100644 index 00000000..92defe5b --- /dev/null +++ b/DongDongInJection/InDll/Program.cs @@ -0,0 +1,32 @@ +// See https://aka.ms/new-console-template for more information +using QYDongDongTool; +using QYDongDongTool.Unitls; +using System.Diagnostics; + +public class Program +{ + + public static void Main() + { + var list = new CSharpAPIs().GetAllDesktopWindows(); + + var windows = list.Where(c => c.szClassName == "DD_JM_Workbench_DLG").ToList(); + + windows.ForEach(info => + { + + foreach (ProcessModule module in Process.GetProcessById(info.ProcessId).Modules) + { + //检测是否已经注入 + if (module.ModuleName.Contains("sendPhone.dll")) + { + return; + } + } + + //注入dll + MP.Hook((int)info.ProcessId); + + }); + } +} \ No newline at end of file diff --git a/DongDongInJection/InDll/sendPhone.dll b/DongDongInJection/InDll/sendPhone.dll new file mode 100644 index 00000000..880bd6b7 Binary files /dev/null and b/DongDongInJection/InDll/sendPhone.dll differ diff --git a/dll注入器.rar b/dll注入器.rar new file mode 100644 index 00000000..bd2d4dd7 Binary files /dev/null and b/dll注入器.rar differ