BlackHat之路第四期:API Hook做自定义的弹出对话框。

2009-04-30 发表在 逆向调试 | 查看 61 次 | 评论

Windows自定义的弹出对话框太丑了,而由于对话框是通过调用MessageBox这个API,由Windows生成一个Model窗口产生的,所以我们没办法为这个Windows生成的窗口自定义皮肤。

所以可以通过Hook MessageBox这个API来自定义对话框。
这里的Hook有两种,一个是Inline Hook,一个是IAT Hook。
前者是修改当前进程空间里的API所在内存,后者是修改当前进程的导入表中的函数指向地址。

我这里使用的是前者,因为由于杀毒手调用了很多dll,如果为每个dll修改导入表,显得麻烦了点,所以直接修改进程空间内的API比较方便。
因此,把当前进程空间内的MessageBox函数的前几个操作变为“跳转到指向我们的自定义函数的地址”,就可以产生我们想要的对话框了。
当我们的程序调用MessageBox时,就会自动跳转到我们自己的对话框函数。

这个跳转的指令如下:
{0xB8, 0x0F, 0×10, 0×40, 0×00, 0xFF, 0xE0}
后面再跟上我们自己的函数地址。
首先用GetProcAddress获得MessageBox的地址,然后VirtualProtect修改内存页属性,再调用WriteProcessMemory修改内存。完工。

但是,需要注意的是,这个我们自定义的函数,需要考虑得和MessageBox API一样全面,函数参数数目、参数类型等等。

另外,还有一个方法能实现自定义对话框,就是消息Hook。这里就不详述了。

效果:
hook前

hook后

趋势闪电杀毒手项目经验总结 – 2009/05/16更新

2009-04-30 发表在 记录思考 | 查看 84 次 | 1 条评论

【项目管理】

(1)不要使用邮件来发布模块进度。

邮件一来一去,会带来很多垃圾信息,而且邮件有个致命的缺点就 是“你不知道哪封邮件里的信息才是最新最全面的”。如果某个成员请假,那当他打开邮件时,可能会看到同一主题的N封邮件,这时他就迷茫了,根本不知道发生 了什么。而事实上,他不要知道整个经过,而只要知道latest status & what he/she should do NOW
建议:有个pub的网页,在上面发布各个模块的最新信息,并配置好各个成员的权限。

(2)有短期、长期的会议。

会议要主题明确,切忌乱扯,控制好会议时间。
不要把私人问题拿出来讨论,会议不是来解决你个人问题的。
切忌一个问题重复讨论,所以要有良好的会议记录和跟踪。
通常遇到的症状是:一个问题在第一天的会议上被提出来,由于没有得到follow up,在第二天的会议上又被重新拿出来提出了一遍。

(3)项目经理要自信且职责明确。

JM有时候很想弄清楚项目的进展,所以就认为要了解项目的很多细节。这是错误的,属于越权行为
架构由架构师去控制,各个模块的逻辑由模块负责人掌握,JM只要把握大局就好,不需要理解架构的具体细节,模块的具体逻辑等,要不然,JM会理解得累死,组员也会解释得半死

(4)PM的重要性。

一个好的PM从开始就决定了项目的成败与否。PM对业内方向的拿捏,和对客户需求的了解程度以及市场的把握,决定了产品的价值。如果PM一开始就认知错误,那么有再好的开发人员,做出再好质量的产品,也是没有价值的。所以,“大拿”通常都是说PM

【开发】
(1)遇到bug不要胡乱debug。

记住你的目的不是仅仅让bug消失,而是明白这个bug为什么产生,并且怎样在以后避免重复发生。
通常很多程序员一次又一次的debug,改一下跑一遍,不行;再改再跑,周而复始……到了第N次,终于跑通了,以为bug就修复了。这样不仅对程序的健壮性不利,更不利于自己的进步。因此,三思而后Debug

(2)各个版本的Source Code要归档保存好

如果一个程序在外的版本有多个,但是你手里目前的源代码却是最新的,那么就会有问题了。如果比较旧的一个版本出现了bug,但是又不能通过更新到最新版本来解决,那么你就必须为那个版本来做一个补丁,但是你手里已经没有那个版本的源代码了-_-,所以要为各个release的版本保存源代码。其实这个原理很简单,就像虽然微软已经发布了windows 7,但是人家仍然会为xp做补丁~

《超速绯闻》幽默感人的韩剧。

2009-04-21 发表在 影音像 | 查看 34 次 | 评论

韩式喜剧,喜好把男人的表情拍的很丰富,加上说话的语调,不得不让人觉得无辜和滑稽。
《超速绯闻》是部众多优秀韩剧里能够出类拔萃的一部。场景抓得很小,基本就是围绕家、播音室、幼儿园,但是感情和搞笑把握得却都很到位。我一个人晚上在家看的好几次都拍案叫绝。

朴宝英很甜,眼睛笑起来都没了。
那个小男孩,很精灵呢。

推荐收看。

5.12¥购买TIS2009——趋势科技5.12周年公益捐助活动

2009-04-16 发表在 工作那点事 | 查看 28 次 | 评论

http://trendmicro.qq.com/

杀毒手的跨版本升级方式探索。

2009-04-15 发表在 工作那点事 | 查看 32 次 | 评论

随着杀毒手的版本越来越多,因此各版本之间如何平滑升级是我们必须考虑的问题。

