摘要: 帮老丁调试他的xfa程序,这个程序有段错误。用gdb调试,bt查看堆栈信息的时候可以比较明确地定位到几个函数去,但是懒得去一步步查看。想起strace来跟踪一下系统调用。strace -f -o generateallxfa.strace ./generateallxfa -ruleno 1 -rulefile ./experiment/ftp-refined.re1) processing regex:: <.*[sS][iI][tT][eE]#.*[cC][hH][mM][oO][dD]> <set_only_bit>[root@localhost XFA]# ca 阅读全文
posted @ 2012-04-21 16:55 yarpee 阅读(1294) 评论(0) 推荐(0) 编辑
摘要: 在做风行软件的协议分析,在整个软件的协议分析过程中,了解到了fsp文件就是种子文件,其结构就是普通的BT种子结构(.torrent),也了解到了目前设备上规则的阻断主要是采用阻断请求ls3.fspcdn.com下载fsp种子这个过程。 来nsfocus后分析了好多p2p软件,例如QVOD,还有目前的风行,bittorrent等等,在这里饶有兴趣的想开发一个BT下载软件(linux版,并且可能会进行win版开发)。自己将在这边不断地补充BT的日志,最终完成这个软件版本。后期将有自己对这些软件的逆向分析文章。达到对P2P软件分析的一个比较深入的了解。首先是BT种子解析: BT种子文件使用了一种叫b 阅读全文
posted @ 2012-04-21 16:51 yarpee 阅读(1758) 评论(0) 推荐(0) 编辑
摘要: :"=&r"(val):"r"(1),"r"(lock):"&" : Means that this operand is an earlyclobber operand, which is modified before the instruction is finished using the input operands. Therefore, this operand may not lie in a register that is used as an input operand or 阅读全文
posted @ 2012-04-21 16:24 yarpee 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 1.一个采用补码的系统,负数的范围比正数的范围大1。举例如下, 8位带符号数的取值范围是[-2^7, 2^7 – 1]. 如果n=-2^7,那么-n = ?因此,为了防止出现负值转换为正值时出现的溢出,应该不将负值转换为正值。 因此,将所有正数转换为负数。同时,增加了一个printneg函数。这个函数打印负数。2. 负数求余的结果是正,还是负?举例如下, -5 % 10 = -5可以,只要-5 / 10 = 0就行。 -5 % 10 = 5也可以,只要-5 / 10 = -1 就行。 不同的芯片得出的结果也是不一样的。 因此,为了保证在任何芯片上求余结果相同,增加了一段处理代码。null指针并 阅读全文
posted @ 2012-04-20 17:45 yarpee 阅读(196) 评论(0) 推荐(0) 编辑
摘要: pid=fork()fork()内会用一段嵌入式汇编进行系统调用:int 0x80(具体代码可参见内核版本0.11的unistd.h文件的133行_syscall0函数)。这时进入内核根据此前写入eax的系统调用功能号 便会运行sys_fork系统调用。接着,sys_fork中首先会调用C函数find_empty_process产生一个新的进程,然后会调用copy_process将父进程的内容复制给子进程,但是子进程tss中的eax值赋值为0(这也是为什么子进程中返回0的原因),当赋值完成 后,copy_process会返回新进程(该子进程)的pid,这个值会被保存到eax中。这时子进程就产生 阅读全文
posted @ 2012-04-20 11:30 yarpee 阅读(301) 评论(0) 推荐(0) 编辑
摘要: #define assert(e) if (!e) assert_error(__FILE__,__LINE__)#define assert(e) \ ((void)((e)||_assert_error(__FILE__,__LINE__)))#define T1 struct foo *typedef struct foo *T2在类型定义的时候,正确的使用typedef可以更加通用一些3)宏不是一个语句,而是一个表达式。如下例子,#define assert(e) if(!(e)) _assert_error(__FILE__, __LINE__)如果程序员使用宏的方法如下,If (x 阅读全文
posted @ 2012-04-18 14:04 yarpee 阅读(248) 评论(0) 推荐(0) 编辑
摘要: c11的特性,用一个宏来巧妙实现#define AlignOf(type_) (offsetof(struct { char c; type_ t; }, t))http://wangcong.org/blog/archives/1924http://wangcong.org/blog/archives/category/%E7%BC%96%E7%A8%8Bhttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3093.htmlhttp://imcc.blogbus.com/logs/144093548.html 阅读全文
posted @ 2012-04-18 13:28 yarpee 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 看C陷阱,一些细节要注意,可能平常你想当然就写了,但是要是换成另一种情况,你一伙可能发现不了为什么#include <stdio.h>main(){ char c; while((c = getchar())!=EOF) putchar(c);}http://baike.baidu.com/view/751665.htmgetchar()返回是int,所以如果像上述用char c来的话,会出现截断,从而造成一些错误 阅读全文
posted @ 2012-04-15 20:30 yarpee 阅读(197) 评论(0) 推荐(0) 编辑
摘要: >>> re.findall("a(b)?", "ab")['b']>>> re.findall("ab?", "ab")['ab']>>> re.findall('a(?:b)?', 'ab')['ab'](?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模 阅读全文
posted @ 2012-04-13 10:49 yarpee 阅读(1619) 评论(0) 推荐(0) 编辑
摘要: 4月的书单计划:1.C++反汇编揭秘看完并完全理解2.复习数据结构(看大话数据结构)3.复习APUE,并深入理解掌握4.复习C缺陷5.大致阅读unix编程艺术,体会思想关注细节,掌控细节,思考为什么这样实际阅读pycurl,liburl,curl源码开始python版爬虫工具的编写1.按照knowsec的要求编写2.对于下载类增加断点续传,断点下载,支持IPv6特性 阅读全文
posted @ 2012-04-12 11:12 yarpee 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 参考链接:http://blog.csdn.net/li_yang98/article/details/5871663 阅读全文
posted @ 2012-04-11 19:51 yarpee 阅读(426) 评论(0) 推荐(0) 编辑
摘要: http://www.itmaybeahack.com/homepage/iblog/architecture/C551260341/E20081031204203/index.htmlhttp://stackoverflow.com/questions/383738/104-connection-reset-by-peer-socket-error-or-when-does-closing-a-socket-resuhttp://stackoverflow.com/questions/441374/why-am-i-seeing-connection-reset-by-peer-error 阅读全文
posted @ 2012-04-09 20:28 yarpee 阅读(986) 评论(0) 推荐(0) 编辑
摘要: DHE,就是加密协议连接,是BT协议的术语。用于防范BT协议过滤。一般正规BT软件都会自动选择协议加密。一般来说比特精灵一般使用DHE-XOR方 式加密,比特彗星一般使用DHE-RC4方式加密,这两个软件的协议加密都可以互相连接。如果把协议加密设置为强制,可以防止一些吸血软件如迅雷等的连 接,保证P2P网络的稳定。并且可以大幅度提升内网的下载速度。在使用BitComet时经常可以见到客户端版本号后多了一个*DHE*或*DHEv2*这就是协议加密的表示。现在多为DHEv2。DHEv2顾名思义,就是第二代加密协议连接DHEv2并不是由网络决定的,而是由软件决定作为加密协议,很多BT软件上还可以看到 阅读全文
posted @ 2012-04-07 16:19 yarpee 阅读(1087) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/cumirror/article/details/5071234http://blog.csdn.net/keyouan2008/article/details/5843388http://wenku.baidu.com/view/3f3d8cf4f61fb7360b4c65f9.htmlhttp://baike.baidu.com/view/22002.htmhttp://mr0811.blog.51cto.com/804916/3648501.IP分片产生的原因是网络层的MTU;TCP分段产生原因是MSS.2.IP分片由网络层完成,也在网络层进行重 阅读全文
posted @ 2012-04-06 15:48 yarpee 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: def Bin2Hex(hash): hexchars = [] for i in struct.unpack('%dB' % (len(hash),), hash): hexchars.append('%02x' % (i,)) return ''.join(hexchars)python的struct.unpack('50s')解析定长为50的二进制buff,但这个50是我计算并存储在一个变量中怎么办str_bytes_num = 50st = struct.unpack('%ds' % str_bytes_n 阅读全文
posted @ 2012-04-06 10:40 yarpee 阅读(266) 评论(0) 推荐(0) 编辑