对于下面这句代码大家一定不陌生: ls > test.txt 1 ls > test.txt “ >” 将输出重定向至test.txt文件,但是为什么>能重定向输出,其中的原理又是什么呢?接下来就说说IO重定向。 1.描述符表(descriptor table)– 每个进程都有各自的表 file descriptor(fd)...

在IDA动态调试so库这篇文章中讲了基本的动态调试方法,但是这种方法有一个缺点,就是只能在进程运行起来之后才能attach上,也就是说这时进程已经将so库加载进内存并且已经执行完JNI_OnLoad,所以只需要在JNI_OnLoad函数中完成一些反调试措施,就无法使用上篇文章所介绍的方法来动态调试。这篇文章就介绍动态调试的另一种方法:直接在JNI_OnLoad函数上下断点。 另外,上...

1.ptrace系统调用 Linux下ptrace系统调用是进程调试中最重要的一个函数。许多调试器如gdb,IDA都是基于ptrace的调试器。接下来就来看看ptrace这个函数: ptrace头文件在: C #include<sys/ptrace.h> 1 #include<sys/ptrace.h> 函数原型为: C ...

前面几篇文章介绍了聊天室中使用到的模块,回顾看这:wxpython模块,asyncore模块,会使用这几个模块后,聊天室就很容易实现了,当然还有一些需要注意的地方在这篇文章会一一介绍。 1.服务器及客户端数据处理流程 Server接受客户端的连接,连接上之后为每一个客户端生成一个ChatSession,ChatSession负责与客户端进行原始数据的收发,当收到原始数据后,ChatSession将数据丢给Ro...

前一篇文章介绍了网络聊天室中的界面,回顾看这。asyncore模块封装了底层的异步操作(比如poll之类),使得我们能很方便使用异步socket。关于这个模块更多的介绍请看官方文档。当然,如果仅仅是介绍如何使用这个模块,那这篇文章就没什么意思了,所以这篇文章将更进一步,讲讲“为什么”,然后从源码的角度来理解这个模块。 1.CPU密集型和IO密集型 在讲为什么之前先来理解一个概念:...

2014年就这么过去了,在这过去的20多年来,我觉得2014年对我而言是最不平凡的一年,这一年内发生了太多事:考研,调剂,录取,毕业,2个月的工作,学车,家里发生了点小情况,写blog,适应新环境,一个学期的graduate生活等等等等。总结起来,这一年让我对3个词有了更深的理解:独立,思考,责任。 小初高都在父母的陪伴下度过,而考研是迄今为止我独立做出的最重大的决定,这一路过来尝遍...

+
跳转到评论