百度空间 | 百度首页 
 
文章列表
 
2009-03-16 16:28

书上告诉我们等待线程退出使用WaitForSingleObject(hThread)是正确的做法。

我觉得并不是很好,为什么?

假设有这么一种情况:

用户在一个button中点击一个停止线程操作(OnThreadStop),正确的做法我们必须要在OnThreadStop中等待线程退出才可以返回。

假设这个线程在退出的时候需要通过某种回调机制,通知用户界面更新某些界面的东西,这个时候我们用户的GUI的线程却阻塞在OnThreadStop消息处理中,从而造成了死锁。

所以我觉得还是用一个事件来接受结束的通知,这样OnThreadStop在接

类别:默认分类 | 评论(1) | 浏览()
 
2008-03-06 09:50

切记不要在内核函数的栈上分配太多空间,结构体和数组必须用动态分配,不能用栈空间。

x86系统的内核栈大小是12k大小,由于每个线程都会分配一个内核栈,所以这个大小变大一点,系统的内存开销就会大大增加,所以一个系统的内核栈大小是固定。

如果栈空间被占完,有可能返回下面几个错误

0x7F: UNEXPECTED_KERNEL_MODE_TRAP with Parm1 set to EXCEPTION_DOUBLE_FAULT, which is caused by running off the end of a kernel stack.

0x1E: KMODE_EXCEPTION_NOT_HANDLED, 0x7E: SYSTEM_THREAD_EXCEPTI

类别:学习备忘录 | 评论(1) | 浏览()
 
2008-03-02 15:52

这里我只是简单谈谈我所关心的一些问题,至于IA64体系的其他细节就不提了,因为还没有学习过,并且我工作也很难涉及到这些。这里我只关心GP register,为什么只关心这个呢? IA64下在我们进行Hook时,我们必须手动的设置这个寄存器。所以必须先弄清楚这个寄存器的作用。

首先先谈谈一些基本知识点:

IA64具有128个通用寄存器,这样大大提高了函数的执行速度,因为一些局部变量不再需要保存在栈上,可以直接使用寄存器来操作。128个寄存器分别是R0-R127,其中R1就是GP register(GLOBAL POINTER)。在说明这个寄存

类别:学习备忘录 | 评论(0) | 浏览()
 
2008-02-28 16:06

KeUserModeCallback 分析

KeUserModeCallback (
    IN ULONG ApiNumber,
    IN PVOID InputBuffer,
    IN ULONG InputLength,
    OUT PVOID *OutputBuffer,
    IN PULONG OutputLength
    )

/*++

Routine Description:

    This function call out from kernel mode to a user mode function.

Arguments:

    ApiN

类别:学习备忘录 | 评论(0) | 浏览()
 
2007-10-16 16:51

今天看到一个网页空间的exploit,从来没有搞过这方面的研究,一时好奇就分析了下,下面是我分析的步骤。

1.找到clid对应的ocx(我这里分析的是个ocx控件),使用pexplorer.exe查看ocx的接口函数。

2.编写测试程序,用vc创建一个MFC工程,然后选择project-》add project-》components and controls, 在Registered ActiveX Controls中查找控件,然后insert,如果这里面没有,就需要先用regsrv32注册。

3.导入后vc自动就会生成一个控件的包装类,这样我们就可以new一个包装类,然后调用create函数创建控件的

类别:学习备忘录 | 评论(1) | 浏览()
 
2007-07-02 17:26

最近看到“av木马终结者”中有个保护毒霸的驱动,抱着学习的态度,分析了下这个驱动,下面是DriverEntry的代码。


.text:00011A10 ; int __stdcall DriverEntry(PDRIVER_OBJECT DriverObject,PIRP Irp)
.text:00011A10                     public DriverEntry
.text:00011A10 DriverEntry         proc near
.text:00011A10
.text:00011A10 Symboli

类别:学习备忘录 | 评论(1) | 浏览()
 
2007-05-30 20:28

     今天测试了下我的专业脱upx壳程序有6%的成功率,呵呵,不错.

     偶下午把程序调整了下,现在不去脱壳啦.直接在一些关键API下断点,这样很多样本都可以扫出来了哦.呵呵.估计能到10%的量.

     现在都没有考虑加密壳,无所谓啦,反正不多,只要能处理普通的压缩壳就ok啦.

不过摩托一直担心会跑飞,这个可能性还是存在的.想想有什么解决方法.

类别:默认分类 | 评论(0) | 浏览()
 
2007-05-29 17:16
          如果要学习opcode,intel的这套工具书应该是权威啦.而且intel也是个大方的主,所有的书都可以免费申请.呵呵,我申请一次竟然发给我两套.这套书有两大好处1.装b,别人一看这书就会说牛呀(呵呵,其实都没有看过)2.防身,绝对砸的死人.好了.不忽悠了.进入正题.
           关于opcode的格式这就不说啦,volume 2A中的chapter 2说的很详细,如果觉得鸟文看的不爽的话,可以看看老罗的<
类别:学习备忘录 | 评论(2) | 浏览()
 
2007-05-29 17:13

    今天用IDA分析一端代码,总觉得分析出来的代码有问题.上网一问,原来IDA真的有个bug.在IDA不知道调用函数类型的时候,堆栈恢复会出错.这样分析出来的代码在函数结束的时候,IDA会写出 sp = -xxx.表示堆栈不平衡了.

    解决方法:Option->General->Disassembly 选中Stack pointer .然后自己看代码中哪个地方堆栈恢复错误了,一般是在函数调用返回的地方堆栈恢复出错.使用ALT+K调整.这样就没有问题了.

类别:学习备忘录 | 评论(0) | 浏览()
 
2007-05-25 17:41

     最近样本囤积实在是太多啦.自己都不敢去看到底积攒了多少.实在受不了.........

这两天写了个脱壳扫描的程序,现在暂时只支持UPX.(要不怎么说专业脱UPX呢...)


     代码很简单就是用调试API啦.在内存中跑到UPX的OEP然后调扫描引擎扫呀扫呀.下午把扫DLL的部分给

加上了.开始想直接用LoadLibrary加载后再扫就ok啦.发现这样就可能感染了病毒,不爽...没有办法看看

OD咋搞的吧.分析了下od的loaddll.exe发现代码极其简单.就是in_hook了LdrpCallInitRouti

类别:学习备忘录 | 评论(0) | 浏览()
 
     
 
 
文章分类
 
     
 
文章存档
 
 
 
 
 
 
 
     
 
最新文章评论
   

windows核心编程上有更好的说明
 

你在搞递归吧?或是搞变态的代码?
 
 

申请intel书的地址好多啊
 

深邃,看不懂啊
 
     


©2009 Baidu