Archive for 02月, 2008
Google Adsense 新增功能
星期六, 02月 16, 2008 19:57 No Comments今天在测试新的主题设计, 顺便处理了一下Google Adsense. 发现内容广告中增加了两个三角形按钮, 允许用户对Google Adsense 的广告内容进行翻页显示, UI 操作似乎很不错. 希望我的广告收入可以增加
PS: 下周的工作量巨大, 估计更新频率会下降, 希望你们能继续支持!
Create a new period categories in SAP BO
星期五, 02月 15, 2008 19:58 No CommentsThe following is a VB.NET sample that creates new period categories and returns its parameters.
Dim oPeriodCategory As PeriodCategory
‘get period category
oPeriodCategory = oCompanyService.GetDataInterface(CompanyServiceDataInterfaces.csdiPeriodCategory)
’set period code
oPeriodCategory.PeriodCategory = “My Period Code”
’set period name
oPeriodCategory.PeriodName = “My Period Name”
’set the period type can be year,quater,month or day
‘(e.g. spt_Year=0,spt_quater=1,spt_month=2,spt_days)
oPeriodCategory.SubPeriodType = BoSubPeriodTypeEnum.spt_Year
’set the beginning of Financial Year
oPeriodCategory.BeginningofFinancialYear =”2008-01-01″
oCompanyService.CreatePeriod(oPeriodCategory)
SAP 大事记
星期五, 02月 15, 2008 19:58 No Comments七十年代
1972
· 5 位从IBM 辞职的员工——迪特马·荷普、克劳斯·魏伦路特、哈 索·普拉特纳、克劳斯·奇拉、汉斯魏纳·海克特,成立了一家名叫SAP的公司(全称为“系统分析与程序开发”)。他们的远景目标是:开发用于实时业务处理的标准应用软件。
这家私有公司总部位于德国曼海姆,公司主办公地设在慕尼黑附近;然而,这五位创始人却经常出现在客户的计算机中心。年轻的SAP公司开发的第一个软件程序大部分都是利用夜间和周末时间编写的,主要运行在其第一个客户——英国普内门化学工业公司(ICI)。
1973
· 第一个完整的财务会计软件RF是公司继续开发其他软件组件的基础,该软件后来成为著名的“R/1 系统”。
1974
· 市场要求对现有软件进行技术修改。此时,SAP软件程序运行于OS操作系统中。
· 最早的两位员工保罗·诺加(Paul Neugart)与尤根·哈森伯格 (Jürgen Hachenberger)此时负责 40 家客户。
1975
· 物料管理系统 (RM) 已经成熟,集成性已经非常明显——物料管理 数据直接传输到财务会计系统中,发票验证的登录只需一个步骤即可完成。
1976
· SAP GmbH 作为一个辅助销售和营销的公司而创建(SAP GmbH——SAP 股份有限公司,“SAP”为德文 Systeme, Anwendungen und Produkte in der Datenverarbeitung的缩写,意为:系统、应用和数据处理产品)。5年后,于1972年成立的私有公司解散,其所有权转给 SAP GmbH。
· 员工在每周五举行的足球赛中释放身心。员工与客户共同举办的足球锦标赛非常受欢迎。
1977
· 公司总部从曼海姆迁往沃尔多夫。
· 首次获得国际客户,两家奥地利公司——Nettingsdorfer造纸厂与OKA 能源公 司。这是SAP第一次为德国之外的公司安装其系统。
1978
· 此时已拥有50名员工,客户数量达到100家。
· 财务会计软件RF推出第一个译本——法文版,向国际化又迈进一 步。
· IBM数据库和交互控制系统的全面推进引发了SAP软件的重新思考。第二代标准软件:SAP R/2系统诞生。
1979
· 第一个正式的“研发中心”仍在租来的场地内。但是无论如何,SAP位于沃尔多夫工业园Max-Planck大街的第一栋属于自己的办公大楼开始施工了。
八十年代
1980
· 迁入新的办公大楼。软件开发部门及其50台监视器此时同在一个大房间里。
· 德国100家最大企业中有50家成为SAP的客户。
· 共同创始人克劳斯·魏伦路特由于健康原因离开SAP,离职金100万马克。
1981
· 在德国慕尼黑博览会上首次亮相。
· SAP R/2系统比前一代产品的稳定性有大幅度提高。性能不断提升的 主机也 给SAP带来了更多的客户。
1982
· 在公司经营的第10个年头,SAP的员工已增加到100名。
· 收入上升到2400万德国马克,有来自德国、奥地利以及瑞士的236家公司使用SAP开发的软件。
1984
· SAP(国际)公司在瑞士比尔(Biel)成立,负责协调海外业务。
1985
· 计算机中心此时已拥有三台IBM大型主机和一台西门子计算机。
· [...]
Happy Valentine’s Day
星期四, 02月 14, 2008 19:58 No Comments执子之手, 与子偕老.
CCTV新闻联播之庖丁解牛
星期三, 02月 13, 2008 19:54 No Comments播音员的开场白略去
国内新闻
第一类,political方面
第1条,某某领导-人在国外访问,与其领导-人举行了会谈,一般是达成了共识。在机场无一例外受到华侨、留学生等的欢迎。在访问期间,要在驻当地使-馆亲切会见华侨、留学生、中-资机构代表,并合影留念。
第2条,某某领导-人主持了重要的会议,发表了重要的讲话,强调了某些问题,指出了某些问题,要求大家做到(这后面有很多排比句,气势宏伟)。(旁白这时一般要逐一介绍主要参会者),镜头中,与会人员都认真地地听取会议,用笔在面前的会议材料上进行勾画。
第3条,某某领导-人到某地区进行视察,参观了当地的工矿企业,听取了汇报,并到当地住户家小坐(根据情况或是普通居民,或是村民家)主场景是长沙发,一般会有该户人家的小孩在坐),领导-人进行讲话,众人表情喜悦而又微微拘谨。陪同的领导围坐在旁。有时领导-人会与民同乐,比如包饺子、扭秧歌等。领导- 人有时会接见与当地驻军师以上干部。
第4条,某某领导-人与来访的外国客人会见,双方进行了亲切的交谈,一般都达成了共识,有时还要进行签字仪式。
第5条,发言人对某国政-府或媒体对我国的不实指责进行了义正辞严地驳斥,指出该指责没有事实根据,并严重伤害了中国人民的感情。
第6条,学习某个典型人物,宣扬某种精神。
(备注:各条新闻根据具体情况顺序每天有变,也不一定每天都有。)
第二类,经济性的
第7条,某某产值又增长了百分之几,某地的某种产物丰收,卖出了好价钱。(场景是工厂车间流水线、田间地头,特别是有对又大又红的果实的局部特写)
第三类福利性的
第8条,某地某社区居民又享受到了新的政策,然后有当地群众现身说法,脸上是喜悦的表情,一般所谈及的话题是养老保险、医疗保险或是某种便民措施的实行。
第四类,环保性的
第9条,某地环境保护得好,当地的天鹅、小鸟之类的住得很好。
第五类,生活性的
第10条,某地(一般是北方)出现了冰挂现象(补充一下,我不知道为什么冰挂这么重要,好像不至一次播放冰挂),或是某地迎来了入冬以来第一场大雪。
(后5分钟)
外国新闻
第1条,国际会议,一般场景是联合国等国际组织,就是一各种肤色的人坐着进行讨论和表决。
第2条,一般是大家通过网络、报纸、电台等各种媒体早已知道的某外国领导人当选、下台等新闻。
第3条,外国发生的灾难。(比如校园枪杀、矿难、台风、车祸、海啸、地震、凶杀、游行引发的对抗等)
第4条,外国举办的趣味比赛(比如小猪赛跑什么的),或是一些奇闻怪事(比如某地妇女产下连体婴儿)。
第5条,体育新闻。(出现机率很小)
来源: http://zishuo.com/2008/02/04/224.html
很陈很冠西(情景剧)
星期三, 02月 13, 2008 19:54 No Comments谢霆锋:你还好吗?
张柏芝:我很好。
谢霆锋:我爸我妈我妹妹我儿子都还好把?
张柏芝:爸爸在上海又泡了一个小mm,我刚和妈妈去买了金橘树,你妹妹又找了新的男朋友,儿子挺好的。
谢霆锋:我看过了。
张柏芝:我不是故意的,你相信我,自从嫁给你后,我是真的想和你过日子的。
谢霆锋:我知道,只是我心里很苦,我想杀了他。
张柏芝:你答应过我的,把从前都忘了的。
谢霆锋:你让我安静一会。
张柏芝从房间里走了出去, 谢霆锋开始拨打电话。
谢霆锋:冠希
陈冠希:是你,你现在这个时候打电话给我做什么?你高兴了吧,我毁了,全世界都知道我毁了。
谢霆锋:别这样说,我知道你很苦。
陈冠希:你为什么要这样做?为什么要把照片放出去?
谢霆锋:我快疯了,我恨这些在你怀里的女人,我受够了只能通过你抱过的女人来感受你的体温,受够了你的报复,你要结婚了,我得不到你,只能毁了你。
陈冠希:是你先结婚的好不好?我难道想忘记你,过一个正常男人的生活也有错吗,不想像我父亲,我恨他。
谢霆锋:如果不是看到柏芝私藏的这些照片,我是不会娶她的,我太傻了,我以为这样可以报复你,没想到你根本不在乎。
陈冠希:现在说这些还有意义吗?你赢了,我要离开香港了,我的婚事也吹了,你满意了吧?
谢霆锋:我们都太傻了。我爱你,一直都只爱你一个。
陈冠希:我应该恨你的,为什么我只觉得很无奈,很无力,我先挂了,再见,忘了我吧,好好对待柏芝,她始终最无辜。电话挂断了,霆锋慢慢瘫坐在地上,哭泣起来,他努力不让自己发出声音,夜凉如水。
门外偷听的柏芝,静静的离开,夜很长。
画外音:嫉妒是爱情的毒酒,为什么所有人还甘之如饴?
这夜的香港,维多利亚港的烟花特别灿烂,有人在整理行李,有人在独自哭泣,有人在寂寞里等待希望,只是大家都错过了烟花。
黑暗中:一个女子的声音响起:明天开始,就不要在上传照片了,我知道,我确定,这次他们是真的断了。
来源: http://zishuo.com/2008/02/05/225.html
ERP系統借贷关系表
星期三, 02月 13, 2008 19:53 No Comments成本核算会计信息归纳
按照事务处理的来源类型归纳。
一、 采购接收入库和退货:
1.接收: 借:材料采购 (订单价格)
贷:应计负债 (订单价格)
2.入库: 借:原材料 (标准成本)
贷:材料采购 (订单价格)
借或贷:材料成本差异_材料订单价格
3.退货至接收时产生与上面第2步相反的分录,退货至供货商时产生与上面第1步相反的分录。
二、 子库存转移:只有转出子库产生分录
借:原材料(自制半成品、库存商品)
贷:原材料(自制半成品、库存商品)
三、 杂项事务处理:
1.库存增加:借:原材料(自制半成品、库存商品)
贷:账户别名(或自定义账户)
2.库存减少:与上面相反的分录
四、 采购发票匹配:借:应计负债 (订单价格)
应交税金_增值税_进项税
贷:应付帐款 (发票价格)
借或贷:材料成本差异_材料发票价格差异
五、 生产环节:
1. 标准工单:
① 标准工单领料:借:生产成本_直接生产成本_材料
贷:原材料(自制半成品、库存商品)
② 标准工单退料:与上面相反的分录
③ 标准工单资源事务处理(即人工):虽然我司没有在WIP模块进行实际的人工成本核算,但系统会自动核算一笔,基于在定义资源时的吸收账户为“生产成本_直接生产成本_直接人工”,系统产生以下分录:
借:生产成本_直接生产成本_直接人工 (包含成本中心信息)
贷:生产成本_直接生产成本_直接人工
(值为零,且只有装配件定义了资源、工艺路线的工单才会产生此分录)
因此,在总帐模块处理实际人工和制造费用时,建议:
借:生产成本_生产成本差异_人工 (实发工资)
贷:应付工资
借:生产成本_生产成本差异_费用 (实际发生的制造费用)
贷:制造费用
④ 标准工单完工入库:借:原材料(自制半成品、库存商品)
贷:生产成本_直接生产成本_直接材料
生产成本_直接生产成本_直接人工
生产成本_直接生产成本_直接费用
(仅库存商品会有人工和费用科目)
⑤ 如果按照标准成本生产,即发生成本和冲减成本一致,则工单关闭时没有差异;
⑥ 工单关闭时,如果材料的发生成本比冲减成本大,即多耗料:
借:生产成本_生产成本差异_材料
贷:生产成本_直接生产成本_直接材料
如果少耗料则产生相反分录。
生产环节只产生量差,不产生价差。
⑦ 工单关闭时,对于人工和费用产生的分录恒定为:
借:生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
贷:生产成本_生产成本差异_人工
生产成本_生产成本差异_费用
2. 非标工单:(对一般性分录不归纳,如领材料等)
① 有完工入库的非拆卸工单
发出成品时:借:生产成本_直接生产成本_直接材料 (标准)
生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
贷:产成品
完工入库时:借:库存商品
贷:生产成本_直接生产成本_直接材料 (标准)
生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
关闭时:借:生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
贷:生产成本_生产成本差异_人工
生产成本_生产成本差异_费用
借:生产成本_生产成本差异_材料
贷:生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
② 拆卸工单:
发出成品,同上;
发放负组件:借:原材料(自制半成品)
贷:生产成本_直接生产成本_直接材料
返还负组件,产生与之相反分录;
关闭时:借:生产成本_生产成本差异_材料
贷:生产成本_直接生产成本_直接材料 (标准)
生产成本_直接生产成本_直接人工 (标准)
生产成本_直接生产成本_直接费用 (标准)
3. 其它委外加工、外协加工、编码拆分等类型类似工单处理(因为科目设置一样)
六、 销售环节:
1. 挑库:借:分期收款发出商品
贷:库存商品(自制半成品、原材料)
2. 发运:借:分期收款发出商品
贷:分期收款发出商品
七、 成本更新:
1. 对库存的影响:
如果单位成本增加,则 借:原材料(自制半成品、库存商品)
贷:材料成本差异_材料成本更新差异
如果单位成本降低,则产生相反分录
2. 对在制品的影响,需要区分不同的工单状态
① 工单已发放状态,组件尚未发,装配件未入库,装配件物料、人工和制造费用及组件的更新均不产生影响;
② 工单已发放状态,组件已发,未有装配件入库,装配件物料、人工和制造费用的更新不产生影响,某组件的成本更新会产生影响,
借(贷):生产成本_直接生产成本_直接材料
贷(借):生产成本_生产成本差异_在制品成本
③ 工单已发放状态,组件已发,装配件部分入库,如果是装配件某一组件更新引起装配件成本更新,则组件和装配件的更新都会产生影响:
(组件成本增加)组件产生的影响:
借:生产成本_直接生产成本_直接材料(已发料数量*更新值)
贷:生产成本_生产成本差异_在制品成本
装配件产生的影响:
借:生产成本_生产成本差异_在制品成本
贷:生产成本_直接生产成本_直接材料(已入库数量*更新值)
对于以后再入库的按新装配件成本冲减。
组件成本减少产生相反分录。
④ 工单已发放状态,组件已发,装配件部分入库,物料没有更新,装配件的资源或制造费用更新(人工定义非累计的更新)对已入库部分产生影响:
成本增加:借:生产成本_生产成本差异_在制品成本
贷:生产成本_直接生产成本_直接人工(已入库数量*更新值)
(或 贷:生产成本_直接生产成本_直接费用)
成本减少产生相反分录。
⑤ 工单已完成状态,组件已发,某个组件更新(但装配件并没更新),对组件的发料会产生影响:
成本增加:借:生产成本_直接生产成本_直接材料 (已发料数量*更新值)
贷:生产成本_生产成本差异_在制品成本
成本减少产生相反分录。
⑥ 工单已完成状态,组件已发,某个组件更新引起装配件物料成本更新,对组件发放和装配件入库都会产生影响:
成本增加:借:生产成本_直接生产成本_直接材料 (已发料数量*更新值)
贷:生产成本_生产成本差异_在制品成本
借:生产成本_生产成本差异_在制品成本
贷:生产成本_直接生产成本_直接材料(入库数量*更新值)
成本减少产生相反分录。
⑦ 工单已完成状态,组件已发,物料没有更新,资源或制造费用更新(人工定义非累计):
成本增加:借:生产成本_生产成本差异_在制品成本
贷:生产成本_直接生产成本_直接人工(直接费用)
成本减少产生相反分录。
八、 根据开票信息在总帐结转销售成本:
借:主营业务成本(其它业务支出_材料)
贷:分期收款发出商品
九、 汇总各个差异账户,按规则在总帐中分摊。
1.采购验收作业,产生会计分录如下:(
借):收货科目 (Receiving Inventory) @ PO Price
(贷):存货AP应计额 (Inventory AP Accrual) @ PO Price
2.入库作业,有应付帐款立帐信息,则依循立帐信息,无立帐信息,则采用采购单信息,产生会计分录如下 (假设有应付帐款立帐信息):
(借):原物料科目 (Material Account) @应付帐款立账本币金额
(贷):收货科目 (Receiving Inventory) @ PO [...]
某个日期是在一年中的第几周 — 被遗忘的GregorianCalendar类
星期三, 02月 13, 2008 19:48 No Commentsusing System.Globalization;
GregorianCalendar gc = new GregorianCalendar();
int weekOfYear = gc.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
写成通用的方法,获取某一日期是该年中的第几周
using System.Globalization;
/// <summary>
/// 获取某一日期是该年中的第几周
/// </summary>
/// <param name=”dt”>日期</param>
/// <returns>该日期在该年中的周数</returns>
private int GetWeekOfYear(DateTime dt)
{
GregorianCalendar gc = new GregorianCalendar();
return gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
}
以前还在CSDN上遇到这样一个问题,就是计算某一年有多少周,同样可以用这个类的方法来解决
using System.Globalization;
/// <summary>
/// 获取某一年有多少周
/// </summary>
/// <param name=”year”>年份</param>
/// <returns>该年周数</returns>
private int GetWeekAmount(int year)
{
DateTime end = new DateTime(year, 12, 31); //该年最后一天
System.Globalization.GregorianCalendar gc = new GregorianCalendar();
return gc.GetWeekOfYear(end, CalendarWeekRule.FirstDay, DayOfWeek.Monday); //该年星期数
}
来源: [...]
瘟神的尾行 — Rootkit技术发展史
星期二, 02月 12, 2008 19:55 No Comments作者:小金
来源:网络技术论坛
一. 无法驱逐的“助手”
网管小张正在手忙脚乱的寻找他的手工杀毒工具包,因为他在安装一个网管工具的时候无意中走了神,点击了“下一步”按钮后才惊觉安装程序的界面里一个不引人注目的角落里写着“安装CNNIC网络实名”这一行小字,而且最开头部分有一个小小的勾。于是著名的 “中国网民的得力助手”便理所当然的在他的机器里安了家。
心里把厂商骂了十八遍的小张终于翻出了他外出修机时最得意的工具IceSword和超级巡警,果然在进程列表和SSDT列表里发现了红色警报,小张笑了笑,对付这些一般用户无法卸载的恶意流氓,自己可谓经验丰富了,当下便三下五除二的把 CNNIC的进程给终结了,SSDT也给恢复了初始状态,然后小张去删除注册表启动项——突然发出的一个错误提示声音把小张吓了一跳,再定睛一看,他的笑容凝固了:“删除项时出错”。不会吧?小张急忙去删除CNNIC目录,结果彻底愣在了那里,系统弹出的错误提示很明确的告诉他,“无法删除文件,文件可能正在被使用”。怎么回事?小张一下子没了头绪……
达尔文的进化论告诉我们,“物竞天择,适者生存”,同样,在这安全与入侵的网络世界里,也在进行着这样一场选择的过程……
二. 被AIDS纠缠的互联网
Rootkit 是什么?如果您在几年前就是本刊的读者,那您一定已经看过小金写的涉及Rootkit的相关文章,一种在当时可以被称为“艾滋病毒AIDS”的技术产物,只是,在这场“适者生存”的残酷游戏里,最终存活的,只剩下Rootkit了,于是,今天的Rootkit地位已经等同于当年的感冒病毒——因为它实在是太普遍了,在用户上网的同时,瘟神时刻都紧随着其后,以求伺机而入。
小知识:什么是Rootkit?
Rootkit自身也是木马后门或恶意程序的一类,只是,它很特殊,为什么呢?因为,你无法找到它。
正如自然界的规则一样,最流行的病毒,对生物的伤害却是最小的,例如一般的感冒,但是最不流行的病毒,却是最夺命的。Rootkit木马就是信息世界里的 AIDS,一旦感染,就难以用一般手段消灭了,因为它和自然界里的同类做的事情一样,破坏了系统自身检测的完整性——抛开术语的描述也许难以理解,但是可以配合AIDS的图片想象一下,由于AIDS破坏了人体免疫系统,导致白细胞对它无能为力,只能眼睁睁看着人体机能被慢慢破坏。计算机系统没有免疫功能,但是它提供了对自身环境的相关检测功能——枚举进程、文件列表、级别权限保护等,大部分杀毒软件和进程工具都依赖于系统自带的检测功能才得以运作,而 Rootkit木马要破坏的,正是这些功能。
要了解Rootkit木马的原理,就必须从系统原理说起,我们知道,操作系统是由内核(Kernel)和外壳(Shell)两部分组成的,内核负责一切实际的工作,包括CPU任务调度、内存分配管理、设备管理、文件操作等,外壳是基于内核提供的交互功能而存在的界面,它负责指令传递和解释。由于内核和外壳负责的任务不同,它们的处理环境也不同,因此处理器提供了多个不同的处理环境,把它们称为运行级别(Ring),Ring让程序指令能访问的计算机资源依次逐级递减,目的在于保护计算机遭受意外损害——内核运行于Ring 0级别,拥有最完全最底层的管理功能,而到了外壳部分,它只能拥有Ring 3级别,这个级别能操作的功能极少,几乎所有指令都需要传递给内核来决定能否执行,一旦发现有可能对系统造成破坏的指令传递(例如超越指定范围的内存读写),内核便返回一个“非法越权”标志,发送这个指令的程序就有可能被终止运行,这就是大部分常见的“非法操作”的由来,这样做的目的是为了保护计算机免遭破坏,如果外壳和内核的运行级别一样,用户一个不经意的点击都有可能破坏整个系统。
由于Ring的存在,除了由系统内核加载的程序以外,由外壳调用执行的一般程序都只能运行在Ring 3级别,也就是说,它们的操作指令全部依赖于内核授权的功能,一般的进程查看工具和杀毒软件也不例外,由于这层机制的存在,我们能看到的进程其实是内核 “看到”并通过相关接口指令(还记得API吗?)反馈到应用程序的,这样就不可避免的存在一条数据通道,虽然在一般情况下它是难以被篡改的,但是不能避免意外的发生,Rootkit正是“制造”这种意外的程序。简单的说,Rootkit实质是一种“越权执行”的应用程序,它设法让自己达到和内核一样的运行级别,甚至进入内核空间,这样它就拥有了和内核一样的访问权限,因而可以对内核指令进行修改,最常见的是修改内核枚举进程的API,让它们返回的数据始终 “遗漏”Rootkit自身进程的信息,一般的进程工具自然就“看”不到Rootkit了。更高级的Rootkit还篡改更多API,这样,用户就看不到进程(进程API被拦截),看不到文件(文件读写API被拦截),看不到被打开的端口(网络组件Sock API被拦截),更拦截不到相关的网络数据包(网络组件NDIS API被拦截)了,幸好网络设备的数据指示不受内核控制,否则恐怕Rootkit要让它也不会亮了才好!我们使用的系统是在内核功能支持下运作的,如果内核变得不可信任了,依赖它运行的程序还能信任吗?
这段概念是三年前写下的,而如今的网络世界,越来越多的木马后门在反病毒产品的围剿下消灭殆尽,就如同在一个密封的箱子里投入五大毒虫,让它们自相残杀,无论结局怎么样,总会有一方顽强的存活下来,而幸存的这只毒虫,就是最强最可怕的,只不过,反病毒产品并非每次都能成为存活下来的一方,而能够存活下来的非反病毒产品,必然是Rootkit。
这唯一幸存的毒虫所采用的技术迅速成了众人研究学习的重点,于是,Rootkit在短短几年内就走下了神秘的舞台,越来越“平民化”了,网络终于成为一个新的“艾滋病村”,在如此“平民化”的氛围里,Rootkit终于有了它“平民化”的名称:驱动木马、驱动马、带驱动的木马,诸如此类,而它的本名,也被缩写为“RK”,多用于高人之间的交流称谓。
而普通上网民众,对这些东西的存在完全是概不知情的,或者,仅限于一个模糊的概念……
//文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金
当其他类型的木马后门技术已可以轻而易举被歼灭以后,Rootkit技术就成了这场对抗赛的主力军,于是,为了存活,“驱动马”也开始出现不同的发展分支,在普通网民尚未察觉的时候,它们早已经“变异”出不同派系了……
一切的开端:SSDT Hook
在很早很早以前,一些用户突然觉得自己的机器存在异常,并经常有被人监控的感觉,于是使用杀毒软件进行全盘扫描,答案却是否定的,于是用户就信任杀毒软件,放心的去用了,直到有一天,“灰鸽子”木马在网上闹得轰轰烈烈,用户慌忙去下载了最新专杀工具,这一下,用户被吓坏了:我是什么时候被感染的灰鸽子?
普通网民第一次与“会隐形的木马”打交道,莫过于灰鸽子事件了,但是为什么“灰鸽子”无法被任务管理器和那时候的杀毒软件找到,甚至用户自己手动去查找,也是无功而返呢?这是因为,灰鸽子使用了最初的Rootkit技术:SSDT钩子。
而后,又有一些尚在雏形阶段的恶意流氓软件,也开始大玩“隐身”了,用户们是丝毫没有察觉的,除非一些恶意程序太过于张扬,但是,即使如此,他们也始终找不到异常情况发生的依据,任务管理器里没有、搜索文件没有、就连注册表监视软件,也没了回应……
造成这些现象的原因是什么呢?因为灰鸽子,以及后来出现的恶意程序,它们使用的交互接口,并非Ring 3用户层上的标准Win32 API,而是通过各种手段,例如驱动程序,进入到Ring 0内核层的Native API。
“Native API”(原生API)是Windows NT架构系统中真正工作的API,众所周知,Windows是一个通过大量API函数来实现程序功能的系统,然而,由于Windows是支持POSIX标准(可移植操作系统接口,Portable Operating System Interface)的系统,这就意味着,它除了能运行标准Windows平台程序(即Win32程序)以外,还支持少量其他平台上的程序运行,如 OS/2。由于不同平台的程序功能实现方法差异,系统就必须分别为它支持的各个符合POSIX标准的程序提供相应的接口函数,如果根据这个思路去开发一套庞大而完整的接口函数调用,那就太不切实际了,于是,在NT架构系统上,开发者设计了两种不同性质的API接口层,一种被称为“用户态API”,它包括常见的Win32 API和POSIX接口API等,这些API运行在Ring3用户层上,构成了今天的Windows世界;而另一种是被称为“Native”性质的 API,它们才是真正的系统API,通常运行在内核态上,实现真正的系统核心功能调用。同时为了实现POSIX,开发者还设计了被称为“子系统”(Sub System)的技术来将不同的系统环境区别开来,正常情况下,从系统引导到桌面时,我们就处于“Win32”子系统下,这时候起到作用的自然就是 Win32 API。普通程序员平时接触到的几千个Win32 API,实际上都是通过几百个Native API的不同封装形式来实现的。系统厂商极少提供这些API的公开文档,是因为它们要比一般的函数难以应用而且可能发生变化,当程序员使用Win32 API时,最终的执行过程是在系统经过兼容性检查、错误处理、参数选项分离等一系列复杂转换后,才送入Native API进行处理的,Native API才是真正执行并反馈运行结果的主体,用户层的API调用只是一种封装形式罢了,例如fopen和CreateFile这两个Win32函数,它们的真正执行函数是Native性质的NtCreateFile,这就是rootkit可以让一般的进程工具不能发现自己的原因,因为它直接干涉了 Native API的执行结果。
因为API还有这样复杂的故事,所以现在的恶意程序纷纷为了能最大限度提升自己的权限而变身rootkit性质程序,去“钩”这些原生API,而达到同等层次的安全检测工具和反病毒产品,也为了达到同样的效果而做了同样的事情,到了这个地步,安全产品和恶意软件在执行过程中已经没有区别了,唯一的区别是对用户和系统环境造成的后果差异而已。
既然大家都要控制到原生API层,那么他们的做法有没有共同点呢?答案是一定的,Windows作为一个规范的系统,就必须在原生API和用户层API之间存在一个标准的接口来实现数据传递,并限制用户使用其他不知名的操作来达到目的,这个接口由一个名为“ntdll.dll”的动态链接库文件负责,所有用户层API的处理都是调用这个DLL文件中的相关API入口实现的,但它只是一个提供从用户层跳转到内核层的接口,它并不是最终执行体。当API调用被转换为ntdll内的相关API函数后,系统就会在一个被称为 “SSDT”(System Service Descriptor Table,系统服务描述符表)的数据表里查找这个API的位置,然后真正的调用它,这时候执行的API就是真正的原生API了,它们是位于NT系统真正内核程序ntoskrnl.exe里的函数。这一过程,就是系统服务的调用,例如外壳程序需要运行一个新的进程,那么它就会调用kernel32.dll 导出的API函数CreateProcess,接下来就是kernel32.dll内的执行过程,实际上它只是把这个请求又包装了一下,变形为自己发出的参数,去调用ntdll.dll里导出的NtCreateProcess函数,然后ntdll.dll通过一个中断请求int 2Eh(Sysenter)进入内核态,并把我们最初的新建进程请求转换为“服务号”一起传递过去,到了内核的世界里,在正常手段下对API的调用都需要先通过一个函数地址描述表的转变来实现,SSDT就是这个表,它记录了一个庞大的地址索引,内容为几百个原生API在内核中导出的地址位置,除此之外还有一些有用的其他信息,在这个例子里,系统根据SSDT里记录的服务号与函数对应关系来确认我们要使用什么函数,以及这个函数在内核中的位置信息,最终实现功能调用,函数执行完毕后再把结果通过ntdll接口一层层传递回去,直到发出请求的程序收到一个表示处理结果的状态代码,这一次系统服务的调用过程就结束了。
由于上述原理,无论是恶意程序还是反病毒产品都会优先考虑把SSDT的内容给篡改以达到效果,简单的说,例如一个恶意程序把SSDT里对于获取进程标识的服务号对应的原生API地址修改为指向自己位于Ring0层的驱动入口,那么每次系统执行到这个函数时,都会由于SSDT的错误引导而进入了作者指定的服务模块中,就会导致相关的操作请求和参数被这个第三方模块记录和篡改,于是各种奇怪的现象就会发生了,就拿隐藏自身进程的rootkit技术来说,其原理就在于通过篡改SSDT里枚举进程的原生API服务号先指向自己的模块,再由自己的模块另行传递到真正的系统服务上(如果没有这一步操作或者操作错误,那么这个对应的系统服务就会作废甚至引发系统崩溃),并对真正的系统服务返回的数据进行加工处理,如删除带有自己进程名的数据,那么最终返回的数据里自然就 “看不到”这个进程了。
通过操纵SSDT,以这个技术维生的Rootkit嚣张跋扈过一段时间,无论是木马后门还是流氓插件和恶意软件。在幕后挣钱的作者们也结结实实的过了个肥得流油的好年,然而好景不长,Anti-Rootki t(反Rootkit,即“ARK”)的概念被提出了,ARK工具也诞生了,如国产的IceSword、超级巡警等。此类ARK工具的运作原理和 Rootkit大相径庭,它们也是通过驱动模块将自身投入系统内核中,从而达到了与Rootkit们平起平坐的公平竞争地位,然后,位于用户层的程序主体和进入内核态的驱动模块同时产生一个相同的查询API,例如枚举当前系统进程列表等,由于Rootkit的存在,用户层的程序主体最终得到的数据会比驱动模块返回的数据少那么几个——很明显,Rootkit驱动拼命要隐藏起来的用户层程序就此暴露,不打自招了;而同时,ARK还能将当前SSDT服务号指向的函数幕后的执行主体找出来,如果某个服务号指向的函数对应的执行主体不是NTOSKRNL.EXE(XP及以上系统中,某些机器是 ntkrnlpa.exe),则可以断定该服务号有问题了。超级巡警以及后来的ARK更是直接提供了“一键恢复”功能,只需用户鼠标轻轻一点,所有第三方程序在SSDT挂住的钩子纷纷“脱钩”,短时间内就把RK布下的层层障碍给解除了,在一段时间内RK的势头迅速被压了下去,短暂的世界太平,短暂的,恩。
对于SSDT Hook,现在的所有Anti-Rootkit工具都能轻易找出并解除它的钩子(脱钩,Unhook),如IceSword、RKU、超级巡警等。
运行IceSword,首先点击“进程”,观察这里是否存在红色标记的进程,如果有,说明你的系统里绝对存在SSDT Hook,那红色的进程正是被底层驱动隐藏起来的文件,将它的具体位置记下来,并将其终止。
现在点击进入SSDT列表,会发现一些被红色标注出来的行列,记住它的“当前服务函数所在模块”,这个就是实施SSDT Hook的底层驱动文件。
然后,使用超级巡警切换至高级模式,将SSDT恢复为初始状态,它的所有防御就被解除了,现在直接查找刚才记录的文件去删除吧。
进一步试探:Shadow SSDT Hook
RK 作者不甘心,无论是出于技术上的抗争还是利益上的损失,反正,ARK既然让我丢了面子或瘪了钱包,那么,“有朝一日龙得水,定叫长江水倒流!”,一些人开始尝试研究破解Anti-Rootkit工具,誓与之抗争到底,另一些人,则开始了新的探索,最终,双方都有了成效:首先,pjf的大作 [...]
“局内”与“局外”:一场中国官场饭局的解读
星期一, 02月 11, 2008 19:47 No CommentsX年x月x日,陈(副)教授因公到某市出差,见到了多年的老同学唐经理(某公司经理,两人在校期间是很要好的朋友,毕业后还经常联系),晚上唐经理为老同学接风洗尘,并邀请了李科长(某局某科科长)、曾主任(某局办公室主任)、王秘书(市某领导秘书)、张局长(市辖区某局局长)、李局长(市某局副局长)五人于晚上6:30在x市x酒店x包厢(星级酒店)吃饭。
品味这场官场饭局,不难看出官员的到场顺序反映出官员权力的大小;称呼后面玩的是面子游戏;酒是官场饭局的精华所在;吃腻了山珍海味反而觉得土豆好吃则是对官员的一种绝妙讽刺。
一、到场顺序:权力大小的反映。
(一)官员迟到:看似无意实则是摆官谱。官员迟到,司空见惯、习以为常,是官员的一种习惯,没有什么好大惊小怪的。唐经理与陈教授5点50分就到了酒店, 5名官员在6:30分这个约定的时间,则是一个也未到,6:35分李科长到酒店包厢,6:42分曾主任到酒店包厢,6:50分张局长到酒店包厢,7:02 分李局长到酒店包厢,7:13分王秘书最后到酒店包厢。5名官员都迟到,是偶然?是巧合?还是必然?不可否认,有的官员事情比较多,因为公事而迟到那也无可厚非。5名官员都迟到,这样的现象恐怕就不是那么简单,如果请吃饭的是几位官员的领导,还敢迟到吗?官员迟到:表面无意实则有意,是在摆官谱,“所谓官谱、官派,就是做官的排场、派头”。“官场中人的普遍看法是:做官就应当有官谱、官派,不然算什么官?所以,一旦为官,便要摆谱、摆派。”[1]迟到的根本原因在于请吃饭的是生意人,在官员面前处于弱势低位,似乎不摆摆谱就不能表示自己是一个官,难以体现自己尊贵的身份。
(二)到场先后:权力大小的反映。官员迟到是一种常态,科长迟到几分钟,而局长迟到半个多小时,权力越大的官迟到的时间也就越久。唐经理要等官员,官员也要等,当然只是小官等大官,权力小的科长要等权力大的局长,局长要等更大的官。权力分三六九等,位低者只有等的份,“等上级”是一条重要的官场原则,并以权力大小为依据,无权者等有权者,位低者等位高者,理所当然、天经地义!
(三)秘书:权力递延的获益者。表面看来,秘书最后一个才到是对到场顺序是权力大小反映这一规则的颠覆,事实上并非如此。“近水楼台先得月”,领导的权力很容易递延到秘书这里。“所谓权力递延就是非权力拥有者因与权力拥有者有着千丝万缕的关系,直接或间接行使着权力,也就是权力递延到了他们身上。” [2]作为市领导的身边人,王秘书在该市拥有的政治资源并不会比其他在场的官员少, “宰相家人七品官”,在该市可以说是“一人之下,万人之下”,接近领导、与权力核心联系密切这种特殊的工作性质,往往容易获得实质权力,是权力递延的最容易获得者,甚至大权在握。科长、局长办不好的事,王秘书则很有可能办好。不是因为秘书本身的官有多大,权力有多大,而是王秘书是市某领导的秘书,“不看僧面看佛面”,官职不大,但权力却有可能约等于他的领导,他代表的不仅仅是个人,在某种意义上代表的也是市领导。
二、称呼:面子游戏。鲁迅先生说过“面子是中国精神的纲领。”中国人爱面子,甚至死要面子,往往“打肿脸充胖子”,做事处世,最忌抹面子。“‘面子’代表中国社会中广泛受重视的社会声誉,它是个人在人生历程中借由成就和夸耀所获得的名声,也是个人借由努力和刻意经营所积累起来的声誉。”[3]“与某某领导在x酒店一起共餐”,对于唐经理而言,本身就是一件很有面子的事。而副教授称教授,经理称老总,副局长称局长,虽然“副”说起来的确有点拗口,称呼中变 “副”为正,这也符合日常生活习惯,当然也有“转正”的期待,更是一种有面子的行为,玩的是面子游戏。“人是脸,树是皮”,面子和一个人的社会地位和声望息息相关,“正”比“副”更有面子,于是“你给我面子,我给你面子”,大家互给面子。
三、酒:饭局的精华。“无酒不成宴”,酒是饭局的精华所在,没有酒的饭局就说不上真正的饭局,在饭局中没有哪样东西比酒更重要了。以酒助兴,借酒消愁,酒还化解官员个人之间以前的恩怨,“一杯泯恩怨”;我敬你,你敬我,“酒肉穿肠过,交情心中留”,喝了酒,大家的感情自然也就会升温。
(一)酒的档次。饭局当中的每个人(不包括陈教授)在当地也算是有头有脸的人物,酒的档次太低也不行,浏阳河、金六福这种档次的酒在农村可以说是高档酒,在官员的眼里这种档次的酒是上不了台面的;但是档次太高也不行,毕竟有教授在场,担心老同学不习惯,此外,一些名酒价钱太高,也没有这个必要,最终要了2 瓶52度的茅台酒和1瓶葡萄酒。
(二)敬酒。权力在现代社会中已经无孔不入,敬酒看是无关紧要,实则充满了权力的音符,敬酒后面隐藏的是权力崇拜,表现为权小者对权大者的媚权行为。敬酒前大家齐举杯并相互碰杯,每个人嘴里都念念有词,但是谁也不知道其他人具体说了什么,杯里的酒也没有一口干,只是象征性地喝一口。
唐经理首先向王秘书敬酒,其次才敬局长,最后才敬李科长和曾主任;李科长首先也是向王秘书敬酒,其次才敬2个局长,最后才敬曾主任;2个局长也向王秘书敬酒,但是没有向李科长和曾主任敬酒;王秘书回敬了2个局长的酒,也没有向李科长和曾主任敬酒。在敬酒的过程中,5名官员都向唐经理敬酒,毕竟是唐经理请客,能在一起吃饭,私人感情或多或少还是有的。5名官员也都向陈教授敬酒。
陈教授并不是没有敬酒的经验,只是与官员在一起有点不适应,作为一个官场的局外人,刚开始不知该如何是好,也许是看不惯敬酒中逢场作戏的表演,更多的还是没有“入场”,不是局内人,敬酒的游戏规则还不是很懂。但在其他的政府官员敬酒后,才慢慢意识到应该“入乡随俗”。陈教授首先也是先回敬王秘书、其次才是 2个局长、最后才是曾主任、李科长,敬酒的顺序与其他官员完全吻合!教授不愧是教授,一学就会!其实敬酒的规则很简单,无权者敬有权者,权小者敬权大者。不是每个人天生就会敬酒,只要经历几次,自然而然就会了,关键在于有没有资格“入局”。敬酒玩的是权力游戏,谁拥有的权力最大,谁就掌握游戏规则,权力较大的人则可以对某些游戏规则进行变通,权小者或无权者则只有遵守的份,对权力的崇拜、追逐与抵制通过敬酒淋漓尽致地表现出来。
(三)酒量。在官场,饭局很多,不喝酒的人很难在官场生存,仅仅喝酒是不够的,还要有酒量才行。喝完2瓶白酒,也没有什么醉意,看来官员“喝白酒一斤两斤不醉”并非言过其实。难怪有的领导在选用干部的时候,认为“酒场就是战场,酒风就是作风,酒量就是胆量,酒瓶就是水平”,把会喝酒、酒量大作为选拔干部的一条重要标准,“喝得满地爬,这样的干部要提拔”, 就是不去理会是否“喝坏了党风喝坏了胃” 。
(四)谈酒。中国的酒文化是文化百花园中的一朵奇葩,曹操煮酒论英雄,李白举杯邀明月,苏东坡把酒问青天,酒给了多少英雄豪杰不凡的壮举,赐予文化浓厚的生活气息。酒桌上,官员当然会谈酒。
1. 与酒有关的故事:如数家珍。如十八碗酒醉上景阳岗的打虎英雄武松,“鸿门宴”, “杯酒释兵权”,周恩来总理为什么独爱茅台等等。
2. 意外:吟诗助兴。或许是为了显示自己并不是大老粗,或许是有教授在场想展示自己的“才华”,或许是今天兴致很好的缘故,唐经理无意之中说 “酒逢知己千杯少”、陈教授说“葡萄美酒夜光杯”,看到唐经理与陈教授都说了,几个官员也不甘落后,张局长说“今朝有酒今朝醉”,曾主任说“借酒消愁愁更愁”,李科长说“醉翁之意不在酒”,李局长说“酒不醉人人自醉”。吟诗助兴在官场饭局中非常少见,这次完全是意外。
3. 怪论:酒与人才的关系。“对酒的历史不了解,对酒文化一窍不通,也能算是人才?“连酒圣是谁都不知道也能称得上专家、教授。”“不喝酒的人就不是人才,酒量不行的人也不是人才。”难怪有的领导在选拔干部时把酒量作为一条重要标准。
四、吃:土豆胜过山珍海味。官员的饭局多,应酬多,哪个酒店有什么特色菜,厨师的手艺怎么样,都了如指掌。
(一)投其所好。“不怕领导讲原则,就怕领导没爱好。”一些生意人把这句话作为座右铭。李科长喜欢x鞭,曾主任喜欢吃狗肉,李局长喜欢燕窝,王秘书喜欢吃红薯、土豆;谁喜欢吃酸味,谁喜欢吃辣味,谁喜欢吃甜味,唐经理心里有一本帐。其实在一起吃的次数多了,连某某官员喜欢吃什么这点本事都没有,又怎么可能与官员“称兄道弟”。在官员没有到酒店之前,唐经理就已经把菜点好了,当然,在邀请这些官员时,唐经理也不会忘记与他们说“X酒店有您喜欢的xx菜”。 “苍蝇不叮无缝的蛋”,生意人抓住官员吃的爱好这块“软肋”, “吃别人的嘴软”,“天下没有免费的午餐”,官员迟早要为“吃”付出代价。
(二)想吃土豆讽刺了谁?官员喜欢吃土豆不是因为土豆营养成分高,有治疗习惯性便秘和预防血胆固醇增高等功效,其真正原因在于吃腻了山珍海味,山珍海味吃多了,也就不是山珍海味了,土豆反而成了山珍海味。土豆更多是农村那些原汁原味的农产品的代名词。要是让官员连续吃上几天土豆,还会说土豆的味道好吗?
五、说:双重角色。一方面,官员表现出普通人粗俗的一面,言语中充斥粗话、脏话、笑话;另一方面,官员就是官员,官员话官场,小心翼翼,点到为止。
(一)粗话、脏话、笑话。官员是官不假,但是官员也是人。吃饭喝酒过程中粗话、脏话连篇,“他x的”、“操你x的”、“顶你个肺”,脏话粗话基本不离口。有吃有喝是不够的,还要喝得痛快才行,笑话是酒桌上的调味品,特别是说起黄色笑话来津津乐道,“八仙过海各显神通”,让人忍俊不禁捧腹大笑,这样酒桌上的气氛也就浓了。
(二)有的高见其实很荒谬。有的官员虽然有本科文凭、有的甚至有研究生文凭,其实并没有多少“墨水”。 “建设社会主义新农村还不简单,农民多赚钱就行了”,“和谐和谐,象我们这样有好吃的、好住的就和谐了”。荒谬的高见!
(三)官员话官场:点到为止。官员在一起,交谈过程中不可避免地会提到一些与官场有关的人和事。如“x普通话说不标准、一口XX腔,写文章也不行,可现在在x单位做一把手。”“某某领导最近怎么样怎么样”、“谁是谁的人”、“谁又可能被提拔”。尽管大家都是熟人,还算“信得过”,但是几个官员说话时都很注意分寸,知道哪些事可以说,说到什么程度,哪些事不能说,不该说、不能说的的坚决不说,“不说好,不说坏,谁也不见怪”,点到为止就行了,反正都是官场中人,大家心知肚明。
参考文献:
[1]李乔.清代官场图记[M].中华书局.2005年,第217页
[2]彭继德.权力递延现象的思考[N].团结报, 2006-11-06
[3]黄光国、胡先缙著.《面子—中国人的权力游戏》[M].北京:中国人民大学出版社2004年,第64页
来源: http://blog.vsharing.com/kongxiangyun/A534204.html