首页
社区
课程
招聘
[原创]第二阶段第二题
发表于: 2007-9-1 19:22 7459

[原创]第二阶段第二题

2007-9-1 19:22
7459
来个最简单的吧
代码:
#include <windows.h>

int main(int argc, char *argv[])
{
    HWND hwin = FindWindow(NULL,"crackmeapp");
    SendMessage(hwin,WM_CLOSE,0,0);
    return 0;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
2
// 窗口置前,发送alt f4
#include <windows.h>
#pragma comment(lib,"user32")
int main(int argc, char *argv[])
{
    HWND hwin = FindWindow(NULL,"crackmeapp");
    SetForegroundWindow(hwin);
    keybd_event(18,MapVirtualKey(18,0),0,0);   
    keybd_event(115,MapVirtualKey(115,0),0,0);   
    keybd_event(115,MapVirtualKey(115,0),KEYEVENTF_KEYUP,0);   
    keybd_event(18,MapVirtualKey(18,0),KEYEVENTF_KEYUP,0);   
    return 0;
}
上传的附件:
2007-9-1 20:03
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
3
////////////头文件////////////////////////////////////////////////////////////

#include <stdio.h>
#include <windows.h>
#include <tlhelp32.h>

////////////宏定义////////////////////////////////////////////////////////////

////////////全局变量//////////////////////////////////////////////////////////

////////////函数定义//////////////////////////////////////////////////////////
DWORD WINAPI GetPIDbyName(LPTSTR lpName)
{
        HANDLE m_Snap = INVALID_HANDLE_VALUE;
        PROCESSENTRY32 pe = {sizeof(pe)};
        DWORD ret = NULL;
       
        {
                m_Snap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
                if (m_Snap == INVALID_HANDLE_VALUE) goto finally;
                if (!Process32First(m_Snap, &pe)) goto finally;
                do if(!lstrcmpi(pe.szExeFile,lpName))
                {
                        ret = pe.th32ProcessID;
                        goto finally;
                }
                while (Process32Next(m_Snap, &pe));
        }

        finally: {
                if (m_Snap != INVALID_HANDLE_VALUE)
                        CloseHandle(m_Snap);
        }
        return ret;
}

bool TerminateAProcess(DWORD dwPid)
{
    HANDLE hThreadSnap = NULL;
    THREADENTRY32 te32;
    BOOL bThreadFind = FALSE;
    hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,NULL);
    if(hThreadSnap)
    {
        te32.dwSize = sizeof(THREADENTRY32);
        bThreadFind = Thread32First(hThreadSnap,&te32);
        while(bThreadFind)
        {
            if(te32.th32OwnerProcessID == dwPid)
            {
                HANDLE hThread = NULL;
                hThread = OpenThread(THREAD_ALL_ACCESS,FALSE,te32.th32ThreadID);
                if(hThread)
                {
                    TerminateThread(hThread,0);
                    CloseHandle(hThread);
                }
            }
            te32.dwSize = sizeof(THREADENTRY32);
            bThreadFind = Thread32Next(hThreadSnap,&te32);
        }
        CloseHandle(hThreadSnap);
    }
    return TRUE;
}

int main(int argc, char *argv[])
{
    TerminateAProcess(GetPIDbyName("crackmeapp.exe"));
    return 0;
}
上传的附件:
2007-9-1 21:26
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
4
第三个ring3下恢复被hook的ssdt open processterminate process
上传的附件:
2007-9-2 10:50
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
5
ring3下恢复被hook的ssdt Createremotethread ,exitprocess
2007-9-2 10:52
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
6
重新传,ring3下恢复被hook的ssdt Createremotethread ,exitprocess
上传的附件:
2007-9-2 10:53
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
7
第三个ring3下恢复被hook的ssdt -->create remote thread,破坏该进程
上传的附件:
2007-9-2 11:00
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
8
alt f4的那个,代码重写下
#include <windows.h>
#pragma comment(lib,"user32")
int main(int argc, char *argv[])
{
    HWND hwin = FindWindow(NULL,"crackmeapp");
   
    SetForegroundWindow(hwin);
    Sleep(20);
    keybd_event(18,MapVirtualKey(18,0),0,0);   
    keybd_event(115,MapVirtualKey(115,0),0,0);   
    keybd_event(115,MapVirtualKey(115,0),KEYEVENTF_KEYUP,0);   
    keybd_event(115,MapVirtualKey(115,0),0,0);   
    keybd_event(115,MapVirtualKey(115,0),KEYEVENTF_KEYUP,0);   
    keybd_event(18,MapVirtualKey(18,0),KEYEVENTF_KEYUP,0);   
    return 0;
}
2007-9-2 11:03
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
9
上面都是应用层的,驱动的没有环境做,说下思路吧,
一种上面一样,恢复ssdt中的7A处的NtOpenProcess,然后该怎么杀就怎么杀,
这个代码也是一堆
{openprocess,terminate}
{createremotethread,exitprocess}

另外采用EPROCESS结构,获取每个线程,然后用PspTerminateThreadByPointer结束每个线程.
这些网上代码都很多的.

另外进程创建以后,windows对象管理器中有handle,但是这样做实在是太得不偿失了,
甚至我们还可以0x0-0xffff枚举句并,呵呵呵,ObReferenceObjectByHandle,枚举出来,比较特征也应该可以做.
2007-9-2 11:33
0
游客
登录 | 注册 方可回帖
返回
//