技术随笔
文章平均质量分 83
技术随笔,与软件有关和无关的内容都在这里
王晓华-吹泡泡的小猫
20+ 软件领域从业经验,关注软件开发团队能力提升和敏捷开发,目前全职从事软件相关的培训、授课和咨询
展开
-
静态代码检查工具PC-Lint(二)
输入您的搜索字词 提交搜索表单 3.5 格式检查 PC-Lint会检查printf和scanf(及其家族)中的格式冲突,例如:printf( "%+c", ... )将产生566告警,因为加原创 2006-07-24 23:33:00 · 24947 阅读 · 10 评论 -
C++0x,崭新的C++,还是另一个JAVA?
输入您的搜索字词 提交搜索表单 C++0x,崭新的C++,还是另一个JAVA? 最近,从全球最活跃的C++社区boost传来消息,新的C原创 2007-02-12 01:02:00 · 19614 阅读 · 38 评论 -
用表驱动代替switch-case
不知道从什么时候开始,switch-case语句成了代码坏味道的代名词,写代码的时候小心翼翼地避开它,看到别人代码中的switch-case就皱眉头,想想其实大可不必这样,switch-case语句并不是代码坏味道的根源,坏味道来自糟糕的代码(结构)设计,比如过多的switch-case分支,或者多重switch-case嵌套等等,这些都将导致代码可读性下降,如果再加上代码风格较差,代码原创 2008-02-25 21:28:00 · 9666 阅读 · 11 评论 -
设计模式应用实例(序言)
序言 输入您的搜索字词 提交搜索表单 我从上大学的时候开始编程,不过直到2000年左右才开始原创 2006-06-02 22:05:00 · 6783 阅读 · 3 评论 -
做一个检测钩子程序的工具
(本文最早发表在《电脑编程技巧与维护》杂志) 输入您的搜索字词 提交搜索表单 一、引言 Windows系统是建立在事件驱动的机制上的,每一个事件就是一个消息,每个运行中的程序,也就是所谓的原创 2005-11-25 13:58:00 · 14006 阅读 · 7 评论 -
基于文件过滤驱动的透明加密那点事儿
文件透明加密这点事儿,从2001年开始出现基于API HOOK的方式开始到现在,已经十几年了,有细心人按技术实现的方式将其细分为4代,分别是基于API HOOK的第一代技术、基于文件过滤驱动(加清缓存)的第二代技术、使用Layerfsd的双缓冲第三代技术和基于微软新一代minifilter框架的Layerfsd双缓冲第四代技术。第一代和第二代的技术划分基本上没有异议,所谓的第四代很多人并不认同,认原创 2013-08-11 23:22:16 · 19138 阅读 · 4 评论 -
用C/C++实现SMC动态代码加密技术
摘要:所谓SMC(Self Modifying Code)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码来达到变形或对代码加密的目的,从而躲过杀毒软件的查杀或者迷惑反病毒工作者对代码进行分析。由原创 2007-01-29 22:10:00 · 22866 阅读 · 8 评论 -
用C/C++实现代码的动态修改(SMC)
作者:星轨(oRbIt) E_Mail:inte2000@163.com摘要:所谓SMC(Self Modifying Code)技术,就是一种将可执行文件中的代码或数据进行加密,防止别人使用逆向工程工具(比如一些常见的反汇编工具)对程序进行静态分析的方法,只有程序运行时才对代码和数据进行解密,从而正常运行程序和访问数据。计算机病毒通常也会采用SMC技术动态修改内存中的可执行代码原创 2006-08-02 19:11:00 · 9293 阅读 · 1 评论 -
共享软件加密的一些误区
本文发表于《电脑软件编程与维护》 2005年12期 作者:星轨(oRbIt) E_Mail:inte2000@163.com 输入您的搜索字词 提交搜索表单 共享软件通常是指那种原创 2006-06-07 18:53:00 · 7853 阅读 · 3 评论 -
新老身份证号转换程序
输入您的搜索字词 提交搜索表单 使用STL编写的新老身份证号转换程序,自动识别输入的身份证号码类型并进行转换,代码的主体是下两个函数,身份证号码转换的方法参看文后的附录: 将15位身份证号转换成18位号码string Conver15To18(const string& str15bID){static char szJiaoyan[11] = {'1','0','X','9原创 2005-08-24 19:25:00 · 19723 阅读 · 3 评论 -
关于输入法,想说点什么了
输入法几乎是装机必备的软件,和浏览器一样,当年也是一片混战,不过能笑到最后的就那几个。输入法而已,又不能展示广告,而其都是免费的,有啥搞头?其实,这里面猫腻还是很多的,因为输入法模块可以用合法方式注入到任何用户进程中,而且是Windows系统许可的方式,用户的进程有什么权限,输入法就能得到什么权限,所以能“玩”的地方太多了,这里就不说了,大家都懂得。原创 2017-12-27 22:49:17 · 2601 阅读 · 0 评论 -
装了防火墙就可以高枕无忧了吗?
最近和几个朋友聊天,无意间又谈到了防火墙的安全性,一个朋友说看了我以前写的一篇博文“你的防火墙安全吗?”,他觉得我的文章有些言过其实,换句话说就是危言耸听。于是我们之间发生了这样一段对话:我:“你怎么就能确定你的计算机是安全的?”他:“我安装的防火墙软件总是能够拦截到非法的网络访问。”我:“你有方法能够获知你计算机上全部非法的网络访问吗?如果没有,那你原创 2010-03-09 19:20:00 · 7252 阅读 · 11 评论 -
移植 lwip,在 windows 内核构建一个 TCPIP 协议栈
移植 lwip,在 windows 内核构建一个 TCPIP 协议栈亲,当你点开看这篇文章,就说明你知道我想要干什么事情,或者说,你知道在 Windows 的内核种绕开它的网络协议,再独立构建一个网络协议栈的意义。如果你要问我有 windows 系统的网络协议栈不用,移植 lwip 有什么意义,那么你可以关闭链接走人了,因为这篇文章不适合你,它不是讲 lwip 移植原理的。经常关注我的博客的朋...原创 2019-04-07 17:30:51 · 2892 阅读 · 3 评论 -
MS08-067 漏洞打击了盗版用户的信心
2008年10月24日,MS08-067 漏洞横空出世,这是一个被称为“四年一遇”的Windows高危漏洞。自从利用RPC DCOM缓冲区溢出漏洞肆虐一时的“冲击波”平息以来嘴里都淡出鸟来的“大黑小黑”们顿时兴奋起来,利用这个漏洞进行溢出攻击的源代码也出现在网上,“大黑小黑”谈论最多的就是怎么利用这个漏洞抓“肉鸡”,有人自曝利用这个漏洞几个小时就抓了超过5位数的肉鸡。微软第一时间推出了补丁(原创 2008-11-10 00:25:00 · 4520 阅读 · 7 评论 -
你的防火墙可靠吗
你的防火墙可靠吗 流氓软件和木马在各种防火墙和杀毒软件的“打压”之下已经开始逐步向内核“退缩”,传统的依靠查看本地打开的端口与进程的关系的方法检查非法网络访问已经不再适用,个人防火墙已经成为装机必备的软件。目前主流的个人防火墙软件都是构建在Windows内核之上的,但是Windows的内核驱动是分层的,防火墙工原创 2008-03-31 21:39:00 · 7964 阅读 · 16 评论 -
恶意软件终于有了司法界定,但距离消失为时尚早
恶意软件终于有了司法界定,但距离消失为时尚早【摘要】这个《细则》的出台为打击流氓软件迈出了可喜的一步,但是如果说到流氓软件的末日还为时尚早。流氓软件不会因为《细则》的出台就缴械投降,这是一块大蛋糕,没有人迟到肚子里还会吐出来,它们会以各种形式改头换面继续存在。流氓软件可能因为公众压力或逐步强硬起来的司法压力而选择“从良”,收敛一些行为,但是在利益的驱原创 2007-06-18 23:21:00 · 3898 阅读 · 0 评论 -
看看雅虎助手是如何迫害“兔子”和“360安全卫士”的
输入您的搜索字词 提交搜索表单 这几天研究了一下雅虎助手是如何干扰360卫士的,发现如果安装雅虎助手的时候不安装3721就不会有问题,看来问题出在3721上了。于是在安装雅虎助手的时候选择安原创 2006-09-17 23:09:00 · 14066 阅读 · 23 评论 -
利用HTTP协议和IE的漏洞在其他计算机上运行一个程序
作者:星轨(oRbIt) E_Mail:inte2000@163.com 输入您的搜索字词 提交搜索表单 我们每天都使用网络浏览五彩缤纷、动感十足的网页,查询需要的信息原创 2004-11-05 12:28:00 · 6212 阅读 · 1 评论 -
ui_mon 小程序开源
我一直觉得 Windows 10 的深色模式是喜欢晚上工作的人的福音,既减少了对周围的光污染,也不刺激眼睛。但是白天用深色模式就觉得不舒服了,特别是看看周围的环境后再聚焦到电脑屏幕上的时候,一瞬间感觉不适应。于是,在深色模式和明亮模式之间转换,就成了每天的例行动作。不经意间发现并不是只有我有这样的“癖好”,同好者众矣,甚至有人开发了根据时间自动切换深色模式和明亮模式的工具 autodark。我用过后顿觉神清气爽,真乃神器也。用了一段时间后就开始手痒痒了,这么简单的工具为啥不自己做一个呢?想想自己刚从 W原创 2021-11-01 11:19:18 · 839 阅读 · 0 评论 -
Handling Multiple Versions in a Single Project Team
原作 :Mark Levison [英文原文:http://www.infoq.com/news/2008/06/multiple_versions ]翻译 :oRbIt 产品的第一个版本发布出去以后,你和你的团队就必须面临一个进退两难的局面--如何在维护已经发布的版本的基础上继续开发下一个版本。针对这个问题,Michael Dubakov(Target Process的创建者和CEO)翻译 2008-06-03 23:02:00 · 1941 阅读 · 0 评论 -
使用 Visual Studio 的属性表快速引用第三方的库
从Visual Studio 2008 开始支持用属性表对 Visual Studio 项目进行配置设置和修改,包括项目的编译选项、宏定义和引用的第三方库的包含路径。使用属性表文件,使得 Visual Studio 的项目得到了极大的简化,尤其是引用第三方的库的场景,再也不需要一遍一遍地设置头文件路径、库文件路径和库的名称了。本文就介绍一下如何使用属性表,以及如何利用导入属性表操作实现一键配置第三方的库。原创 2021-10-27 16:54:50 · 2806 阅读 · 0 评论 -
再读《架构整洁之道》
时至今日,软件开发技术中最热闹的领域就是前端开发了,各种 xxxScript 语言,各种前端框架,以至于很长时间都没有再听过“面向对象”这种“古老”的词汇了。作为上了年纪的人,当有人问起什么是软件设计的时候,脑子里本能地就会出现 SRP、OCP、DIP 这样的东西。这些“古董”东西现在还有用吗?函数式编程都没有变量了,面向对象的封装还有学习的必要了吗?现在流行分布式系统,“架构师”们言必称分布式设计,在这种体系中各种抽象和接口设计的原则还用得上吗?就在 SRP、LSP、OCP、DIP 这些词汇快要从记忆原创 2021-07-22 10:38:04 · 711 阅读 · 1 评论 -
ExplorerFrame.dll 的 BUG可能导致不良设计的用户程序危害系统稳定
ExplorerFrame.dll 动态链接库中的 `GetInfoTipEx` 函数实现缺陷,可能导致不良设计的用户代码破坏系统稳定性。如果用户程序对 IQueryInfo 接口的`GetInfoTip`方法实现不当,可能会触发`GetInfoTipEx`的缺陷,导致 explorer.exe 异常退出原创 2022-05-27 11:59:27 · 944 阅读 · 0 评论 -
为 Inkscape 的 TexText 插件“抠”一个最小的 LaTeX 环境
inkscape 的 TexText 扩展插件可以在矢量设计图中插入数学公式,并且是个可编辑的矢量对象,但是要使用 TexText 插件,需要配置 LaTeX。各种 LaTeX 的发行版都十分庞大,动辄几个 GB 起步。但是 TexText 插件并不需要完整的排版功能,所以从庞大的 LaTeX 工具集中“抠” 一个给 TexText 使用的最小集,非常有必要。整个过程中,使用 LaTeX 的各种问题基本上都遇到了,见招拆招,最终得到一个不足 200 MB 的最小 LaTeX 环境。原创 2021-10-14 11:44:55 · 1124 阅读 · 0 评论 -
自己动手编译Mozilla Firefox和ThunderBird
输入您的搜索字词 提交搜索表单 Firefox 和 ThunderBird 分别是Mozilla网络套件中的浏览器和邮件客户端,其中Firefox不使用微软的IE内核,对很多流氓插件具有天原创 2007-01-18 23:57:00 · 12541 阅读 · 1 评论 -
关于《编程之美》CPU曲线控制例子的探讨
上个月到福州路“扫”书店,本来想买几本敏捷和TDD的书,确意外发现了《编程之美》这本书。一开始被吸引是因为书名下面的副标题:微软面试。。。。,因为2005年毕业的时候曾有一次失败的微软面试,所以抱着事后看客的心态拿起来翻翻,这一翻就决定立刻买下这本书。从第一章开始,每一章的例子都很吸引我,虽然有一些题目早知道解法,但看到有更巧妙的方法时还是忍不住击节,要是但是面试的时候能先看看这本书就好了原创 2008-08-04 23:09:00 · 7867 阅读 · 0 评论 -
只有通过实践才能真正了解TDD
软件构建学问中总有一些理论上很美好,但是一使用就面目全非的东西,比如传统的瀑布模型。敏捷里很多被称之为思想的东西,恰恰没有太高深的理论,但都是一些实践的艺术,强调动手做而不是用理论论证。TDD就是这样一种东西,单纯去研究它的理论,分析它的优点和缺点没有任何意义,因为它本身就是一个很单纯的东西,再对其抽象也得不出象“相对论”那样深厚的理论。问题是你做了没有?支持TDD的人有没有从实践中真正体原创 2008-08-27 22:54:00 · 3899 阅读 · 2 评论 -
装配线(工作站)问题的两种解法
上学的时候有一道题目一直困扰着我,那就是厨师摆盘子问题,问题的描述是这样的:厨师的所有盘子都放在一个架子上,每天工作结束他都要将盘子按照从小到大的顺序排好,问题是架子不太稳,如果一次拿出一个或几个盘子,架子可能要倒掉,所以他必须只能从一边翻动盘子,由于他只有两只手,所以只能用两只手将拿起的盘子一起翻转。问题是当给出一个杂乱的盘子序列时,如何以最小的翻转次数将其排序。 当时用穷举的方法解原创 2008-08-26 21:32:00 · 4152 阅读 · 0 评论 -
自己编译firefox,thunderbird 怎么使用中文
现在firefox和thunderbird的爱好者越来越多,而且很多朋友喜欢自己动手编译firefox和thunderbird,这样的好处是可以随时从服务器更新打补丁后的代码,获得一个针对漏洞修改后的版本,这要比等待官方发布漏洞补丁快。针对浏览器漏洞的攻击是当前网络安全的一个重要问题,早一分钟打补丁就多一点安全,更何况现在编译firefox和thunderbird方法越来越简单,自己动手D原创 2008-09-06 15:18:00 · 8736 阅读 · 0 评论 -
用C++ TR1 生成随机数
用C++ TR1 生成随机数 原作 :[英文原文]翻译 :Orbit(阿猫阿狗) 介绍 本文将介绍如何使用C++ TR1(C++ 标准委员会 Technical Report 1) 提供的随机数生成功能 除了介绍基本的一致随机数生成之外,还会介绍随机样本的可能分布,包括:柏努利分布,二项分布,指数分布,伽马分布,几何分布,正态分布和泊松分布。我会指出一些针对特定分翻译 2008-10-05 20:52:00 · 11290 阅读 · 3 评论 -
TDD,测试代码可以代替文档吗?
曾经,我认为只要做好详细设计工作,软件编码就成为一种体力活。在我印象中传统软件工程理论好像是这么说得:分析和设计是软件生产过程中最重要的两个阶段,好的设计产生好的结果,坏的设计产生坏的结果,详细设计文档是软件过程中最重要的部分,甚至比代码还重要。国内某人的书中还提到,“只要有了详细设计,哪怕原来的开发人员都离开了,换一批人照着详细设计仍然能把软件做完”。一提到详细设计我的脑子里也已经出现了这原创 2008-11-25 22:23:00 · 5558 阅读 · 5 评论 -
从VC6到VC9移植代码问题总结
当年在学校学习C编程的时候用的是TC2.0,后来学C++用TC3.0,有一天突然发现Borland C++ 3.1的IDE比较好用,于是改用BC31,然后是BC4,但是到了BC5(还有BC5.02)的时候就玩不下去了,因为我那台只有16M内存的P100实在是跑不动这个庞然大物,在OWL和MFC之间“痛苦地”抉择了一部电影的时间后,我决定放弃添加内存的计划,改用Visual C++试试。因为原创 2008-11-28 21:53:00 · 25908 阅读 · 21 评论 -
静态代码检查工具PC-Lint(一)
作者:星轨(oRbIt) E_Mail :inte2000@163.com 输入您的搜索字词 提交搜索表单 [本文部分内容和例子都来自于PC-Lint用户手册,翻译得时候加上了点自己的理原创 2006-06-23 09:44:00 · 19986 阅读 · 3 评论