自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路人甲的专栏

路人客燕北,无人知其名。

  • 博客(36)
  • 收藏
  • 关注

转载 3G网络下TCP性能差的解释

转载自http://blog.davidsingleton.org/mobiletcp文章介绍了为什么3G网络环境下TCP性能差(RTT是一个变化的值).WIFI网络也有类似的问题,一些中低端的android手机问题WIFI性能非常差. Why mobile ap

2011-09-24 17:30:52 2010

原创 Android下以root权限启动程序

Android下以root权限启动程序 使用Android手机的人很多,很多人都会安装第三方的ROM,这些第三方的ROM一般都可以获取到root权限。但是即使在可以获取root权限的ROM上,java程序权限也是很低的。如何启动一个root权限的程序来完成某些高权限的任务呢?答案是使用su。第三方ROM上的su一般都是修改过的,可以被java程序调用。因此我们可以把高权限的操作放到一个单独

2011-06-25 17:51:00 6657 1

原创 Android下编译OpenSSL静态库

<br />Android下编译OpenSSL静态库<br /> <br />本文描述的操作都是在Linux下进行,使用最新的NDK编译。<br />第一步:下载源代码<br />mkdir openssl-build<br />cd openssl-build<br />git clone git://android.git.kernel.org/platform/external/openssl.git<br />目前版本是1.0.0a,比通用的OpenSSL的版本略低。<br /> <br />第二步

2011-04-09 18:02:00 28200 11

原创 DllMain, 实现之前先看清楚文档

<br />DllMain, 实现之前先看清楚文档<br /> <br />微软文档的质量是很不错的,需要强调的地方基本上都写的很清楚。可是总有一些人写代码不仔细看文档,埋了许多地雷自己都不知道。<br /> <br />         DllMain函数和其他函数实现起来相比,有许多需要注意的地方,MSDN中说的很清楚。<br />         DllMain Callback Function介绍的Remarks部分:<br />         http://msdn.microsoft.com

2010-11-10 21:14:00 1258

原创 本地透明代理的实现

 本地透明代理的实现 Windows下实现本地透明代理可以通过一个过滤驱动和代理进程实现。 过滤驱动Attach到“//Device//Tcp”和"//Device//Udp",然后在Dispatch函数中修改 连接的目的地址并保存原始目的地址和源地址。 上层的代理进程在accept到连接时,向过滤驱动查询连接的原始目的地址, 然后向原始目的地址发起连接。 Linux下面使用netfilter(iptables)可以很容易的实现一个TCP透明代理, 使用iptables的REDIRECT选项无需编写内核模块

2010-09-05 19:56:00 7917 2

原创 IOCP和SetFileCompletionNotificationModes

<br /> <br />在WinSock的IOCP模式中,调用WSASend/WSARecv/WSASendTo/WSARecvFrom等函数发送接受数据。调用WSAxxx函数发送或者接受数据时,如果函数返回了0,表示操作已经立即完成了。但是一般不会在这时进行完成操作的处理,因为Socket已经和完成端口绑定,某个调用GetQueuedCompletionStatus/GetQueuedCompletionStatusEx函数的线程一定会得到这个完成通知;此时处理了,下次得到通知时还需要把它和其它正常的通

2010-07-25 15:40:00 2479

原创 把Windows XP打造成终端服务器

<br />         Windows2008用作终端服务器非常不错,不但远程管理起来方便,还支持RemoteApp。有了RemoteApp,可以减少Windows用户Session的消耗,提高服务器的性能,不必像Windows2003那样一个启动一个远程程序就耗费一个Session。可惜某些老旧的程序或者写的不好的程序不能在Windows2008上运行,如果把这些程序部署到Windows2003上,就不能使用RemoteApp。<br /> <br />       Windows2003不支持Re

2010-06-19 12:17:00 8970 13

原创 是时候停止使用MSJVM了

