2009-03-16 16:28
书上告诉我们等待线程退出使用WaitForSingleObject(hThread)是正确的做法。
我觉得并不是很好,为什么?
假设有这么一种情况:
用户在一个button中点击一个停止线程操作(OnThreadStop),正确的做法我们必须要在OnThreadStop中等待线程退出才可以返回。
假设这个线程在退出的时候需要通过某种回调机制,通知用户界面更新某些界面的东西,这个时候我们用户的GUI的线程却阻塞在OnThreadStop消息处理中,从而造成了死锁。
所以我觉得还是用一个事件来接受结束的通知,这样OnThreadStop在接 |
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 |
2008-03-02 15:52
这里我只是简单谈谈我所关心的一些问题,至于IA64体系的其他细节就不提了,因为还没有学习过,并且我工作也很难涉及到这些。这里我只关心GP register,为什么只关心这个呢? IA64下在我们进行Hook时,我们必须手动的设置这个寄存器。所以必须先弄清楚这个寄存器的作用。
首先先谈谈一些基本知识点:
IA64具有128个通用寄存器,这样大大提高了函数的执行速度,因为一些局部变量不再需要保存在栈上,可以直接使用寄存器来操作。128个寄存器分别是R0-R127,其中R1就是GP register(GLOBAL POINTER)。在说明这个寄存 |
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 |
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函数创建控件的 |
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
|
2007-05-30 20:28
今天测试了下我的专业脱upx壳程序有6%的成功率,呵呵,不错.
偶下午把程序调整了下,现在不去脱壳啦.直接在一些关键API下断点,这样很多样本都可以扫出来了哦.呵呵.估计能到10%的量.
现在都没有考虑加密壳,无所谓啦,反正不多,只要能处理普通的压缩壳就ok啦.
不过摩托一直担心会跑飞,这个可能性还是存在的.想想有什么解决方法. |
2007-05-29 17:16
如果要学习opcode,intel的这套工具书应该是权威啦.而且intel也是个大方的主,所有的书都可以免费申请.呵呵,我申请一次竟然发给我两套.这套书有两大好处1.装b,别人一看这书就会说牛呀(呵呵,其实都没有看过)2.防身,绝对砸的死人.好了.不忽悠了.进入正题.
关于opcode的格式这就不说啦,volume 2A中的chapter 2说的很详细,如果觉得鸟文看的不爽的话,可以看看老罗的< |
2007-05-29 17:13
今天用IDA分析一端代码,总觉得分析出来的代码有问题.上网一问,原来IDA真的有个bug.在IDA不知道调用函数类型的时候,堆栈恢复会出错.这样分析出来的代码在函数结束的时候,IDA会写出 sp = -xxx.表示堆栈不平衡了.
解决方法:Option->General->Disassembly 选中Stack pointer .然后自己看代码中哪个地方堆栈恢复错误了,一般是在函数调用返回的地方堆栈恢复出错.使用ALT+K调整.这样就没有问题了. |
2007-05-25 17:41
最近样本囤积实在是太多啦.自己都不敢去看到底积攒了多少.实在受不了.........
这两天写了个脱壳扫描的程序,现在暂时只支持UPX.(要不怎么说专业脱UPX呢...)
代码很简单就是用调试API啦.在内存中跑到UPX的OEP然后调扫描引擎扫呀扫呀.下午把扫DLL的部分给
加上了.开始想直接用LoadLibrary加载后再扫就ok啦.发现这样就可能感染了病毒,不爽...没有办法看看
OD咋搞的吧.分析了下od的loaddll.exe发现代码极其简单.就是in_hook了LdrpCallInitRouti |
|
| |