首页
社区
课程
招聘
[原创]pediy2-02 提交
发表于: 2007-8-30 13:16 5937

[原创]pediy2-02 提交

2007-8-30 13:16
5937
【原创】pediy2-02  提交
思路如下:
不知道Ring3的算不算
首先用SetWindowsHookEx上一个GetMessage的钩子
然后广播一个消息 这样所有的窗体就被注入了,
然后判断是否是目标进程  直接ExitProcess即可
上传文件为编译程序
Source.rar为 VC 8.0 sp1工程文件
Release.rar为编译好的测试文件
测试平台:Windows Xp Sp2
运行pediy2-02.exe即可

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
2
说的很清楚了可以结束任务。 任务解释了自然进程就结束了。
没有什么好解释的 就是FindWindow  --〉调用EndTask这个API。

不过感觉好麻烦 难道15种方法就去建立15个工程~~~~

工程文件和 执行文件在附件里面
现在努力发掘Ring3的方法。
上传的附件:
2007-8-30 19:39
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
3
HANDLE hToken;
        ::OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken);
        BOOL bSus;
        bSus = ::SetPrivilege(hToken,SE_DEBUG_NAME,TRUE);
        HWND hWnd = ::FindWindowA(NULL,"CrackMeApp");
        printf("SetPrivilege %s \r\n",bSus ? "Done" : "Failed");
        DWORD dwThreadId;
        dwThreadId= ::GetWindowThreadProcessId(hWnd,NULL);
        HANDLE hThread = OpenThread(THREAD_ALL_ACCESS,FALSE,dwThreadId);
        ::TerminateThread(hThread,NULL);
        printf("TerminateThread :%d \r\n",GetLastError());

大概就是这样
驱动拦截了 OpenProcess可以没有拦截OpenThread...所以。直接把主线程杀掉就完成任务了。
上传的附件:
2007-8-30 19:55
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
4
方法很简单 就是恢复 SSDT .只不过说用PhysicalMemory罢了.
思路也很明显.
在用户层载入\\ntoskrnl.exe
找到KeServiceDescriptorTable然后
计算物理内存对应的地址.
比较一下
然后在写进去就是了
然后直接用OpenProcess即可完成目标任务
上传的附件:
2007-8-30 22:06
0
游客
登录 | 注册 方可回帖
返回
//