<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[默数悲伤]]></title><description><![CDATA[全世界的黑暗都不能阻止一支蜡烛的光明。]]></description><link>https://blog.csdn.net/winnuke</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; winnuke]]></copyright><item><title><![CDATA[跨平台文件传输工具]]></title><link>https://blog.csdn.net/winnuke/article/details/50668532</link><guid>https://blog.csdn.net/winnuke/article/details/50668532</guid><author>winnuke</author><pubDate>Mon, 15 Feb 2016 15:13:58 +0800</pubDate><description><![CDATA[最近用到freebsd10.2，然而倒腾图形界面始终没有成功，各种代码无法拷贝到bsd上去，不可能用vi或者ee重复再敲一遍。
vmtools似乎也没法安装，于是就用ee敲了个最简单的bsd上的服务端，接收文件并保存到本地。精简版代码如下： 


#include 
#include 
#include 
#include 
#include 

struct FileCopyInfo
{]]></description><category></category></item><item><title><![CDATA[sprintf/sscanf中的一个小坑]]></title><link>https://blog.csdn.net/winnuke/article/details/50607216</link><guid>https://blog.csdn.net/winnuke/article/details/50607216</guid><author>winnuke</author><pubDate>Fri, 29 Jan 2016 14:54:43 +0800</pubDate><description><![CDATA[这段代码，开始以为会正常运行，结果却是crash。
sscanf在解析%s的时候遇到空格、指标符号、\n才会停止解析，而这个%s后面的逗号基本上是一个摆设。上面这行out的数据就是“test,100”，这直接导致i解析失败。


所以，遇到这种情况，可以用char buf[32] = {0};
sprintf(buf, "%s %d", "test", 100);

char out[32]]></description><category></category></item><item><title><![CDATA[linux下查看tcp连接的几种方式]]></title><link>https://blog.csdn.net/winnuke/article/details/50601423</link><guid>https://blog.csdn.net/winnuke/article/details/50601423</guid><author>winnuke</author><pubDate>Thu, 28 Jan 2016 16:16:29 +0800</pubDate><description><![CDATA[[root@localhost /]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp]]></description><category></category></item><item><title><![CDATA[linux下tcp socket的SO_REUSEPORT和SO_REUSEADDR]]></title><link>https://blog.csdn.net/winnuke/article/details/50598892</link><guid>https://blog.csdn.net/winnuke/article/details/50598892</guid><author>winnuke</author><pubDate>Thu, 28 Jan 2016 10:42:34 +0800</pubDate><description><![CDATA[SO_REUSEADDR
linux下多个tcp socket不能同时bind到一个ip:port上，但是可以bind到不同的ip相同的port上，前提是都要设置SO_REUSEADDR选项为true。否则会返回address already in use。
比如bind(127.0.0.1:80) bind(192.168.0.10:80) bind(10.0.0.12:80)这取决于有多少]]></description><category></category></item><item><title><![CDATA[从观察者模式的实现，看c/c++的语言特性]]></title><link>https://blog.csdn.net/winnuke/article/details/38849465</link><guid>https://blog.csdn.net/winnuke/article/details/38849465</guid><author>winnuke</author><pubDate>Tue, 26 Aug 2014 17:09:37 +0800</pubDate><description><![CDATA[观察者模式，是我们在开发过程中经常会遇到或者使用的设计模式。
我试着用c，以及c++的若干方式来实现一个观察者模式。旨在比较c/c++语言在达到同一个目的上多种实现方式的特性。]]></description><category></category></item><item><title><![CDATA[一个简单的DbgPrinter]]></title><link>https://blog.csdn.net/winnuke/article/details/1887255</link><guid>https://blog.csdn.net/winnuke/article/details/1887255</guid><author>winnuke</author><pubDate>Thu, 15 Nov 2007 18:51:00 +0800</pubDate><description><![CDATA[ vc下没有支持可变参数的宏实现.自己今天捣鼓了半天做了一个简单的:)// dgb_prt.h #include windows.h>#define _DEBUG_INFO_FILE  "gfx_dbg_info.txt" // 修改这里的输出文件VOID _cdecl __DPrt(const WCHAR *fmt, ...);VOID _cdecl __RPrt(const W]]></description><category></category></item><item><title><![CDATA[Rootkits: Subverting the Windows Kernel--§1]]></title><link>https://blog.csdn.net/winnuke/article/details/1547548</link><guid>https://blog.csdn.net/winnuke/article/details/1547548</guid><author>winnuke</author><pubDate>Sat, 31 Mar 2007 13:59:00 +0800</pubDate><description><![CDATA[§1 走过不留下任何痕迹   狡猾的老手通常都不会留下行动痕迹；象神一样的不可见闻。因此他们通常主宰着敌人的命运。    —SUN TZU    许多书籍讨论怎样去渗透计算机系统和软件。同时许多作者也已经阐述了怎么去运行黑客脚本，编写缓冲溢出利用程序，以及手工打造shellcode等。其中包括下面基本比较出名的书：Exploiting Software, The Shellcoders ]]></description><category></category></item><item><title><![CDATA[Winxp下拦截所有进程的写注册表操作以及进程创建的监控]]></title><link>https://blog.csdn.net/winnuke/article/details/1534122</link><guid>https://blog.csdn.net/winnuke/article/details/1534122</guid><author>winnuke</author><pubDate>Mon, 19 Mar 2007 19:50:00 +0800</pubDate><description><![CDATA[ 原理介绍：  Nt系统下用户层(Ring3)下写注册表的程序大都调用ntdll.dll导出的ZwSetValueKey，该API简单通过int 2e并传递一个服务号进入内核调用同名系统服务(NTSetValueKey)。所以在用户层(Ring3)下拦截写注册表的操作最后的也是最底层的方法便是拦截该API。  同时为了实时监控系统中当前运行的所有进程对该API的直接或者间接调用，需要对所有]]></description><category></category></item><item><title><![CDATA[用户层下拦截系统api的原理与实现]]></title><link>https://blog.csdn.net/winnuke/article/details/664179</link><guid>https://blog.csdn.net/winnuke/article/details/664179</guid><author>winnuke</author><pubDate>Sat, 15 Apr 2006 00:37:00 +0800</pubDate><description><![CDATA[　　写这篇文章是为了复习一些知识，最近在做毕业设计，之中大量地使用了这种技术，主要是用在拦截winsock函数，对于其他系统api，其效果也是一样的．　　拦截api的技术有很多种，大体分为用户层和内核层的拦截．这里只说说用户层的拦截．而用户层也分为许多种：修改PE文件导入表，直接修改要拦截的api的内存（从开始到最后，使程序跳转到指定的地址执行）．不过大部分原理都是修改程序流程，使之跳转到你要]]></description><category></category></item></channel></rss>