﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-糯米-随笔分类-Linux</title><link>http://www.cppblog.com/varg-vikernes/category/16060.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 29 Aug 2011 05:08:47 GMT</lastBuildDate><pubDate>Mon, 29 Aug 2011 05:08:47 GMT</pubDate><ttl>60</ttl><item><title>去除dvsdk安装的Ubuntu版本限制</title><link>http://www.cppblog.com/varg-vikernes/archive/2011/08/27/154470.html</link><dc:creator>糯米</dc:creator><author>糯米</author><pubDate>Sat, 27 Aug 2011 01:43:00 GMT</pubDate><guid>http://www.cppblog.com/varg-vikernes/archive/2011/08/27/154470.html</guid><wfw:comment>http://www.cppblog.com/varg-vikernes/comments/154470.html</wfw:comment><comments>http://www.cppblog.com/varg-vikernes/archive/2011/08/27/154470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/varg-vikernes/comments/commentRss/154470.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/varg-vikernes/services/trackbacks/154470.html</trackback:ping><description><![CDATA[今天偶然间发现的一个小hack：）<br />
<br />
我要安装dvsdk的4.0版本。它的安装包是一个单个的可执行文件：<br />
<br />
<div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv1.png" width="718" height="43" alt="" /></div>
<br />它提示，只能在Ubuntu 10.04上面安装。<br />
<br />
<div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv2.png" width="397" height="279" alt="" /></div>
<br />
我自己的Ubuntu是11.04，文件系统resierfs，如果resize的话貌似会清空。当然也不愿意再装一个旧版的。<br />
所以琢磨着怎么把这个限制去掉。<br />
首先我估计它是读了某个文件来获取的发行版本号。<br />
所以先用 strace 命令看一下。加一个 -f 表示跟踪 fork 出来的子进程。<br />这个工具可以打印出程序所有的 syscall。因此 open，read，write，select 之类的调用都会被打印出来。<br />
<br /><div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv3.png" width="565" height="20" alt="" /><br /><br /><div style="text-align: left;">这时候出来很多结果，好比大海捞针一般，要仔细看哦。<br />突然发现一行显眼的：<br /><br /><div style="text-align: center; "><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv4.png" width="524" height="85" alt="" /></div><br />&#8220;natty&#8221;是Ubuntu 11.04的代号，也就是说这个程序在某个地方读到了Ubuntu的版本号。<br />我对这些不了解，于是google了一下，发现是通过调用 lsb_release 这个工具来读到的。<br /><br /><div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv5.png" width="311" height="38" alt="" /></div><br />然后又发现一个好消息，这个工具是 python 写的。<br />于是加了半句优雅的代码：<br /><br /><div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv6.png" width="950" height="103" alt="" /></div><br />其中&#8220;lucid&#8221;是 Ubuntu 10.04 的版本号。如果 /tmp/lucidhack 这个文件存在，就输出 lucid 。<br />看看效果吧：<br /><br /><div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv7.png" width="508" height="37" alt="" /><br /><br /><div style="text-align: left;">创建 /tmp/lucidhack，然后重新运行安装程序。</div><div style="text-align: left;">大功告成！<br /><br /><div style="text-align: center;"><img src="http://www.cppblog.com/images/cppblog_com/varg-vikernes/dv8.png" width="496" height="344" alt="" /><br /><div style="text-align: left;"><br /><br />其实很多时候问题很简单，完全没有必要大动干戈。</div></div></div></div></div></div><img src ="http://www.cppblog.com/varg-vikernes/aggbug/154470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/varg-vikernes/" target="_blank">糯米</a> 2011-08-27 09:43 <a href="http://www.cppblog.com/varg-vikernes/archive/2011/08/27/154470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux内核通过inline hook实现隐藏进程</title><link>http://www.cppblog.com/varg-vikernes/archive/2011/02/23/140519.html</link><dc:creator>糯米</dc:creator><author>糯米</author><pubDate>Wed, 23 Feb 2011 06:58:00 GMT</pubDate><guid>http://www.cppblog.com/varg-vikernes/archive/2011/02/23/140519.html</guid><wfw:comment>http://www.cppblog.com/varg-vikernes/comments/140519.html</wfw:comment><comments>http://www.cppblog.com/varg-vikernes/archive/2011/02/23/140519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/varg-vikernes/comments/commentRss/140519.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/varg-vikernes/services/trackbacks/140519.html</trackback:ping><description><![CDATA[这是我们操作系统的大作业。<br>原理就是inline hook 那个 proc 文件系统，根目录下的 readdir 的函数。<br>替换掉第三个参数，filldir。<br>代码爆短，60来行。<br>Ubuntu 10.04 测试可用。<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">linux</span><span style="color: #000000;">/</span><span style="color: #000000;">kernel.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">linux</span><span style="color: #000000;">/</span><span style="color: #000000;">kprobes.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">linux</span><span style="color: #000000;">/</span><span style="color: #000000;">module.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">linux</span><span style="color: #000000;">/</span><span style="color: #000000;">moduleparam.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">#include&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">linux</span><span style="color: #000000;">/</span><span style="color: #000000;">fs.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;register_kprobe(</span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;kprobe&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">kp);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_200_238_Open_Image" onclick="this.style.display='none'; codehighlighter1_200_238_open_text.style.display="'none';" codehighlighter1_200_238_closed_image.style.display="'inline';" codehighlighter1_200_238_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_200_238_Closed_Image" onclick="this.style.display='none'; codehighlighter1_200_238_closed_text.style.display="'none';" codehighlighter1_200_238_open_image.style.display="'inline';" codehighlighter1_200_238_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;kprobe&nbsp;kp&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_200_238_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_200_238_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;.symbol_name&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">proc_pid_readdir</span><span style="color: #000000;">"</span><span style="color: #000000;">,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;filldir_t&nbsp;old_filldir;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pid;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">module_param(pid,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0744</span><span style="color: #000000;">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;filldir(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;__buf,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;name,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;namlen,&nbsp;loff_t&nbsp;offset,<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u64&nbsp;ino,&nbsp;unsigned&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;d_type)<br><img id="Codehighlighter1_434_559_Open_Image" onclick="this.style.display='none'; codehighlighter1_434_559_open_text.style.display="'none';" codehighlighter1_434_559_closed_image.style.display="'inline';" codehighlighter1_434_559_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_434_559_Closed_Image" onclick="this.style.display='none'; codehighlighter1_434_559_closed_text.style.display="'none';" codehighlighter1_434_559_open_image.style.display="'inline';" codehighlighter1_434_559_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_434_559_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_434_559_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;sscanf(name,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">p);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(p&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;pid)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;old_filldir(__buf,&nbsp;name,&nbsp;namlen,&nbsp;offset,&nbsp;ino,&nbsp;d_type);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img id="Codehighlighter1_563_641_Open_Image" onclick="this.style.display='none'; codehighlighter1_563_641_open_text.style.display="'none';" codehighlighter1_563_641_closed_image.style.display="'inline';" codehighlighter1_563_641_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_563_641_Closed_Image" onclick="this.style.display='none'; codehighlighter1_563_641_closed_text.style.display="'none';" codehighlighter1_563_641_open_image.style.display="'inline';" codehighlighter1_563_641_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_563_641_Closed_Text">/**/</span><span id="Codehighlighter1_563_641_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;kprobe&nbsp;pre_handler:&nbsp;called&nbsp;just&nbsp;before&nbsp;the&nbsp;probed&nbsp;instruction&nbsp;is&nbsp;executed&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;handler_pre(</span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;kprobe&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">pr,&nbsp;</span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;pt_regs&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">regs)<br><img id="Codehighlighter1_707_795_Open_Image" onclick="this.style.display='none'; codehighlighter1_707_795_open_text.style.display="'none';" codehighlighter1_707_795_closed_image.style.display="'inline';" codehighlighter1_707_795_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_707_795_Closed_Image" onclick="this.style.display='none'; codehighlighter1_707_795_closed_text.style.display="'none';" codehighlighter1_707_795_open_image.style.display="'inline';" codehighlighter1_707_795_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_707_795_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_707_795_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;old_filldir&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(filldir_t)regs</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">cx;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;regs</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">cx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(regs</span><span style="color: #000000;">-&gt;</span><span style="color: #000000;">cx))filldir;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;__init&nbsp;k_init(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br><img id="Codehighlighter1_829_1083_Open_Image" onclick="this.style.display='none'; codehighlighter1_829_1083_open_text.style.display="'none';" codehighlighter1_829_1083_closed_image.style.display="'inline';" codehighlighter1_829_1083_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_829_1083_Closed_Image" onclick="this.style.display='none'; codehighlighter1_829_1083_closed_text.style.display="'none';" codehighlighter1_829_1083_open_image.style.display="'inline';" codehighlighter1_829_1083_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_829_1083_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_829_1083_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ret;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;kp.pre_handler&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;handler_pre;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;register_kprobe(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">kp);<br><img id="Codehighlighter1_917_1001_Open_Image" onclick="this.style.display='none'; codehighlighter1_917_1001_open_text.style.display="'none';" codehighlighter1_917_1001_closed_image.style.display="'inline';" codehighlighter1_917_1001_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_917_1001_Closed_Image" onclick="this.style.display='none'; codehighlighter1_917_1001_closed_text.style.display="'none';" codehighlighter1_917_1001_open_image.style.display="'inline';" codehighlighter1_917_1001_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ret&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_917_1001_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_917_1001_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">register_kprobe&nbsp;failed,&nbsp;returned&nbsp;%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ret);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;ret;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Planted&nbsp;kprobe&nbsp;at&nbsp;%p;&nbsp;pid&nbsp;%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;kp.addr,&nbsp;pid);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;__exit&nbsp;k_exit(</span><span style="color: #0000ff;">void</span><span style="color: #000000;">)<br><img id="Codehighlighter1_1118_1205_Open_Image" onclick="this.style.display='none'; codehighlighter1_1118_1205_open_text.style.display="'none';" codehighlighter1_1118_1205_closed_image.style.display="'inline';" codehighlighter1_1118_1205_closed_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none;" id="Codehighlighter1_1118_1205_Closed_Image" onclick="this.style.display='none'; codehighlighter1_1118_1205_closed_text.style.display="'none';" codehighlighter1_1118_1205_open_image.style.display="'inline';" codehighlighter1_1118_1205_open_text.style.display="'inline';"" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="border: 1px solid #808080; background-color: #ffffff; display: none;" id="Codehighlighter1_1118_1205_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id="Codehighlighter1_1118_1205_Open_Text"><span style="color: #000000;">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;unregister_kprobe(</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">kp);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;printk(KERN_INFO&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">kprobe&nbsp;at&nbsp;%p&nbsp;unregistered\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;kp.addr);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">module_init(k_init);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">module_exit(k_exit);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">MODULE_LICENSE(</span><span style="color: #000000;">"</span><span style="color: #000000;">GPL</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; width: 98%; font-size: 13px;"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000;">sleep&nbsp;</span><span style="color: #000000;">1000</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">pid</span><span style="color: #000000;">=</span><span style="color: #000000;">`jobs&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">p`<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">echo&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">before&nbsp;hide</span><span style="color: #000000;">'</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ps&nbsp;aux&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;grep&nbsp;$pid<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">insmod&nbsp;k.ko&nbsp;pid</span><span style="color: #000000;">=</span><span style="color: #000000;">$pid<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">echo&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">after&nbsp;hide</span><span style="color: #000000;">'</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ps&nbsp;aux&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;grep&nbsp;$pid<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">rmmod&nbsp;k.ko<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">echo&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">after&nbsp;unhide</span><span style="color: #000000;">'</span><span style="color: #000000;"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top">ps&nbsp;aux&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;grep&nbsp;$pid</span></div>
<br><img src ="http://www.cppblog.com/varg-vikernes/aggbug/140519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/varg-vikernes/" target="_blank">糯米</a> 2011-02-23 14:58 <a href="http://www.cppblog.com/varg-vikernes/archive/2011/02/23/140519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Linux下使用BridgeWan代理</title><link>http://www.cppblog.com/varg-vikernes/archive/2011/01/07/138131.html</link><dc:creator>糯米</dc:creator><author>糯米</author><pubDate>Fri, 07 Jan 2011 11:56:00 GMT</pubDate><guid>http://www.cppblog.com/varg-vikernes/archive/2011/01/07/138131.html</guid><wfw:comment>http://www.cppblog.com/varg-vikernes/comments/138131.html</wfw:comment><comments>http://www.cppblog.com/varg-vikernes/archive/2011/01/07/138131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/varg-vikernes/comments/commentRss/138131.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/varg-vikernes/services/trackbacks/138131.html</trackback:ping><description><![CDATA[BridgeWan是淘宝上最便宜的教育网VPN。只有Windows的客户端。<br><br>首先，在Windows下抓包得到了一点信息。<br>发现用的是PPTP协议。CHAP验证方式。用户名是一样的。<br>但是在linux试一下直接连接，发现密码错误，也就是说密码改了。<br>在PPTP连接之前，它还发起了几个HTTP的请求。<br>除了获取程序界面上显示的网页之外，还有可能是请求了一些特别的东西，用来生成密码。<br>总之它密码改了就对了。<br><br>试图用Wine运行，结果报了几个错，就是说有的函数没实现。<br>注意到了RasDial这个函数，Wine没有实现。<br>去msdn查了一下，是PPTP拨号相关的函数，而且它的参数里，包含了密码！<br><br>这下好办！首先把Wine的源码下载下来，然后查找到RasDialA函数。<br>加一句话把密码打印出来。编译运行。<br><br>本来想着它动态生成密码，每次都不一样。<br>但是发现每次都一样的。。这样就更省事拉！<br><br>我用的是kvpnc这个客户端，配置蛮方便的。<br>注意：验证方式选择MSCHAP，取消MPPE。<br><br> <img src ="http://www.cppblog.com/varg-vikernes/aggbug/138131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/varg-vikernes/" target="_blank">糯米</a> 2011-01-07 19:56 <a href="http://www.cppblog.com/varg-vikernes/archive/2011/01/07/138131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ubuntu下安装精简而实用的桌面环境</title><link>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129075.html</link><dc:creator>糯米</dc:creator><author>糯米</author><pubDate>Fri, 08 Oct 2010 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129075.html</guid><wfw:comment>http://www.cppblog.com/varg-vikernes/comments/129075.html</wfw:comment><comments>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/varg-vikernes/comments/commentRss/129075.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/varg-vikernes/services/trackbacks/129075.html</trackback:ping><description><![CDATA[apt-get install xfwm4<br>apt-get install scim-chinese<br>apt-get install roxterm<br>cat &gt;~/.xinitrc &lt;&lt;E<e><br>roxterm &amp;<br>scim &amp;<br>xfwm4<br>E<br>xinit</e><br> <img src ="http://www.cppblog.com/varg-vikernes/aggbug/129075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/varg-vikernes/" target="_blank">糯米</a> 2010-10-08 20:49 <a href="http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dell m1330 xps笔记本linux下的无线网卡驱动的安装</title><link>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129073.html</link><dc:creator>糯米</dc:creator><author>糯米</author><pubDate>Fri, 08 Oct 2010 12:43:00 GMT</pubDate><guid>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129073.html</guid><wfw:comment>http://www.cppblog.com/varg-vikernes/comments/129073.html</wfw:comment><comments>http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/varg-vikernes/comments/commentRss/129073.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/varg-vikernes/services/trackbacks/129073.html</trackback:ping><description><![CDATA[插入买机的时候送的驱动光盘，灰色的那张。<br>mount /dev/cdrom /media/cdrom<br>cd /tmp<br>find /media/cdrom -name '*.exe' | while read i; do unzip -ao $i; done<br>cd DRIVER_US<br>ndiswrapper -i bcmwl5.inf<br>rmmod b43<br>rmmod ssb<br>modprobe ndiswrapper<br>iwconfg ..... <img src ="http://www.cppblog.com/varg-vikernes/aggbug/129073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/varg-vikernes/" target="_blank">糯米</a> 2010-10-08 20:43 <a href="http://www.cppblog.com/varg-vikernes/archive/2010/10/08/129073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>