-
14-12-2015, 03:09 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
lấy adress thread msgbox không hiện
khi em ịnect vao process nó không hiện messagebox vậy ạ
chỉ em với[IMG]images/smilies/17.gif[/IMG]
Mã:DWORD WINAPI GetThreadStartAddress(HANDLE hThread) { NTSTATUS ntStatus; HANDLE hDupHandle; DWORD dwStartAddress; pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQueryInformationThread"); if(NtQueryInformationThread == NULL) return 0; HANDLE hCurrentProcess = GetCurrentProcess(); if(!DuplicateHandle(hCurrentProcess, hThread, hCurrentProcess, &hDupHandle, THREAD_QUERY_INFORMATION, FALSE, 0)) { SetLastError(ERROR_ACCESS_DENIED); return 0; } ntStatus = NtQueryInformationThread(hDupHandle, ThreadQuerySetWin32StartAddress, &dwStartAddress, sizeof(DWORD), NULL); CloseHandle(hDupHandle); if(ntStatus != STATUS_SUCCESS) { return 0; } return dwStartAddress; } int main() { CHAR cMessage[9]; wsprintf(cMessage, "%p", GetThreadStartAddress(GetCurrentThread())); MessageBox(HWND_DESKTOP, cMessage, "Start Address", MB_ICONINFORMATION | MB_OK); return 0; }
View more random threads:
- Tính memory leak trong C++ như thế nào?
- Đọc dữ liệu từ cổng COM trong VC++?
- Cách tạm dừng luồng trong lập trình đa luồng với MFC (VC++ 6.0)??
- AddString vào Combobox ???
- Chuột Phải trên ListBox Ra Menu ???
- Di chuyển bằng phím mũi tên trong C++
- lỗi với từ khóa enum trong C
- lỗi C2665 trong lập trình MFC sửa như thế nào ?
- source inject DLL | WriteProcessMemory có tác dụng gì?
- Đối số là kiểu template thì truyền giá trị thế nào?
-
15-12-2015, 03:14 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
anh trai anh có dùng yahoo không vậy anh
- - - Nội dung đã được cập nhật ngày 15-12-2015 lúc 07:45 PM - - -
không thì cho em xin facebook cũng dc ạ thank anh nhiều
]
- - - Nội dung đã được cập nhật ngày 15-12-2015 lúc 07:46 PM - - -
anh có face book không anh cho em xin với ^^
- - - Nội dung đã được cập nhật ngày 15-12-2015 lúc 07:46 PM - - -
anh có facebook cho em xin ket ban voi anh oi ^^
- - - Nội dung đã được cập nhật ngày 15-12-2015 lúc 07:47 PM - - -
Gửi bởi MHoang
- - - Nội dung đã được cập nhật ngày 15-12-2015 lúc 08:14 PM - - -
em thay băng NULL nó vẫn không hiện anh ạ
MessageBox(NULL, cMessage, "Start Address", MB_ICONINFORMATION | MB_OK);
-
15-12-2015, 03:52 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nếu nó không hiện bạn đưa tất cả mã lên đây kể cả các biến toàn cục các #include và cho biết dùng IDE nào và khởi động dự án ra sao, anh em sẽ giúp!
-
15-12-2015, 05:41 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thay HWND_DESKTOP bằng NULL
-
16-12-2015, 10:22 AM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
đây anh trai
Mã:#include <windows.h> typedef LONG NTSTATUS; typedef NTSTATUS (WINAPI *pNtQIT)(HANDLE, LONG, PVOID, ULONG, PULONG); #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #define ThreadQuerySetWin32StartAddress 9 DWORD WINAPI GetThreadStartAddress(HANDLE hThread) { NTSTATUS ntStatus; HANDLE hDupHandle; DWORD dwStartAddress; pNtQIT NtQueryInformationThread = (pNtQIT)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtQueryInformationThread"); if(NtQueryInformationThread == NULL) return 0; HANDLE hCurrentProcess = GetCurrentProcess(); if(!DuplicateHandle(hCurrentProcess, hThread, hCurrentProcess, &hDupHandle, THREAD_QUERY_INFORMATION, FALSE, 0)) { SetLastError(ERROR_ACCESS_DENIED); return 0; } ntStatus = NtQueryInformationThread(hDupHandle, ThreadQuerySetWin32StartAddress, &dwStartAddress, sizeof(DWORD), NULL); CloseHandle(hDupHandle); if(ntStatus != STATUS_SUCCESS) { return 0; } return dwStartAddress; } int main() { CHAR cMessage[9]; wsprintf(cMessage, "%p", GetThreadStartAddress(GetCurrentThread())); MessageBox(HWND_DESKTOP, cMessage, "Start Address", MB_ICONINFORMATION | MB_OK); return 0; }
-
16-12-2015, 02:32 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
và cho biết dùng IDE nào và khởi động dự án ra sao, anh em sẽ giúp!
Mình đã thử cả 2 đều được : HWND_DESKTOP và NULL đều chạy tốt, hiện thông báo bình thường. Vấn đề có lẽ nằm ở các IDE khác không tương thích Windows. Muốn rõ ràng hơn thì làm như ý mình nhắc lại ở trên.
-
16-12-2015, 03:45 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi MHoang
- - - Nội dung đã được cập nhật ngày 16-12-2015 lúc 08:45 PM - - -
anh cho em xin facebook dc không ạ ^^
-
17-12-2015, 02:11 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
em hỏi câu cuối thôi anh thế giờ messagebox hien ra rồi làm thế nào để lấy sdress thread của 1 exe khác hả anh khi tìm ra rồi thì dùng hàm suspend thread trong code vậy anh câu cuối cùng em hỏi
chỉ em với
em build gặp 2 lỗi LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/dddd.exe : fatal error LNK1120: 1 unresolved externals
-
17-12-2015, 04:43 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Đúng là lỗi ở mình do chủ quan quá vì không còn dùng VC++6.0
Có 2 cách như sau :
Cách 1 : Dùng tập tin *.c
_ Vì kiểu dự án win32 trong VC++6.0 mặc định tạo ra *.cpp nên phát sinh lỗi unresolved external symbol _WinMain@16 .
Mở Notepad rồi Copy cái mã trên vào rồi lưu ra thành tập tin với đuôi Any.c
1. Khởi động VC++6.0
2. File -> New -> Projects -> Win32 Application. Chọn tên dự án, nơi lưu trữ. OK, Finish, OK.
3. Di chuyển hay copy Any.c vào thư mục dự án vừa tạo.
4. Project -> Add to Project -> Files...
5. Chọn Any.c rồi OK.
6. Biên dịch và chạy.
Cách 2 : Dùng tập tin *.cpp
_ Làm hoàn toàn như #8 nhưng thay hàm main của bạn bằng WinMain.
Mã:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow){ CHAR cMessage[9]; wsprintf(cMessage, "%p", GetThreadStartAddress(GetCurrentThread())); MessageBox(HWND_DESKTOP, cMessage, "Start Address", MB_ICONINFORMATION | MB_OK); return 0;}
-
17-12-2015, 06:35 PM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Không ngoài dự đoán của mình, đây là mã để xây dựng exe chứ không phải dll.
1. Khởi động VC++6.0
2. File -> New -> Projects -> Win32 Application. Chọn tên dự án, nơi lưu trữ. OK, Finish, OK.
3. File -> New -> Files -> C++ Source File. Chọn tên tập tin. OK.
4. Copy mã ở trên vào cửa sổ soạn thảo đang hiển thị.
5. Biên dịch và chạy.
Thế thôi, chào nhé.
P/S : Phét của mình đang bị mấy em gái chiếm lĩnh hết rồi nên không bàn chuyện lập trình trên đó được.
Pallet nhựa Lâm Đồng giải pháp hoàn hảo cho nhà kho Pallet nhựa Lâm Đồng là một giải pháp đa năng và hiệu quả trong việc vận chuyển và lưu trữ hàng hóa. Trong đó, pallet nhựa Lâm Đồng không chỉ đáp...
Pallet nhựa Lâm Đồng giải pháp...