查看文章 |
[TIPS]用NtAddAtom来搜索shellcode
2009-12-28 13:35
目前search shellcode的主要方法还是用SEH/IsBadReadPtr()/NtDisplayString 系统调用等等,这些方法都各有利弊,例如SEH的方法就不太适用于高版本的操作系统(SafeSeh),IsBadReadPtr()搜索效率以及NtDisplayString的调用号兼容的问题。 Dave/Alex在邮件列表和Twitter上分别谈到了用NtAddAtom来实现搜索shellcode的方法,而且该系统调用在NT以上的系统的调用号都是一致的(0x08),实现起来的代码也比较小。 NTSTATUS NTAPI NtAddAtom(IN PWSTR AtomName, IN ULONG AtomNameLength, OUT PRTL_ATOM Atom) NtAddAtom 有三个参数,分别是传入的指针,长度,和传出的Atom指针。NtAddAtom内部是用SEH和 ProbeForRead来判断传入的地址是否可读,并且把可写的指针通过第三个参数返回。 返回值如果是0xc0000033就代表返回的指针是可写的,然后我们就可以直接搜索这个指针指向的内容来判断是否是实现功能的shellcode。 |
最近读者:

