笔记本电脑从零开始学习计算机基础

刚刚阅读1回复0
玛丽儿
玛丽儿
  • 管理员
  • 注册排名2
  • 经验值546945
  • 级别管理员
  • 主题109389
  • 回复0
楼主

笔记本电脑从零开始学习计算机基础

建议从三个方面入手:

1、硬件方面,找几个报废的笔记本,先学会拆装,然后逐一识别各种形成笔记本的硬件。

2、学习安装各种系统,硬盘分区,bios设置等操作。

3、学习基本的办公软件,word,excel,ppt,学会安装卸载软件,优化系统等操作

学习这三项,即使电脑开始了。

如何学习计算机的基本操作?

笔记本电脑从零开始学电脑基础

笔记本电脑从零开始学电脑基础

SSDT表中的NtopenProcess释放驱动HOOK,但对参数过滤不严密,只过滤 PROCESS_TERMINATE, PROCESS_WRITE, XXXX(忘了),三种。然后比较PID放在全局变量中,可以发送 DeviceIoControl 改变这个值~

因此,我们仍然可以用其他参数打开这个过程(只要不包括这三个参数)~

然而,似乎每个人都对这个话题不感兴趣,所以代码不会被释放。如果你想直接给我发信息,顺便问一下刀客公开他的方法~~

1.使用 FindWindow 方法,然后想到窗口发送 WM_CLOSE 的消息

2.找到过程的线程, PostThreadMessage 发送 WM_QUIT 消息结束了主线程

3.OpenThread ---> TerminateThread

4.RemoteExitProcess,以 PROCESS_CREATE_THREAD|VM_OPERATION打开过程,然后创建一个远程线程,线程的开始地址是 ExitProcess 参数0 ,程序自行断开.

5.首先确保过程可以打开(8和9介绍),然后创建一个线程 DebugActiveProcess 然后他什么都不做退出线程,程序没人接管,就挂了~

6.以 VM_OPERATION打开过程, 然后调用 NtUnmapViewOfSection 卸载他的ntdll.dll 此时,程序还没有崩溃,然后随意发送消息,其程序一旦调用就会直接异常,但ntdll已经挂断,用户空间无法异常处理,自我切断~(我觉得这个方法应该和往过程空间写垃圾数据的方法一样)

7.发送键盘 ESC 单击消息(此消息不能与发送窗口消息相同).

8.以下是重点介绍。
:-----------------------------

因为crackmeapp打开了驱动文件句柄,所以不能直接卸载驱动。因此,有必要关闭这个句柄.

那么如何获得远程文件句柄呢?首先想到的是 DuplicateHandle ,

BOOL DuplicateHandle(

HANDLE hSourceProcessHandle, // handle to source process

HANDLE hSourceHandle, // handle to duplicate

HANDLE hTargetProcessHandle, // handle to target process

LPHANDLE lpTargetHandle, // duplicate handle

DWORD dwDesiredAccess, // requested access

BOOL bInheritHandle, // handle inheritance option

DWORD dwOptions // optional actions

);

先看最后一个参数:

DUPLICATE_CLOSE_SOURCE

Closes the source handle. This occurs regardless of any error status returned.

DUPLICATE_SAME_ACCESS

Ignores the dwDesiredAccess parameter. The duplicate handle has the same access as the source handle.

也就是说,我们选择DUPLICATE_CLOSE_SOURCE时,远程句柄将自动关闭

第一个参数,我们可以直接OpenProcess(PROCESS_DUP_HANDLE ,XXX)获得,

第二个参数很难找到,那就是在CrackMeApp的过程中打开驱动程序的句柄。为了得到这个,我们必须使用ntdll.dll中的一个 API, ZwQuerySystemInformation 我们可以在整个系统中找到所有的句柄信息,然后判断哪些句柄属于 CrackMeapp进程,并且ObjectTypenumber类型是文件类型。有关此实现的详细信息,请参阅我的实现代码.

typedef struct _SYSTEM_HANDLE_INFORMATION { // Information Class 16

ULONG ProcessId;

UCHAR ObjectTypeNumber;

UCHAR Flags; // 0x01 = PROTECT_FROM_CLOSE, 0x02 = INHERIT

USHORT Handle;

PVOID Object;

ACCESS_MASK GrantedAccess;

} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

这样,在CrackMeapp的过程中,通过CreateFile打开的所有句柄都可以找到。一般来说,有三个句柄。我们可以关闭它们,也可以只关闭最后一个句柄(因为最后一个句柄是打开驱动程序,而打开驱动程序是最后一次调用CreateFile).

我得到了第二个参数,下面的参数很简单~

于是一调用这个 DuplicateHandle ,我们不仅关闭了远程句柄,还得到了驱动句柄,为所欲为~~

所以我的第八种方法是将IO请求发送到crackmeapp的驱动程序,并要求它将保护过程的PID修改为0,这样我们就可以用传统的方法结束它(Open+Terminate)

9.如果上述方法的远程句柄关闭,我们自然可以卸载驱动器~所以这就是去 Zwunloaddriver或停止其Servicer.这样再用常规方法结束~~~

10.所有win32子系统的过程中都会有一个句柄.在exe过程中,CrackMeApp.exe自然也在,所以我们可以把它拿走 csrss.exe 给里面的句柄 dup 过来自己用,DUP过来的方法大致和上面一样,但是判断过程应该是csrs,类型应该是5(过程句柄的类型),然后对每个进程句柄做一个ZwQueryInformationProcess() 参数为 BASIC_INFORMATION=0 查询,看看这个句柄是否是CrackMeapp ,如果是直接用的话,TerminateProcess~

---------------以下是使用驱动程序的结束-----------

11.使用驱动patch来保护其PID值,然后在用户空间中使用常规方法~

12.用驱动器恢复SSDT中的ZwopenProcess。在这里,我懒得直接硬编码,调用驱动器自己恢复SSDT的函数,呵呵~~之后用户空间中的常规方法(这和11不一样)

13.直接调用驱动器 NtopenProcess绕过SSDT HOOK就可以了,但是需要注意的是,首先要把它放在首位。 KTHREAD 结构体里的 PreviousMode 将值改为KernelMode,否则可能会失败~

获取句柄后,调用ZwterminateProcess,不需要修改Previousmode,直接使用~

14.不同于13的方法是打开句柄的方法,使用
PsLookupProcessByProcessId+ObopenobjectByPointer的方法,然后调用 ZwTerminateProcess~(这也是不同的,因为规则上说Obxx和Ntxx是不同的API)

15.最后一个,首先获取CrackMeapp线程的TID,然后根据 PsLookupThreadByThreadId 获取 EThread 在APC过程函数中,主要执行指针,然后将APC插入该线程 ZwTerminateProcess( 0xfffffff, 0 );这个东西就是结束自己的意思(呵呵,这个方法是我从Icesword中挑出来的)~~本来想调用Nt//ZwTerminateThread,结果函数没有导出就要自己找,简单点ZwterminateProcess。.

我的方法比较普通,和你差不多

只有四种方法用于驱动

方法11:

NtopenProcess在驱动中获得句柄, 然后TerminateProcess在驱动中

方法12:


PslokuprocessbyProcessid获得Processs,然后切换到进程空间,最后

ZwTerminateProcess(NULL, 0);

方法13:

通过ObopenobjectByPointer获取句柄,然后Terminateter

方法14:

恢复SSDT(ZwOpenProcess),然后在应用层直接OpenProcess,Terminates

0
回帖 返回教育

笔记本电脑从零开始学习计算机基础 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息