1·从2.3版本,程序每次启动时都会强制更新index.dll,即“更新组件”。
因此,“最新的更新组件+完整的update.ini”,可以让2.3开始的版本可以平滑升级,包括跨版本升级。
不过,需要注意的是这个“完整的update.ini”,“完整”是指,当前最新版本里应该“完整”地包括哪些内容,而非“需要更新的内容”。如果是后者,跨版本升级就会出现问题。

2·对于2.3以前的版本,我建议使用“一个版本,一个update.ini”的方式来保证跨版本升级。
杀毒手目前流传在外的版本有1.53和2.0,如何让这两个版本平滑升级到2.3?
(1)2.0—>2.3:
维护一个update20.ini,确保2.0的版本能更新到2.3的index.dll,其他组件可不考虑;而2.3的index.dll指向新的更新源update23.ini,用来更新其他组件至最新版本。

(2)1.53—>2.3:
首先保证1.53能升级到2.0,更新到2.0后,重复(1),即可更新到2.3。
1.53—>2.0的更新同样采用“专属update.ini”的方式,确保1.53的index.dll能更新到2.0的index.dll

3·不过这样就带来一个问题,因为1.53和2.0已经流传在外了,也就是说,他们的更新源已经固定了,怎么来为他们配置“专属update.ini”?
这里只能说我们运气好了,幸好目前只流传两个版本,最新版本是2.0,所以说,需要升级的只有1.53,那么1.53肯定能升级到2.0的index.dll,所以,如果要保证1.53能平滑升级到2.3,只要现在更新一下2.0的index.dll,更改其的更新源,不等于1.53升级到2.0的更新源,且不等于2.3的index.dll的更新源

4·因此保证(1)和(2)都成功,只要现在发布一个新的版本,让2.0的index.dll指向一个新的更新源A,2.3的index.dll也指向一个新的更新源B

怀念阿桑。

2009-04-08 发表在 影音像 | 查看 79 次 | 1 条评论

我对于阿桑,有着特殊的感情,或者说是一种缘分。
我听阿桑的时候,很多人还不知道阿桑。
大一那年(2003)理工的夏天,由于学校不让用电脑,所以我的大部分娱乐时间都用来听歌。
挑CD挑来挑去之后形成的一个习惯是,我会根据封面来选CD,觉得封面来电的,我通常都买来听。
当时在理工西山的过道边上看到地摊上有一个沧桑落寞的女子的封面,我至今还是很有印象,心想这女人唱的歌应该很安静很平和,于是买回来听,反复地听。

从第一张的《叶子》《温柔的慈悲》,到后来的《寂寞在唱歌》,等等等等,很多歌只记得旋律,却从来不记得歌名。印象里她的歌适合旅行的时候听,一个人发呆的时候听,适合周末早上起床的时候听,而且一张碟里的歌通常都不错,旋律平和,通透人心。

后来慢慢得知,阿桑很多出名的歌都是翻唱的,而且也正是因为阿桑,让这些歌从鲜为人知变为广为流传。

感谢阿桑,让我有了那么一段安静的音乐享受经历。
你就这样走了,很难过那年你来理工我没去要你的签售CD。我只记得佩佩说,佩佩和你握了手,还夸了你,说你很和蔼很平易近人。我还听别人说,你和师兄张智成在理工的演出很成功。真是替你高兴。

你就这样突然走了,我这一个你的粉丝,真是越写越难受了。

============
当年买的第一张你的专辑,记得封面不是这样的,抱歉当时太穷,买不起正版;后来毕业的时候,低价处理给学弟学妹们了。

电子产品确实容易让人不踏实。

2009-04-06 发表在 记录思考 | 查看 78 次 | 2 条评论

我这里说的电子产品只是电脑和网络,可是我潜意识里感觉,应该不止这俩。
最近周末总宅在家里,而且通常都是围绕着电脑,时间一长,次数一多,觉得心虚,不够踏实;想想之后,觉得应该是因为围绕着电脑的大部分时间都没在汲取营养,而是无所事事:

1·通常先是打开几个常去的网页,看看有没有什么有意思的东西;可是通常找到的很少,就算找到了也通常没有耐心看完;就算看完了,那东西的营养也很少(最简单的例子:去校内看更新……-__-)

2·玩游戏,一玩就是两三个小时,一天过去一大半了

3·间歇性地重复1

4·对着电脑发呆

5·电脑让人疲倦,无心干其他事

搬出椅子,在阳台上看了一下午书,感觉确实好多了。

自适应还是固定?

2009-04-06 发表在 记录思考 | 查看 29 次 | 评论

蛮有意思的,大早上看到下面三个博客发表文章讨论网页的主体内容是自适应还是固定宽度:

一叶千鸟 http://blog.rexsong.com/?p=6040
白鸦 http://uicom.net/blog/?p=827
西乔 http://blog.xiqiao.info/2009/04/04/244

其实我比较同意固定宽度。页面过宽确实会带来两个致命的问题:
1·读者没耐心读;
2·容易跳行。

我的博客今天以前是自适应的,当时这么做的目的有2:
1·自适应图片,保证图片不变形;
2·使用13px的大文字方便阅读;

现在我决定改回固定900px的,因为相对自适应带来的坏处,我放弃他的好处。

另外,显示器确实是越来越大了,但是如果网站的某个页面是用来让用户集中注意来来阅读的,还是固定650px的好。因此不管19寸还是22寸,我的建议是:固定1000px的页面总宽带,650px的主体内容宽度;居中;header和footer可以100%。

当然,非阅读性的页面可以不考虑,比如导航页面,当然100%的好。