-
21-04-2013, 10:17 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
sử dụng các hàm của dll sau khi inject vào applicaton đang chạy như thế nào ?
tình hình là mình đang viết một ứng dụng inject dll vào 1 ứng dụng khác đang chạy và đã inject thành công, bây giờ mình k biết làm thế nào để sử dụng hay liên lạc vs code trong dll đã inject. Ngoài ra mình còn dùng cơ chế share memory nhưng không biết làm thế nào để sử dụng các code trong dll mình đã inject vào applicaton. Mong mọi người giúp đỡ [IMG]images/smilies/smile.png[/IMG] cảm ơn [IMG]images/smilies/smile.png[/IMG]
View more random threads:
- Ghi Lại Sự Kiện Kéo Thả - Kéo Scroll bằng sử dụng Hook?
- Windows 7 EndTask trong Task Manager
- Sử dụng Win32API WriteProcessMemory trong .Net như thế nào ?
- Kỹ thuật hook Console Application của madCHook?
- Mở 1 trang web chỉ dùng Internet Explorer
- Lập trình VC++ | Bảo Vệ ENDTASK tại sao không chạy tốt
- Xin Y Kien Anh Em ve Auto Hook ko dung HC_ACTION
- Hook không vào được procedure.
- Tự xây dựng Credentials tương tự như Class NetworkCredential
- help unhook ZwOpenProcess
-
21-04-2013, 02:25 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi kid_191
Sau khi Inject vào DLL, cách 1 là gọi code của bạn trong DLL Main() của chương trình, nếu DLL Main() của bạn gọi 1 đoạn code mà bạn muốn chạy tới khi chương trình kết thúc thì trong DLL Main() bạn tạo một thread với điều kiện thread đó dừng khi bạn nhận được Signal DLL_DETACH.
Cách 2: Bạn Hook 1 API nào đó của chương trình chính (bạn cần biết chương trình chính gọi API nào), sau đó forward sang hàm do bạn viết trong dll, rồi gọi ngược lại hàm API cũ nếu cần thiết
-
21-04-2013, 05:17 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mình có đoạn code get dll vào inject vào ứng dụng đang chạy như sau
Mã:if (hHook == 0) { IntPtr hDll = LoadLibrary("C:/Users/khoat_000/Documents/visual studio 2012/Projects/test/Debug/DllTest.dll"); if (hDll == IntPtr.Zero) { int errorCode = Marshal.GetLastWin32Error(); throw new Exception(string.Format("Failed to load library (ErrorCode: {0})", errorCode)); } HookProcedure = new HookProc(CbtHookProc); int threadID = GetWindowThreadProcessId((IntPtr)window, out processHandle); hHook = SetWindowsHookEx(WH_CALLWNDPROC, HookProcedure, hDll, threadID); if (hHook == 0) { MessageBox.Show("SetWindowsHookEx Failed"); return; } } else { bool ret = UnhookWindowsHookEx(hHook); //If the UnhookWindowsHookEx function fails. if (ret == false) { MessageBox.Show("UnhookWindowsHookEx Failed"); return; } hHook = 0; button1.Text = "Set Windows Hook"; }
Mã:DWORD dwOldWndProc = 0; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam); HWND ThisHwnd(); LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { HWND hwndThis = 0; switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: hwndThis = ThisHwnd(); dwOldWndProc = SetWindowLong(hwndThis, GWL_WNDPROC, (LONG)WindowProc); case DLL_THREAD_ATTACH: hwndThis = ThisHwnd(); dwOldWndProc = SetWindowLong(hwndThis, GWL_WNDPROC, (LONG)WindowProc); case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_CLOSE: // swprintf_s(duy, MAX_PATH, L"HWND: %i", hwnd); MessageBox(NULL, NULL, "Process2", MB_OK); break; default: return CallWindowProc((WNDPROC)dwOldWndProc,hwnd,uMsg,wParam,lParam); break; }; return 0; }; HWND ThisHwnd() { HWND hWnd = 0; EnumWindows(EnumWindowsProc, (LPARAM)&hWnd); return hWnd; }; BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { DWORD dwPid = 0; GetWindowThreadProcessId(hwnd, &dwPid); if(dwPid == GetCurrentProcessId()) { *((HWND*)lParam) = hwnd; return FALSE; }; return TRUE; };
-
02-06-2013, 05:15 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
nội dung dll là bấm cái icon exit cửa app thì sẽ bay ra dialog thông báo, nhưng mà sau khi mình inject dll vào app rồi . Mình bấm nút exit của app thì chả thấy hiện tượng gì, còn của application mình viết thì có dialog xuất hiện. Theo mình nghĩ là do mình get cái Hwnd của chính app mình, làm sao để lấy đc cái hwnd của app mình inject để xử lý trong dll main vậy bạn ? Cám ơn nhiều nha [IMG]images/smilies/smile.png[/IMG]
THam khảo thêm ở đây: http://www.pinvoke.net/default.aspx/user32.findwindow
-
13-06-2013, 01:03 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cách thứ 3 là bạn dùng Injector có khả năng active cái hàm bạn viết. Đại loại như Cheat Engine.
Cách thứ 4 là bạn tạo ra các Hotkey.
Còn để lấy đc hwnd thì bạn dùng hàm FindWindow, dùng Spy++ lấy class và tên cửa sổ của app là ok ^.^.
Để dễ hiểu hơn bạn search tut hack game Pikachu của langman nhé. Mình sài CE và một số Injector thấy việc detect cái function trong dll injected rất tốt. Còn vụ Hotkey thì chắc không biết bạn đã từng hack game online bh chưa ^.^
-
13-06-2013, 07:02 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
một là share 1 function ví dụ GetMainHWnd(HWND mMainHandle)
2 là sendmessage có hwnd rồi ở DLL mình xử lý trong WindowProc()
Chắc viết cái này để làm auto game?
-
13-06-2013, 07:04 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
chặn exit game có thể bắt 2 mesage này:
case WM_QUIT:
case WM_DESTROY:
return 0;
break;
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