- 博客(59)
- 资源 (7)
- 收藏
- 关注
原创 提供博客里提到的几个程序的下载地址
我在以前的博客文章中介绍过几个利用业余时间写的程序。为方便大家下载,我把它们的下载地址列在这里。有任何问题可以在这里留言,也可以直接给我写信。请自行查毒。下载、使用这些软件、源代码产生的任何后果由您个人负责,本人不承担任何责任和义务。You use them at your own risk, dont blame me。1,Remote Run Library (source code a
2006-12-11 23:51:00 11973 13
原创 构建基于Trac的自动测试框架(一):安装Trac
很久以来就有的想法,给我们的产品开发搭建一个集成的自动测试框架。想达到的目标有:自动从代码库抓取代码自动Build、制作安装包、并收集Debug Symbols 自动发布自动安装到目标设备自动运行测试用例、存储测试结果测试用例和测试结果有点类似于Continuous Integration的概念但不完全相同。这么一个系统自己开发显然要花费非常多
2009-05-11 21:31:00 2709
原创 如何诊断Windows CE的应用程序崩溃(续)
在《如何诊断Windows CE的应用程序崩溃》一文中我介绍了如何利用Remote Process Explorer的Crack Address功能定位程序的崩溃地址。但是看起来还是有很多人不知道怎么使用这个工具,这篇文章详细介绍一下。首先要确保你的PC上有dbghelp.dll。微软没有公开PDB文件格式,不过有解析PDB文件的API,在dbghelp.dll中提供,最新版本可在微软网站上下
2009-02-26 20:46:00 5778 3
原创 把MAP文件导入IDA Pro的小程序
IDA Pro是玩逆向工程必不可少的工具,但是很遗憾IDAPro好像不支持直接导入map文件(如果有谁知道可以,请告诉我)。前几天分析一个程序,很奇怪提供了MAP却没提供PDB。不悦,顺手写了一段把map文件转换成IDA Pro的idc脚本的Python小程序:Code highlighting produced by Actipro CodeHighlighter (free
2009-02-19 21:20:00 3997
原创 如何为WinCE的定制键盘写驱动
常看到有人问怎么给定制键盘制作驱动程序,在这里谈谈我的经验。完整的键盘驱动怎么写不是这篇文章的目的,这些MSDN上有很详细的介绍。这里谈的是,举个例子,标准的美国英语键盘的数字键SHIFT+2输出符号@,你想改成欧元符号该怎么做?或者你想做一个法语键盘,又该怎么做?又或者你想基于同样的键盘硬件设计,软件上同时支持英语、法语、俄语layout,又该怎么弄?在WinCE上,从
2009-02-12 20:41:00 3915 2
原创 AUTORUN与数字签名(二)
上一篇文章说到AUTORUN很好用,麻烦是别人可能利用它做坏事。别人可能利用它来运行他的危险程序,偷取资料甚至破坏设备,甚至你自己的AUTORUN也有可能被病毒感染。一个对付的做法是把AUTORUN放到一个不容易猜到的目录下,起个古怪的名字。不能从根本解决问题,但比没有强。根本的解决办法是给AUTORUN加数字签名。Windows Mobile设备好像内置就支持程序的数字签名。Window
2009-02-05 19:49:00 2903 2
原创 AUTORUN与数字签名(一)
简单问题,你负责的系统出现了莫名其妙的异常,怎么办?换句话说,你有什么方法搞清楚问题的所在,进而解决问题?对于这一类问题,我最关心的是系统内部的运行时状态,如果能搞清楚系统当前的问题状态,对找出问题的根源是很有帮助的。获取系统运行时状态肯定要利用工具,在windows桌面系统上,简单的如windows自带的Task Manager,VC的Spy++,高级的如Sysinternals
2009-01-30 21:27:00 2483
原创 Windows CE for VMWare 6.5的一些问题
今天把Windows CE VMWare虚拟机配置文件升级到了VMWare 6.5,发现启动后无法识别硬盘和网卡。做了个Debug版内核调试,发现问题所在:VMWare 6.5 PCI需要的IO空间为0xE080,大于VMCEPC BSP里默认设置0x6000:[HKEY_LOCAL_MACHINE/Drivers/BuiltIn/PCI] "IoLen" =dword:6000
2009-01-17 12:30:00 3101 1
原创 Interlocked API的原子性如何保证
前面的文章提到如何利用Interlocked API设计系统级日志。Interlocked API可以对在多线程之间共享的内存变量提供原子性访问。有些CPU在硬件层面上直接支持这些操作,如80386以后的X86架构CPU,xchg、xadd、cmpxchg等指令在进行内存访问时锁住总线。举例来说, InterlockedExchangeAdd在X86上的实现如下:LONG WINAPI Inte
2008-10-09 16:38:00 3555 1
原创 Windows CE系统级日志设计
我的经验,可靠的产品不是设计出来的,而是通过持续的解决BUG逐步达到的,当然我不是说设计不重要,我是想强调在产品中提供一些能够帮助诊断问题的设施是非常有必要的。在这方面,最常见的手段显然就是系统日志了。嵌入式系统由定制的硬件平台、定制的驱动程序、定制的系统组件,以及定制的应用程序构成。这么多定制的组件凑在一起,要在一个比较短的时间内把他们凑在一起,配合良好顺利运行不容易。他们中的任何部分都
2008-10-09 13:29:00 4102 4
原创 如何诊断Windows CE的应用程序崩溃
无论你是一个单纯的电脑用户还是一名高级软件工程师,都一定对程序崩溃不陌生。做为一名Windows CE应用程序开发者,你也一定遇到过下图这种场景:这个对话框告诉你,有一个叫installer.exe的程序在地址00019320处崩溃了。如果这个程序归你负责,那么你的问题就来了:怎么找出这个BUG?这篇文章我想谈谈我在这方面的一些经验。Windows CE的崩溃界面给出的信息十分的少,其中最有用的无
2008-07-15 18:06:00 10120 18
原创 案例:如何解决难以重现的BUG
我时不时会去Mark Russinovich的博客逛逛,学些诊断软件问题的技巧。Mark的博客有一个特点,他有很多案例,专门分析在日常使用电脑时碰上的各种问题,里面有很多分析、解决问题的技巧是颇值得学习的。我在想,从事软件开发这么多年来,自己也积累了大量的经验,如果能把这些经验做些整理写出来,对自己是一份很好的总结,对别人应该也有借鉴作用。因此我也打算写一些实际工作中遇到的比较典型的案例。
2008-07-03 17:01:00 8184 5
原创 Hacking Diablo II之Uploading
我知道很多人一直对Uploading感兴趣,很早以前我也说过要写一篇关于Uploading的文章,但一直也没有写。主要原因是我没想好该不该写,担心被人滥用了。很久不玩暗黑,现在连硬盘上的游戏都删了,今天心血来潮到暗黑论坛转了一下,发现居然又出了新补丁。这个补丁出的挺奇怪,就一个免CD的功能,其他任何改进都没有。这个。。。我的第一反应,是暴雪玩一手釜底抽薪,抄了D2Loader的后路。1.11以来,
2008-06-27 17:05:00 8776 14
原创 Windows CE 6.0 for VMWare虚拟机和BSP下载
做出来有一段时间了,本来找个时间好好整理一下再放上来,一直抽不出空。前两天有个意大利哥们儿写信来问有没有CE 6 for VMWare的网卡驱动,他折腾了半天没搞定。这让我觉得这东西或许还是有人需要的,因此先放上来再说了。CE 6.0和以前的版本最大的区别在于虚拟内存管理,其他方面的调整大多由此而起。我本来以为升级的CE 6.0后以前的驱动程序都不能用了,这对我做CE 6.0 for VMWare
2008-06-02 20:56:00 20435 10
原创 万能的便携即时聊天软件-Pidgin Portable
前面在博客中介绍过便携软件。我十分喜欢便携软件的理念,今天介绍怎么配置Pidgin,让你在公司也能用MSN/GTALK和QQ。Pidgin是一个N合一的即时聊天软件,换句话说,有了它你就可以和你的MSN/GTALK/QQ 好友联系,无需一一安装这些软件的客户端。更强的是Pidgin有一个插件可以加密聊天内容,一般聊天软件的聊天内容都是明文传输,很容易被人监控-用了这个插件你就不用担心了。软件的配置
2008-05-27 21:07:00 3222
原创 如何在系统登陆桌面运行程序(续)
前面说在系统登陆桌面运行程序必须取得TCB特权,今天研究了一下,这话说的有点儿绝对了。在网上搜索了一下,大名鼎鼎的Phrack上的有一篇文章介绍如何操作Physical Memory给了我启发。问题的关键不在于TCB特权,而在于ADMIN帐号没有权限操作"/Winlogon"内核对象。从下面这张图可以看出SYSTEM帐号和ADMIN帐号在"/Winlogon"内核对象上的权限区别:那么在"/Win
2008-05-27 15:55:00 2421
原创 如何在系统登陆桌面运行程序
这是有位朋友看到我的博客文章《OpenThread种种》中的这个截屏后问的问题,这里解释一下。首先要明白的是,在基于Windows NT(包括2K/XP/2K3等)的系统中,除了smss.exe (Session Manager Subsystem),其他进程都至少关联到一个Window Station和一个Desktop(Desktop隶属于某个Window Station)。在用户登陆后,运行
2008-05-26 20:50:00 8568 9
原创 便携软件
几个月前看一本杂志,上面介绍了一种软件,这种软件可以装在U盘上,在任意电脑上插上U盘就可以用,无需安装。你可能会想,这不就是网上经常看到的绿色软件吗。这玩意儿可比绿色软件高级多了。那些所谓的绿色软件,通常是把安装后的软件目录下的所有文件+相应的注册表设置+它要用到的组件(比如COM组件)放在一起打包。用的时候先要解压到本地硬盘,导入注册表,可能还要注册组件,然后才能用。这种便携软件不会改你的注册表
2008-05-21 23:41:00 2708 1
原创 折腾:如何让你的老电脑快起来
好多年没升级电脑了。我现在在家里用的电脑是2003年买的IBM T40 (奔腾M 1.5G/256MB RAM/40GB HD),后来自己加了512MB内存。从买来那天起到现在还没重装过。我是一个特喜欢折腾的人,在这台电脑上下载过无数的软件,装了删删了装,虽然时不时也维护一下,但是这么多年积累下来,整个系统慢慢变得终于让人无法忍受。特别是最近装完VS2005后,发现这电脑真的是不灵了,随便编译个什
2008-05-19 22:15:00 6407 1
原创 蠢
前两天给VS2005打SP1,没办法,没它CE6 R2装不了。没想到这东西要求还挺高。光C盘就得留2G剩余空间。我这电脑也上了点年纪,IT装的时候C盘才给了8G。装的软件又多,光微软的开发工具就有:eVC 4.0,VC++ 6.0,VS 2005,Platform Builder 4.1/4.2/5.0/6.0 (ARM/X86),还有MSDN。一通装下来,C盘通常在1G剩余空间左右徘徊。非要装那
2008-05-19 19:33:00 1918 2
原创 OpenThread种种
我在Windows NT系统(包括2K和XP)和Windows CE系统各写有一个工具,专门用来研究系统的运行时状态,比如进程、线程的各种信息,哪些DLL被哪些进程加载了,等等。如果某天突然想到一些好玩的东西,我也会把它加到工具里,比如,下图的这个,在系统登陆、锁定界面上运行了一个计算器。一般情况下,我比较喜欢做的事是观察线程的Call Stack。这就要用到一个关键的API:OpenThread
2007-08-28 16:20:00 9116 4
原创 VMCEPC BSP的一些更新说明
有人嘲笑说我又把博客写成了年记。真是惭愧,离上一次更新已经大半年过去了,2007年可能是我有史以来最忙碌的一年,项目的压力和生活的琐事让我根本没有心思来关心博客。现在总算可以说松了一口气,我想,我的博客也该更新了。有不少朋友写信给我询问VMWare BSP的一些问题,这里做一些回答:1,我提供的BSP是根据哪个BSP改的?是根据CEPC改的。要不然怎么叫VMCEPC。2,MS-DOS.vmdk这些
2007-08-21 16:46:00 3088 2
原创 一种有趣的错误跟踪LOG
我正式用C++做产品开发到现在大约有7、8年,从学C++算起的话有10年,经验应该算是比较丰富的。但是我很少写C++方面的技术文章,C++诞生到现在二十几年,经典书籍、技术文章数不胜数,能写的好像都被人写完了,找点值得一些的东西实在不容易。在前一家公司的时候,我负责做基础框架,用COM+实现业务逻辑层。COM+这种东西不像standalone的application,调试和错误定位 都很麻烦,而且
2007-01-12 18:25:00 3902 7
原创 Windows CE 5.0 for VMWare虚拟机和BSP下载
前两天有人写信跟我要Windows CE for VMWare。通常我个人写的非商业用途的程序和源代码都愿意共享出来给大家用,只是一直以来困扰我的问题是找不到合适的免费空间host这些东西,现在我发现google pages可以干这个使。这次放了两个东西:CE 5.0的VMWare虚拟机,和CE 5.0 for VMWare的BSP。想玩的人可以在这里下载: Windows CE 5
2007-01-10 15:45:00 14628 9
原创 嵌入式系统开发经验谈:Windows CE开发都做些什么
我在博客的个人简介里说过我目前在从事基于Windows CE的BSP开发,这方面的文章到现在连一篇都没写过,似乎有些说不过去。老板肯定在犯嘀咕了,这小子不干正事儿,整天玩什么外啊挂啊的。接下来,我得整 两篇。以前我都想把文章写的跟论文似的,枯吧干燥,累人累己,以后我就胡乱侃了,一家之言,对不对的凑合着看吧。 Windows CE的文章前面写过几篇,看的人不多,可能是因为搞嵌入式系统相比桌面软件和W
2007-01-09 16:52:00 7243 4
原创 Hacking Diablo II之D2HACKIT技术详解
趁着圣诞又歇了几天,没博,倒是主动被动的看了不少片子。我发现我的观影口味挺杂,什么都看,还什么都能看的津津有味。这些片中,有肥皂剧型的“Ally McBeal”(甜心俏佳人),柯恩兄弟的黑帮型的"Millers Crossing",闷骚型的“Country Life”,一直想看的“北京乐与路”,还有成龙大叔的“神话”。前几天有博友留言希望我多谈点儿d2hackit,那我就随便说说。D2中的外挂,
2006-12-29 20:54:00 13698 3
原创 我为什么做外挂
我只有两天,一天用来听许巍,一天用来干别的。今年没去outing,也很少给自己放假,积到年末就剩下了很多。这两天给自己放羊,计划 写点技术文章。起床后打开电脑,顺手放些音乐,是许巍的《每一刻都是崭新的》,不料上了瘾,又把《在别处》、《那一年》以及05年的北京演唱会折腾来,就 这么听了一整天。许巍的音乐,什么歌都一个调调,可它就有一种力量能让人沉迷进去,然后什么也干不了。今天起来学了乖,许巍还是想听
2006-12-23 00:29:00 9886 11
原创 我怎么对付流氓软件
搞软件的,一大副业是当兼职IT,经常有人找我解决各种各样的电脑问题。今天早上我还没起床就有一位打电话过来问IE一打开就崩溃是怎么回事。帮他一查,好家伙,乱七八糟的流氓插件不知怎的装了不少。其实一直以来我特奇怪的一个问题是,各位的流氓软件都是怎么中的,我怎么就碰不上,想中一个都不得其门而入。前段时间my123.com爆发,我就想中一个看看怎么回事,结果搜了好一阵,又到my123.com晃悠半天,一点
2006-12-17 17:32:00 10269 7
原创 CE6会比CE5快吗?
昨天去研华听了一场微软嵌入式多媒体讲座。其实我对讲座本身倒不太在意,我是冲着CE6的评估版光盘去,拿到光盘后不久就撤了,呵呵。虽然可以从网上直接 下载,但是放在硬盘里还是很占地方的,自己刻光盘也嫌麻烦。到的时候晚了几分钟,好在讲座也没正式开始,微软的哥们正在向不辞劳苦跋山涉水提前赶到的同志 们喷CE6和CE5的区别。 说到区别,CE6引入的新的虚拟内存模型是不能不提的。有人就问了一个问题,说CE5
2006-12-15 20:38:00 5147 2
原创 Hacking Diablo II之完整性检查(Integrity Scan)
d2hackmap有一个完整性检查的功能(Integrity Scan),用来检查游戏进程的代码有没有被改过。这个功能在d2hackmap的“安全开地图”中有所应用。所谓的“安全开地图”,其原理大致是在游戏进程分配一块空间,把“开地图”的相关代码(不是一个完整的DLL模块)注入这块空间,这段代码会在游戏的主线程context下运行,调用游戏的内部函数实现“开地图”逻辑,完事儿后再释放分配的空间。
2006-12-11 22:29:00 8079 1
原创 Real VNC是流氓软件?
前几天看到一条新闻,说Microsoft列出中国内地十大流氓软件。前几个看起来还比较靠谱,最后一个让我吃了一惊:几年不见,Real VNC怎么变成流氓了,还是中国的流氓。赶紧跑到Real VNC的主页,还好,首页上写的明白:“ RealVNC is a UK company”。那位要问了,你怎么对Real VNC这么上心?我注意到Real VNC是因为他爹是AT&T Cambridge LAB的
2006-12-08 11:50:00 3181 3
翻译 规避网络游戏的外挂检测机制
译注:这是一篇发表在rootkit.com上的讨论怎么规避warden检测机制的文章,原文在这里。作者Darawk是D2的黑客。之前,暴雪通过Module32First/Module32Next对D2 1.11中的外挂进行了第一次打击,很多使用外挂的玩家尤其是netters EasyMap的玩家损失惨重。黑客们开始思考Anti-warden的问题,这篇文章就是一些这方面的尝试。后来,在Dar
2006-12-01 17:48:00 19839 1
原创 暴雪和黑客的战争七:Warden和外挂的进化(二)
外挂凭着前一篇介绍的三板斧算是应付过了warden的第一轮攻击。但是还有一个问题没有解决:外挂的工作原理是通过安装旁路点(detour patch)修改原有游戏代码的流程,从而获得游戏的控制权。但是从反检测的角度来看,这种工作方式简直是噩梦-检测起来太容易了。在这方面那些不依赖于截获游戏代码工作的外挂(d2hackmap和基于AutoIt的MMBOT等都是)具有天然的优势。对于Maphack这种
2006-11-29 21:59:00 7066
原创 Anti-Warden技术之外挂的自我卸载
外挂Anti-warden的方法之一是给warden mod做数字签名,在检测到不安全或者未知的warden mod时,停止工作。对于以注入到游戏进程的方式运行的外挂来说,应该在warden开始执行检测之前自动卸载。这一篇介绍外挂自动卸载技术,也就是说如何在检测到不安全的.mod时把自己卸载掉。可能有人会想,这有什么难的,不就是调用FreeLibrary(假设加载用LoadLibrary)吗。调用
2006-11-28 23:00:00 6795
原创 暴雪和黑客的战争六:Warden和外挂的进化(一)
Warden的机制使得暴雪能够在不需要更新客户端的情况下任意更新作弊检测代码。事实上,自从D2升级到1.11以来,Warden的检测mod和外挂双方一直都在针对对方的改变而进化。这一篇介绍外挂如何躲避前一篇提到的.mod使用的三种检测方法:DLL扫描、进程扫描和窗口扫描。躲避DLL扫描前面介绍过,外挂一般是做为一个普通的DLL远程注入到游戏进程进行工作的,因此Warden mod最早的检测
2006-11-27 23:26:00 8165
原创 暴雪和黑客的战争五:Warden的不完全技术分析
前一篇提到了Warden的基本工作原理,这一篇从具体实现上来看看它到底是如何运作的。首先要说明的是,我在warden上没有花很多功夫,只是一些不完整的分析,也不保证我说的都是正确的。在游戏客户端连接到game server进入游戏的时候(WOW为登录的时候),客户端和服务器端先negotiate一个新的session key(128位RC4)用于随后的warden通信。negotiate过程
2006-11-25 14:40:00 6216 4
原创 如何让ActiveSync直接支持Ethernet连接
用过ActiveSync 连接Windows CE设备和PC的同学都知道,相对于Serial、USB等连接方式,Ethernet连接是个后娘养的孩子-微软出于某种考虑,让Ethernet连接方式在能够使用之前必须先用Seiral或者USB在设备和主机之间建立partnership。我个人一直觉得这不是一个合理的设计。比如就我们的设备而言,虽然正式的产品不支持ActiveSync,但是由于有些第三方
2006-11-24 17:35:00 4228
原创 Process Explorer for WinCE:揭示Windows CE系统运行时状态的强力工具
这篇要介绍的是我自己写的一个用于监控Windows CE运行时系统状态的工具-Windows CE Remote Process Explorer。2004年我开始从事Windows CE平台的开发,之前我对Windows CE几乎一无所知,为了了解Windows CE的系统机制,我利用业余时间写了这个工具。到目前为止,它已经具有了相当多的功能,也帮我解决了很多工作上的问题。简介如果你想监
2006-11-22 18:02:00 17230 38
原创 如何制作支持VMWare的Windows CE BSP
不知道有没有人试过在VMWare中跑过Windows CE。可能有人会问:在VMWare中跑Windows CE有什么意义?Windows CE不是有基于Vritual PC的emulator吗?要做干吗不做一个基于Microsoft自己的Virtual PC的?简单的答案是,VMWare支持一些Virtual PC(包括Windows CE emulator)不支持的硬件。对我来说,最吸
2006-11-19 22:01:00 13847 9
Windows CE 6.0 BSP for VMWare
2008-05-30
Windows CE 6.0 kernel for VMWare 6 part 2
2008-05-30
Windows CE 6.0 kernel for VMWare 6
2008-05-30
Windows CE 5.0 Virtual Machine for VMWare
2007-08-21
Windows CE BSP for VMWare
2007-08-21
Remote Run Library (source code and binary)
2007-08-21
Windows CE Remote Process Explorer
2007-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人