<br /> <br />最近遇到一个客户问题,某些使用Windows XP用户使用Java Apple插件时IE8会崩溃。分析了一下堆栈,原来是msjava.dll导致的。Msjava.dll是微软的Java虚拟机,一个古老的东西,在新的系统(Windows 7、Vista)上已经见不到了。在IE中禁用微软的Java虚拟机,使用Sun的虚拟机,问题解决。<br /> <br />微软主页介绍了微软Java虚拟机的支持情况:<br />中文URL:http://www.microsoft.com/china

2010-06-16 16:00:00 1869 1

原创 RDP and ICA ppt

<br />两个不错的文档,介绍RDP和ICA的。<br />User Mode Internals of ICA Session Initialization<br />http://www.pubforum.info/welcome/Portals/0/PubForums/DUB08/PPT/Citrix_Session_Init_PubForum_Latest.ppt<br /> <br /> <br />WS2008 Terminal Services and XenApp Internals<br

2010-05-31 20:35:00 1240

原创 Windows驱动中判断Session是否是远程Session

    Windows驱动中判断Session是否是远程Session        用户态调用GetSystemMetrics(SM_REMOTESESSION)就可以知道当前是否处于远程桌面环境。    内核态没有类似的函数,就需要通过其它的方法判断了。        首先使用PsGetThreadSessionId,或者PsGetProcessSessionId,或者SeQuerySessi

2010-05-15 15:08:00 3292

原创 关于代码优化

  Optimizing == important. But often: Readable code == more important Learn what your compiler does,Then let the compiler do it.  If you do an optimization, test it on real world data.If

2010-03-13 16:30:00 690

原创 VC2008开发的程序的部署

VC2008程序部署:使用私有的CRT库使用私有CRT库是指不使用%windir%/WinSxS目录下面的共享CRT库,使用程序所在目录的CRT库文件。 从%VSINSTALLDIR%/VC/redist/x86/Microsoft.VC90.CRT/(%VSINSTALLDIR%是VC2008的安装目录)目录下面拷贝msvcr90.dll、msvcp90.dll、msvcm90.dl

2010-03-07 19:49:00 1213 1

转载 How WinSock works

 How WinSock works (from osronline)WinSock is the flexible polymorphic implementation of Berkeley sockets API,which is implemented in both user and kernel mode, and which has the additionof MS-spe

2010-03-07 17:35:00 798

原创 微软的内核态/用户态API监控工具KAPIMON

KAPIMON kernel & user mode APIs monitoring tool, 有空可以试试。

2010-02-27 16:52:00 1293

转载 Citrix and Microsoft (1989-1998)

Citrix 和MS一段历史(转自http://citrixblogger.org/2006/10/15/citrix-and-microsoft-1989-1998/)。Citrix and Microsoft (1989-1998)There is a long term relationship between Citrix and Microsoft. It started in

2010-02-27 14:40:00 728

转载 GDB scripts for FreeBSD kernel debugging

由于WinDbg目标平台只是Windows内核,WinDbg有很多Windows内核相关的调试命令,非常有用。相比之下,由于GDB并不针对特定的平台,GDB缺少具体操作系统内核相关的调试命令,很多时候不得不自己编写脚本来扩展GDB,实现一些特定平台上的调试命令。John Baldwin 编写了一些有用的FreeBSD内核调试的GDB脚本,在调试内核时非常有用,下载地址在http://p

2009-08-09 14:41:00 1169

原创 通过批处理实现自删除程序的小改进

通过批处理实现自删除程序的小改进  网上关于如何实现自删除程序的文章很多。有通过汇编实现的,有通过脚本实现的,有通过批处理实现的,有通过文件的FILE_FLAG_DELETE_ON_CLOSE标志实现的,还有通过远程线程实现的,总之方法很多。  脚本实现的方法,由于某些机器的Windows Script Host有问题,并不可靠。汇编实现的方法,某些时候不能删除程序。通过FILE_

2009-05-23 16:59:00 1221

原创 CreateIpForwardEntry函数在VIsta/win2008下需要注意的一个地方

On Windows Vista and Windows Server 2008, the route metric specified in the dwForwardMetric1 member of the MIB_IPFORWARDROW structure pointed to by pRoute parameter represents a combination of the rou

2009-04-30 22:42:00 2328

原创 Switch to Session 0 in Vista/windows 2008

Vista下切换到Session 0的方法:启动ui0detect服务: net start ui0detect然后可以通过ui0detect提供的界面切换到session 0,也可以通过下面的命令在session 0和当前session之间切换。切换到session 0:    rundll32 winsta.dll WinStationSwitchToServicesSession切换

2009-04-30 09:31:00 2459

转载 A Unix Utility You Should Know About: Pipe Viewer

A Unix Utility You Should Know About: Pipe Viewer Hi all. I’m starting yet another article series here. This one is going to be about Unix utilities that you should know about. The articles wi

2009-02-28 18:04:00 1036

原创 天佑中华-清华大学藏2100枚战国竹简,失传尚书可能重现

 http://edu.sina.com.cn/gaokao/2008-10-23/1043171683.shtml 据说有真正《古文尚书》、《竹书纪年》,经学、史学界的大事一件,值得庆祝!

2008-11-08 21:21:00 1168

原创 用objcopy把调试信息放到单独的文件中

用objcopy把调试信息放到单独的文件中 Visual C++默认把调试信息放到与可执行程序同名的pdb文件中(较新版本的VC),而GCC默认把调试信息放到可执行文件中。调试信息与程序分离有不少好处,一是可以大大较少可执行程序的大小,二是增加了逆向工程的难度。 GDB 允许将调试信息从可执行程序中分离出来,放在单独的文件中,GDB自动查找并加载调试信息。如果可执行程序的调试信息被

2008-11-01 20:12:00 4412

原创 程序同时使用微软的多个C运行库的风险

        同时使用微软的多个C运行库的风险             Microsoft的Visual C++是Windows下使用最广的编译器,历史悠久,目前的最新版本是VC2008。VC有多个版本,每个版本都附带一个C运行库。从VC6开始附带的运行库如下:   VC6                     msvcrt.dll       VC7(VC 2002)  

2008-10-25 16:39:00 2844

转载 谈谈抗幅照计算机的研究现状

  谈谈抗幅照计算机的研究现状From: http://www.chinajungong.com/html/zylw/20080118155707.html一、概述    现在几乎在所有的系统中,都依赖计算机来完成系统控制和数据处理。因为工作环境的不同,研制了各种计算机来满足应用的需求。如工业环境中使用的工控机,机载和船载环境中使用的机载计算机、船载计算机。它们都有各自的环境要

2008-09-25 20:37:00 4164

原创 GDB中查看STL容器中数据的方法

GDB的自定义命令非常有用,通过自定义命令,直接操作容器中的数据,可以方便的查看STL容器中的数据。这个链接dbinit_stl_views是Dan C Marinescu写的查看STL容器的自定义命令(如果不适合你的STL版本的话,可以自行修改)。把它添加到你的.gdbinit中,就可以方便的查看STL容器了。它提供了查看vector,list,map,multimap,set,multis

2008-09-25 08:30:00 5065 1

原创 一个非常有用的windbg命令.cmdtree

Roberto Farah 介绍了一个非常有用的windbg命令.cmdtree,请参考他的原文Special Command—Execute Commands from a Customized User Interface with .cmdtree。我们可以把一些常用的命令以特定的格式写到一个文本文件中,比如cmds.txt,然后通过.cmdtree cmds.txt命令加载,一

2008-09-24 20:59:00 2462

原创 借助gdb实现pstack

pstack.sh: #! /bin/shif [ -z $1 ]then    echo "gdb script for print stack"    echo "usage: $0 pid"    exitfi gdb --batch --quiet -x cmds -p $1   cmds: echo /nProcess:

2008-09-07 19:58:00 1675

原创 使用VC编译WinDbg的插件

     WinDbg自带了一些插件的例子,演示了如何编写插件。在说明文件中,介绍了如何编译例子,并说明必须使用DDK的编译环境去编译插件。其实WinDbg的插件根本用不到DDK中的东西,根本没有必要使用DDK去编译,可以直接使用Visual Studio去编译WinDbg插件。    最新版的WinDbg的头文件中使用了SAL Annotations,从Visual Studio 2005开

2008-07-19 15:51:00 1415

原创 检测Windows程序中的内存使用错误

检测Windows程序中的内存使用错误l        使用VC(VC2005/VC2008)编译程序时,如果你启动了“/RTC1”(VC6使用/GZ)去编译调试模式的程序,那么程序运行时VC的运行库就会使用特定的值填充申请和释放的内存,在调试内存错误时非常有用。       0xCC:填充未初始化的栈变量。      0xCD:填充从堆中申请的内存。       0xDD

2008-06-09 17:45:00 1370

原创 Windows下对本地网络通信进行抓包

Windows下对本地网络通信进行抓包 Windows下传统的抓包工具如Wireshark/Ethereal不能对本地程序之间的网络通信抓包,一些商业抓包工具使用Winsock LSP (Layered Service Provider)技术实现了本地程序之间的网络通信抓包。如果即想要对本地通信进行抓包又要使用Wireshark/Ethereal就要费一番周折了。http://wiki

2008-05-05 19:49:00 19593 2

原创 使用lua编写Wireshark(Ethereal)的dissector插件

使用lua编写Wireshark(Ethereal)的dissector插件 dissector插件可以用来对特定的协议内容进行分析展示,在分析自己实现的应用层协议时还是很有用的。dissector插件一般用C来实现,具体如何实现可以参考Wireshark代码目录下面的/epan/dissectors中的源代码和plugins目录下面的源代码。 一些简单的对性能要求不高的dissect

2008-04-27 22:30:00 3845

原创 VC6调试版本C运行库内存申请的一个bug

VC调试版本C运行库内存申请的一个bug  遇到过一个通信方面的软件,需要长期运行,做压力测试时,高负荷连续运行一定天数时必定崩溃,而且都是在msvcrtd.dll中崩溃。负责维护的人百思不得其解,就去问微软的人,结果微软的人说这是VC6带的msvcrtd.dll的一个问题,VC2005已经没有这个问题了,请升级到新的版本。这个软件规模比较大,依赖于很多库,后台都是用VC6编译的调试版

2008-03-29 21:06:00 4606 11

原创 使用Drwtsn32和NTSD进行崩溃进程转储

使用Drwtsn32和NTSD进行崩溃进程转储 当我们的程序在客户那里崩溃时,使用崩溃转储工具获取崩溃现场的信息是很有必要的,否则单纯依赖用户的口头描述很难定位问题所在。Drwtsn32、NTSD,UserDump、Autodump+,WinDbg都是Windows下的崩溃转储工具,其原理就是在程序崩溃时获取相应的信息并存储。Drwtsn32和NTSD是Windows自带的程序,客

2008-03-29 16:10:00 2626

原创 单元测试中使用Detours进行打桩

    单元测试中使用Detours进行打桩          同事抱怨使用CppUnit进行单元测试很不方便,不能在运行时决定打桩或不打桩,不方便进行自动化测试。好的打桩方法能大大提高测试体验,没有好的方法时进行单元测试就很繁琐、很无聊。作为一个跨平台的单元测试框架,CppUnit没有必要提供打桩方法。不同的平台的打桩方法可能不尽相同,但是基于现有的技术来实现并不困难。     

2008-03-22 22:45:00 1420

原创 VC6的一个bug???

   前几天测试程序的时候发现程序莫名奇妙的死掉,仔细一看原来是指针越界导致的内存访问错误,但是从程序来看并没有越界。      程序代码类似下面的代码:int i=0;for (i=0; i{//访问Array[i]} //注释for (i=0; i{//访问Array[i]}  于是F5调试模式下运行,发现原来是第一个循环结束后,没有

2008-03-15 22:04:00 1462 2

原创 尽量不要使用文本模式

 尽量不要使用文本模式读取文件     当我们使用C的库函数读取文件时,会有文本模式和二进制模式两种读取模式。一些传输数据的协议比如TFTP、FTP也有文本和二进制模式的区分。既可以使用文本模式也可以使用二进制模式时,尽量使用二进制模式。        文本模式和二进制模式读取文件时,差别主要是在回车换行的处理上,不同系统对回车换行的处理不一致。    CR:  Carri

2008-03-09 21:36:00 1592

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除