-
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:
- Các trình gõ tiếng Việt làm nhiễu Keyboard hook, cách giải quyết ?
- Tính số Icon Trong 1 File exe ?
- Xử lý giới hạn di chuyển trong game Xếp Hình?
- Tạo Project từ file Makefile.in, MAke.am trong VC++ 9 command prompt
- Cách xác nhận quyền admin khi process thao tác tới hệ điều hành?
- Làm sao capture message của listview bên ngoài từ ứng dụng của mình ?
- Hook keyboard ko chạy khi chơi game full screen(Warcraft)
- Tạo Phím tắt trong nội bộ ứng dụng ???
- Hoạt động của hàm accept connection trong Winsock(Lap trinh mạng)?
- Hàm native API NT CreateProcess
-
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;
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...