Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Tớ ko rõ lắm,nhưng mấy cái API để kill process tớ thấy hay dùng trong VB :

    Mã:
    Public Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As LongPublic Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As LongPublic Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As LongPublic Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As LongPublic Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As LongPublic Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As LongPublic Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As LongPublic Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As LongPublic Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As IntegerPublic Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trong đống đó chỉ có TerminateProcess là có thể kill process. Nhưng mình đã Hook và chặn hàm này rùi. Vậy mà taskkill vẫn kill ngon ớ. Sao vậy nhỉ !

  3. #3
    Ngày tham gia
    Dec 2015
    Bài viết
    0
    CÓ thể bạn hook nhầm,bạn hook bằng C hay VB,mình hook và thấy rất OK đấy,nó sử dụng hàm TerminateProcess để kill,nếu bạn không thấy an toàn có thể Hook hàm NtTerminateProcess để chặn được nhiều hơn

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn chặn hàm api của process nào và bằng phương pháp nào ? Nếu chặn hàm api của cmd thì vô dụng bởi vì taskkill là process con được cmd gọi. Thời gian taskkill tồn tại là rất ngắn. Xong việc rồi nó sẽ tự kết thúc. Mình nghĩ đó là nguyên nhân.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi RadiRadic
    CÓ thể bạn hook nhầm,bạn hook bằng C hay VB,mình hook và thấy rất OK đấy,nó sử dụng hàm TerminateProcess để kill,nếu bạn không thấy an toàn có thể Hook hàm NtTerminateProcess để chặn được nhiều hơn
    Không Hook nhầm đâu bạn àh. chỉ có thể là hook sai hàm thui [IMG]images/smilies/biggrin.png[/IMG]

    Trích dẫn Gửi bởi meoconlongvang
    Bạn chặn hàm api của process nào và bằng phương pháp nào ? Nếu chặn hàm api của cmd thì vô dụng bởi vì taskkill là process con được cmd gọi. Thời gian taskkill tồn tại là rất ngắn. Xong việc rồi nó sẽ tự kết thúc. Mình nghĩ đó là nguyên nhân.
    Mình chặn hàm TerminateProcess của kernel32.dll . Sử dụng phương pháp như trong topic HookingAPI của bạn. Lấy địa chỉ hàm thực rùi write vào phía trước cách 5 byte....

    2 Hàm thay thế đc jmp tới


    Mã:
    BOOL _stdcall ZTerminateProcess(HANDLE hProcess,UINT uExitCode){    if (GetPidFromProcHandle(hProcess) == ProtectPid)    {        return FALSE;    }    UnHookAPI("kernel32","TerminateProcess");    BOOL ans = TerminateProcess(hProcess,uExitCode);    HookAPI("kernel32","TerminateProcess",(long)ZTerminateProcess);    return ans;} BOOL _stdcall ZEndTask(HWND hWnd, BOOL fShutDown, BOOL fForce){    if (GetPidFromHwnd(hWnd) == ProtectPid && call_pid != ProtectPid)    {        return FALSE;    }     UnHookAPI("user32","EndTask");    BOOL ans = _EndTask(hWnd, fShutDown, fForce);    HookAPI("user32","EndTask",(long)ZEndTask);    return ans;}
    Tớ chặn lun cả OpenProcess nữa mà cũng ko ăn thua. Mặc dù nó work ok với ProcExp và TaskMan

    P/s: cái y!m meoconlongvang2 sao dạo này hem thấy online vậy

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Vấn đề ở đây là inject dll vào taskkilll. Trước tiên bạn hãy hook hàm CreateProcess và kiểm tra xem có tiến trình nào tên là taskkill chạy hay ko. Nếu có, bạn dùng CreateRemoteThread inject dll vào và hook. Bạn làm thử xem.

    PS : dạo này bận làm khóa luận tốt nghiệp nên ko lên y!m được.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Taskkill.exe tắt process bằng API nào ?

    Không biết là Taskkill.exe của Windows xài API nào để kill process nhỉ. Xem import ở PE thì thấy có TerminateProcess nhưng thử chặn 2 hàm TerminateProcess và EndTask rồi mà vẫn không có kết quả. Giả thuyết cuối của gianghoplus là nó dùng WMI. Mình đang bí. Các bác có cao kiến gì không ?

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •