Shell's Home

大教堂

Jun 19, 2005 - 1 minute read - Comments

很久以前就听过巴利奥斯的大教堂,不过一直都不知道叫什么。(相信大家也听过吧,尤其是男生,CS中某关在教堂附近的音乐……)然后,我学了吉他,知道了名字。不过很抱歉也很遗憾,我弹不来。嘿嘿,好像我有点懒…… 不过大教堂的却也够难……不但技术上要求技巧高,弹奏速度快,而且持续时间超长。技术差点,不是弹不出来,就是断断续续,或者根本弹不完。开始的时候就要用拇指食指中指交替快速弹奏,我现在连这段都无法连贯弹出来。看来弹完它这个梦想是终身无望了…… 大教堂给人的感觉有点庄严不是那么特别的庄严。每次烦躁的时候听,心里面都会平静下来。但是静心仔细听,又给我一种蠢蠢欲动的感觉。上跳下窜的音符引发隐约的躁动,仿佛要发生什么,又什么都不会发生。每个走向都非常出人意料,就像人生,你永远不知道下一刻你会得到什么。

blogs

Jun 18, 2005 - 1 minute read - Comments

今天觉得MSNSpace还不错,呃,我没有在做广告。刚刚发现上面可以加入音乐列表和图书列表……虽然这些都需要外置空间的支持,不过,it’s better then nothing。今天加了五首动漫曲和六首吉他曲。回头再改。我实在无法在更改IP的时候更换太多的URL的IP。也许我真的应该申请一个虚拟域名了。 OK,最近还不错,除了昨天晚上发神经的和real抱怨了通中国的软件业,还有和Gigi抱怨了通女人和结婚。其余一切OK,在此谢谢Gigi和real。 另外,最近开始分析NTFS格式了,看了MFT的说明,不过好头晕。现在下了一个linux内核中附带的NTFS解析部分在看。呵呵,也许我应该先吧前面的想法搞定,不是吗?不过现在不管这些了。反正我只是在玩电脑,快乐就好。也许几年后,连我自己都会忘记曾经有这么天,我在小小的房间里面,独自研究着NTFS。不过谁在意呢,千百年后,我们中的多少还能留下名字?与其将生命浪费在无谓的虚妄中,我更宁可做点现在就可以快乐的事情。而电脑,就是其中之一。 今天下了BitComet0.59用,终于支持用户列表交换和DHT了。感觉真好。不能不说,BC是目前国产软件中最有活力的一个。不是说推出的速度和宣传,而是各个软件的方面。例如支持XML,支持多语言扩展,各种新技术(像UDP内网穿越),广告,内嵌浏览器,内核定制和重用。让我想起以前的netant,winamp等等软件,充满了活力。也许软件维持活力和生命的关键,在于不断引入新鲜血液,并且加入市场来活化它。可能在几年后,现在BC的缔造者会成为将来的网络新贵。不过现在一切都还未知。

抱怨

Jun 13, 2005 - 1 minute read - Comments

吃了人家的免费午餐,照例应该专程为人做做广告,致致贺词。不济也不应该抱怨连连。不过MSN的空间的却引我腹诽。过去的文章找不到……不知道是我方法不对还是什么。如果真的如此我干脆另觅它处,好过我珍贵的文章白白无人看…… OK,先放下MSN空间的问题吧。本周我分析了UPX的压缩原理分析结果亦不外如是。不过话说回来UPX毕竟不是专业的防跟踪壳,仅仅是资源压缩程序而已。好分析也没有什么值得意外的。 源程序如下,是最最出名的Hello,World.: #include "stdafx.h" #include <windows.h> #pragma comment(linker, "/ENTRY:main") //#pragma comment(linker, "/ALIGN:0x1000")//这厮一上程序就变成3k党了,然后UPX就死气活样的不肯工作 #define put(x) WriteFile(hOutput, (x), sizeof(x), &amp;NumOfBytes, NULL) #define get(x) ReadFile(hInput, (x), sizeof(x), &amp;NumOfBytes, NULL) HANDLE hOutput, hInput; DWORD NumOfBytes; void main(){ char tmp[1]; hOutput=GetStdHandle(STD_OUTPUT_HANDLE); hInput=GetStdHandle(STD_INPUT_HANDLE); put("Hello,World.n"); get(tmp); return ; } UPX压缩下来的程序,section会变成三个。UPX0,UPX1,UPX2。其中UPX0是虚段,具备实际的段名称和段地址,但是RawDateSize是0。所以这个段在载入后是全0数据。数据和解压代码合并在了UPX1段中,由UPX1的解压代码注入UPX0的段中。看样子解压代码是附在了最后,从入口点到段实际内容结束点之间的范围。而UPX3的段最是搞笑,是一个单独的ImportTable,仅仅导入了Kernel32.dll中ExitProcess,LoadLibrary和GetProcessAddr三个函数。UPX1在解压并且注入UPX0后,会调用这三个函数来分析和获得每个导入表项的地址,然后完成导入表的动作。 换言,程序在从UPX1段JMP入UPX0段的瞬间,从UPX0段DUMP出来的数据就是正常的数据,除了要重建Section,并且重建所有DateDirectory外。 OK,下面说说压缩算法的问题。上面可以看出,压缩动作不难,但是算法我可没有能力分析和实现。所以我脑筋就动到了zip算法上去。可是根据我以前看zip文档得到的经验,zip内部分多种格式。貌似rar也分多种格式。所以我不打算挑战极限,自行写出每种算法的代码。不过我打算做一个标准的扩展接口,可以让所有的压缩算法都容纳在这一个框架内。并且可以支持多种压缩文件的格式。对上可以封装成标准的文件读写函数,然后再写一个COM组件,让所有的人都可以任意的运用(嘿嘿,写网页的人估计最需要)。至于后面要不要写一个什么东西让整个windows可以把压缩文件无缝的当成文件夹处理,那就再说了。

babylon

Jun 8, 2005 - 1 minute read - Comments

真TMD麻烦,从网络上下了一个babylon。上了破解补丁,然后发现不能安装词库。安装词库就会出现授权无效,然后八天一过就用不了了。毛主席说,自己动手,丰衣足食。拿出OllyDbg拆开研究看看。反正补丁的类型是文件改写型,不用担心太麻烦。 不过我还是低估了babylon的难度,从昨天晚上到今天下午,经过将近一天的努力,我还是绕在babylon里面出不来。关键是我找到了显示判别无效的代码,但是在附近没有找到判别代码。NND原来他的判别代码在很久以前执行的,然后放在全局变量里面。害的我好找。然后发现判别代码分了两部分,一个是判断是否有效,一个是判断是否过期。经过一天的修改,还是没有发现过期代码的识别。不过幸好后来想到有一个现成的key,只是因为词典安装太多给识别成无效。这个好解决的很,前面的判别自动判断为有效就好了。然后跟踪后发现修改一个字节就可以暂时解决这个问题。不错不错。 然后是写补丁的问题,我上了一个原来的补丁壳子。发现这个补丁壳子实在奇怪,明明写的是8,却按照B去编译,结果修改地址错误了,导致破解失败。更倒霉的是程序把备份文件的名字起的和网络上的补丁一样,结果按照补丁规则默认覆盖了。闹的我连原始文件都没有了……不得以只好将现在的程序备份重新安装,然后提取出一个主文件来。看来不重新写一个补丁壳子不行了,这次写的完美点……

郁闷,发不了了……

Jun 6, 2005 - 1 minute read - Comments

病毒编年史已经写好了,不过奇怪的是空间不能用。怎么都发不上来。莫非是我东西太大,导致微软对我的抵制? 今天去参加讨论,得知毕设答辩如果在七月进行肯定没好分数。而且答辩如果过了七月中旬没有结束就直接结业没有毕业。老师还不紧不慢的和我说你不用着急……我快崩溃了。软件写好了就在家天天呆着闲闲没事干,这样如何能不着急。 算了算了,还是不说了。昨天破解了CCProxy6.0,很好的一个软件。不准备发出去,毕竟人家是软件公司,不能坏人家生意。不过挺高兴,软件破解技术终于可以搞点实际的东西了。破解的时候挺痛苦的,重起N次。 然后还发现一个木马蠕虫。通过LSASS的某个后门运行tftp下载代码,结果给天网截获了。然后用ProcessExplorer查出来,下载文件来分析。貌似被压缩过分析不出来,司机的在线引擎给的结果是Rbot。反正我不管这么多了,能下载就让我一身冷汗,本来还以为系统挺安全的。赶快下LSASS的补丁打上,然后又下了一个SSS扫描本身的系统。发现了五个严重漏洞,一个中等漏洞。那个中等是匿名ftp,不用理他。一个是winamp漏洞,要升级到最新。去,最新的winamp又大又难用,我才不干。还有一个是jet漏洞,上补丁后解决了。最后三个FTP绕回漏洞,现在在想办法…… 真的是好久不玩安全技术了,居然被人打到家门口才发现。要不是这个服务器配置比较严格,就会被入侵了。我在想能不能开个公司,专门写程序检验你的系统和上面的软件,软件的版本。发现某个版本的软件就查漏洞数据库,找漏洞检验程序。然后扫描没有打的补丁,再专门下载补丁打。这样可以分担网管大部分的工作。不过在中国是否可行还是未知,毕竟中国的网管观念里面,出了问题再解决才能显得自己的重要。漏洞全让你自动打光了,我吃什么?

病毒编年史-近古

Jun 4, 2005 - 1 minute read - Comments

近古时代是以win9X的兴起为代表的,这个时期后,人们对于保护模式编程有了相当的积累。更换系统变化的是系统结构,而保护模式的各个易于错漏之处一直保留到现在。同时病毒也开始向跨平台和多样化发展了。难倒病毒编写者也感受到了平台变换的阵痛? AD 1995,宏病毒出现,代表作 Word Concept,作者未知。 贝壳评论: 这个病毒的意义是打破了人们对于非可执行文件不会中毒的认识。使得非可执行文件也成为了病毒的媒介。并且降低了病毒的技术门槛,使得病毒技术从生僻技术变成了人人都可以接受和理解的技术。制作者从必须懂得各种计算机内部机理变成只需要了解Word宏的编写,从客观上加速了病毒制造的普及。 同时这个也是典型的一个概念型病毒,病毒并不具备破坏性。更多程度上是和Fred Cohen一样为了证明自己的观点而做的。其症状是Word的Normal模板中会出现两个名字为AAAZAO和AAAZFS 的宏命令。另外还有一个PayLoad宏,该宏只包含一句话“这足以证明我的观点(That’s enough to prove my point.)”,而不做其他事情。 AD 1997.6.24,KV300L++事件。某种意义上说,KV300L++事件不是病毒。不过,这个事件在病毒技术,反病毒理念,反盗版理念上造成极大冲击。关于事件我摘录如下: 1997年6月24日王江民先生在其主页上发布了kv300l++版,内含逻辑炸弹。凡是在mk300v4制作的仿真盘(盗版盘)上执行kv300l++的用户硬盘数据均被破坏,同时硬盘被锁,软硬盘皆不能启动。从网上的求救信息可以看到,包括在校大学生的毕业论文被破坏,kv300的代理商的电脑遭到破坏,求救的人不计其数(网上的求救信息并不能作为证据,因为不能排除有人误判断及有假消息)。从常规上可做推断:kv300当时至少有几十万正版用户,盗版用户可能远远大于这一数字,可见此逻辑炸弹的影响之大。首先王江民不是执法者,无权对盗版用户进行打击,另外,被打击对象也不应该是用户,而应该是制作盗版的厂商。1997年9月8日,公安部门认定kv300L++事件违反计算机安全保护条例之23条,对其做出罚款3000元的决定! 另外还有这个事件的一个评论:http://www.chinabyte.com/20011224/1428573.shtml 贝壳评论: 原理上说,KV300L++逻辑炸弹是通过修改硬盘MBR区中分区表导致逻辑死锁所致。属于系统漏洞的一种应用,解法可以使用修改过的IO.sys等等,在此不赘言。就理论上说,KV300L++是严格的恶意代码,关于逻辑锁的解释根本不能成立。假如逻辑炸弹造成损失可以通过技术途径修复,那么就都不叫逻辑炸弹了?并且就行为上说。中国计算机保护条例中打击的范围是制作,传播,销售盗版。江民公司通过打击用户的方式制衡盗版。无论有无效果,客观上打击了客户。就角色上说就更离谱了,江民公司根本不是执法者,连直接打击盗版商的权利都没有,充其量就是能够起诉盗版商而已。最恶心人的是,江民公司在事先一字未提,其原因为何不说,本身绝对侵犯了消费者知情权。后期的很多评论各有偏向,不排除江民公司和对手在做商业宣传的可能。在此引出的问题是,软件保护究竟如何做? AD 1998,java病毒出现,代表作 StrangeBrew,作者未知。 贝壳评论: 此种病毒代表病毒编写由平台相关迈向了平台无关。从某种意义上说,此种病毒和上面的宏病毒都属于源码病毒,更严格来说是脚本病毒。依靠脚本来传播,因此编写非常简单。当今流行的多数病毒都多少带有这种特征。 AD 1998.6,9X时代巅峰之作 CIH,作者 台湾大同工学院 陈盈豪。 贝壳评论: 说起此君真当是病毒史上又一传奇人物。CIH小小一个病毒,大小约1K,连续创下四个世界之最。最早的大规模硬件破坏病毒,最早的windows核心态感染病毒,流行事件最长,破坏最强。而且这个病毒本身不变形不加密,仅仅通过windows的段机制拆分重组来破坏特征扫描。堪称病毒史上的经典作品。其源码公开,有兴趣做windows核心研究的一定要下一个来看看。不过这个病毒的设定还有点搞笑,CIH取自作者的姓名台湾拼音,病毒发作的时间之所以定在4月26日,因为那是他的高中座号,也是他的绰号。 同时此病毒的解毒方法也成传奇了,五花八门的解毒方法另人瞠目结舌。因为病毒破坏了硬件,所以所有软件解毒方案全成了空话一句,反到是各种偏方效用非常。例如热插拔法就是在此时风行的。很多用户也首次接触了编程器和刷新BIOS的概念。BIOS刷新中的防刷死(BlackBlock方法)成为必备条件。硬盘数据恢复中常用的种种数据修复工具和数据修复方法也是从此时开始流行的。 就贝壳查找的资料显示,作者陈盈豪在99年4月曾经入狱,2000年被发展Linux操作系统的美商网虎公司聘请为工程师,负责硬件事业部门的研究工作。 近古时代就此终结,就传统意义上的种种病毒来说。至今尚无超过CIH的。

病毒编年史-中古

Jun 4, 2005 - 1 minute read - Comments

1991年DOS盛行以来被划为中古时代,这个时代的各种病毒主要在dos和win3X上面折腾,win9X和保护模式还是未来的概念。贝壳就经历了这个时代。当时要杀解某种病毒基本是要用户手工去DeBug的。还有专门的小册子指导人怎么做。不过即使现在,能Debug方式杀毒的人又有多少呢?幸好现在有了反毒程序。 贝壳评论: 所谓反毒程序,其实就是感冒药。你吃了感冒药敢去流行性感冒的流行区吗?所以,防毒还是要靠自己小心。 AD 1991,首个多态病毒出现(好快),代表作 Tequila(龙舌兰),作者未知。 贝壳评论: 所谓多态,就是指同个东西的多个表现形式。在C++来讲,就是同个基类的多个行为。在病毒来讲,就是一个动作的多种代码写法。也可以称为变性病毒。基本原理是利用可替代代码,用不同的代码表达一个内容。或者利用变性子,变更病毒的形态,并且执行的时候动态变换回来。其中在DOS时代的皎皎者就是Natas,无穷变形。 插句话,前面所描述的病毒,经历了概念型,游戏型等等非经典形态。在Brain(小球)后才真正是破坏病毒。基本来说分为三个类型,开始的引导型,后来的文件型,和系统型蠕虫。前者出来不久就没了,连作者都没有赶上(赶这个干吗啊?),后者在当代还屡屡出现,生命力超强。最后者直到近年才在windows上广泛出现,由此可见Morris的远见。还有很多是以上的复合型病毒,真正DOS病毒的巅峰之作当数DirII(后文有述)。 AD 199X,Jerusalem病毒出现,又名黑色星期五。在十三号又是星期五的日子,这个病毒就会发作。 AD 1994,恶作剧邮件出现(重复一次,这不是病毒),作者未知。感觉上说,这个很像一个古老的循环。下面的信请在XX天内发给XX人,如果发了你会OOOO,如果没有则会XXXX。其实这个东西(姑且叫东西吧),思想绝对先进。他通过一个信件,发送一个病毒警告给用户,提醒他们小心病毒,并且要求你发送这个信件给所有你认识的人。大家感觉是不是很像邮件蠕虫病毒啊?不过这里并没有真正的病毒,信中提及提及的病毒在其后两年内没有人中过…… AD 199X年,防毒卡终结,DirII横空出世。代表作 DirII,作者未知。 这个病毒贝壳我在DOS病毒中着重描述,为什么呢?因为他有数个特点。首先是他将自身加入了DOS的设备驱动链,合法的修改了系统,导致硬件防毒的一蹶不振。详细请看《信息安全半世纪—一个程序员的简单回顾》江海客(http://netsafe.ayinfo.ha.cn/software/virus/article/teach/teach_25.htm) 贝壳曾经在防毒技术资料上看过病毒分析,非常佩服。同时这个病毒客观上也造成了文件系统格式的变化。当今这种变化可以被用来防御各种本地进攻。 DirII的出世也标志着中古时代的结束,此后的病毒就向win9X平台上迈进了。

病毒编年史-上古

Jun 3, 2005 - 1 minute read - Comments

所谓病毒编年史-上古,指的是自AT&T的Unix出现后到BG的DOS刚刚冒出来的这段时间。这个时间里面我都没有出生,所以所有资料均举自网络。如果有抄袭重复还请见谅……毕竟要我说自己出生前的历史想不背书都不行…… AD1949 ,病毒概念诞生,代表作无,作者John Von Neumann。大家表和我说不知道这个人。冯。诺伊曼结构知道吧,近代计算机理论奠基人。 贝壳评论: 话说具体时间嘛,也不确定是1949年,这年恰也是计算机元年。据说同年John Von Neumann提出一篇论文,描述了病毒的机理和存在,不过没有实际代码,也没人信。但是鉴于病毒的基础理论已经出来了,我们同样定这年为“病毒元年”。而后大约十年的时间内在美国电脑电话电报公司(AT&T)的贝尔(Bell)实验室中,出现了磁芯大战。磁芯大战这个游戏现在还有模拟器可以跑,具体情况可以下载来看看,模拟器访问 http://www.xfocus.net 。里面有中文教程和下载,在此不再赘言。 AD 1959(大约) ,远古病毒诞生,代表作 磁芯大战(Core War) ,作者AT&T Bell 的Douglas Mcllroy、Victor Vysottsky以及Robert T.Morris 。最后一个人大家记住了,这个人是后来非常出名的Morris蠕虫的作者的老爸,当时正好掌管整个ARPANET网络,给儿子闹了个灰头土脸。 同时我要特别提到他的公开者。磁芯大战本来是在程序员间秘密流传的,不过1983年(嘿嘿,我诞生的年头) Ken Thompson在一项杰出电脑奖的颁奖典礼上,他作了一个演讲,不但公开地证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程序。这个Ken Thompson,如果我没有记忆错误的话,系Unix的缔造者之一。(致以无上敬意……)另外,Ken Thompson与Dennis Ritchie是唯一两位获得Turing Award(图灵奖,电脑界的诺贝尔)的工程师(其他都是学者),后者是C的缔造者。 AD 1981,苹果病毒1 2 3诞生,近代公开病毒首例,作者未知,传播是通过一个得克萨斯州的盗版游戏传播的…… AD 1983,概念型病毒(不是病毒概念哦),首例病毒研究论文发表,病毒正式定名,作者Fred Cohen。 贝壳评论: 话说此君在南加州大学念书的时候,着重研究了一种导致系统死机的程序。(windows?)结果得不到某些教授的认同。于是此君愤怒之下,直接公开了论文和示例代码。其指导教授Len Adleman将其定名为病毒(virus),Cohen的程序,让电脑病毒具备破坏性的概念具体成形。 BTW,喜欢看近代密码学的人是否觉得哪里很眼熟啊?嘿嘿,Len Adleman的A和RSA加密算法的A是一个A哦…… AD 1986,引导型病毒出现,代表作 小球(巴基斯坦),作者 Basit Amjad兄弟。这个病毒的目的是为了防止盗版游戏。 贝壳评论: 某种意义上说,这个才是近代病毒第一人。笔者曾经研究过这个病毒,感觉非常远古。头部居然还有病毒作者的声明和地址(CIH的前辈啊……)。通过更改系统的BOOT区(0面0道1扇区)来获得系统权限,减小内存总量并且驻留,而后再次载入原始BOOT。目前此种病毒已经失传,原因是因为linux和windows抢MBR区抢的太凶,导致所有BOOT型病毒殃及池鱼……(玩笑……) 为了防止盗版而植入恶意代码的事情后来反复出现,现在形成了一个专门的问题。能否以暴易暴? AD 1987 文件型病毒出现,代表作 Lehigh(这个是Pennsylvania宾夕法尼亚州东部的一个小镇),作者未知,感染对象是command.com。 AD 1988.11.2 ,蠕虫传播,病毒首次发威,代表作 Morris蠕虫,作者是 在康乃尔 (Cornell) 大学攻读学位的研究生,Robert T.Morris Jr,当年23岁(厉害哦,比我大一点而已……)。 1988年11月2日,Morris 蠕虫[8~12]发作,几天之内6000台以上的Internet服务器被感染,损失超过一千万美元。它造成的影响是如此之大,使它在后来的10几年里,被反病毒厂商作为经典病毒案例,虽然它是蠕虫而非病毒;1990年,Morris蠕虫的编写者Robert T. Morris被判有罪并处以3年缓刑、1万美元罚金和400小时的社区义务劳动。Morris蠕虫通过fingerd、sendmail、 rexec/rsh三种系统服务中存在漏洞进行传播。他的主要思路是通过构造缓冲区溢出获得远程管理员权限,并且载入一段引导代码(boot),下载远程的病毒主体并且编译连接,重复感染系统。 AD 1990,出现了首个大型公司的反毒程序,代表作

病毒编年史-前言

Jun 3, 2005 - 1 minute read - Comments

最近和人聊天,讲到病毒和系统,人家问我要资料了解下历史。我说貌似以前有个大牛人写过一个OS演义,详举了种种系统的历史。病毒就貌似没有了。想想有趣,决定跑回来写个病毒编年史,举各种史上出名的病毒,并且加以评论。不过史上出名四字极难担当。就病毒数目而言,尚远在系统数目之上。其中精品之作汗牛充栋,在此仅仅能分析一二。而且资料不全,有遗漏处还请告知。至于评论更是一家之言,姑且听之,莫笑莫笑……

利用API插接替换破解软件

Jun 2, 2005 - 1 minute read - Comments

刚刚在看软件破解教程,看到一个人说怎么怎么破解软件。然后突然想到,许多软件破解其实不用修改出flag或者找注册算法。只要对话框不出来,软件照常好用就可以了。OK,基于这个原理,试试用DLL注入插接API的方法RIP破解软件。 首先是对话框弹出机理。先写了个MFC程序,然后跑一跑,在运行中按着DoModel()一路F11下去,跟进了CWnd::CreateDialogIndirectPreamA云云的一个函数里面(名字忘记了)。然后就是一个API调用了。(__IMP__Creat…肯定是调用别的DLL的函数了)API内容看不到……我晕。编译一个Release版的出来,然后上Ollydbg。经过跟踪,确定了窗体句柄是在USER32.CreateDialogIndirectPreamAorW里面生成的。如果没有窗体句柄呢? 貌似有两种可能,一种是没事,对话框没了。一种是报错。按照试验,Readbook至少是没事情的。哈哈,这样简单多了。整理下顺序,基本就可以做RIP破解了。 首先是用OllyDbg等等软件定位USER32.CreateDialogIndirectPreamAorW(其实USER32.CreateDialogIndirectPreamA更好,如果只用这个的话比较好确定参数类型)。然后下断点,跑到软件里面触发窗口广告……然后记录对话框的模板位置,调试的任务就结束了。因为没有啥要判断的东西,这个应该说简单到顶点了。 然后写一个DLL注入程序,运行目标程序并且Suspend。然后注入DLL,挂接API。详细参看windows核心编程,现在我们假定挂接了USER32.CreateDialogIndirectPreamA。现在有了一个自主的处理函数,只要在里面判断模板是否为特定模板就好……这个是module的一个res,理论上不是动态生成的,所以位置不变。而且一个对话框一个模板,很好认不会出错。如果是特定模板就返回NULL,否则正常调用。这样程序的提示框就永远弹不出来了。 这个其实是将软件的对话框禁止技术搬到了API层去实现,由于API层代码相对稳定,通用性强,所以破解相对简单。不过也是有代价的。如果软件无法生成对话框会导致出错……这个就没戏了。而且要写注入程序(可以写个注入的模板,或者一次写好可以多次用……),毕竟不是直接运行程序,使用不大方便。而且速度会受影响,如果程序里面对话框满天飞的话……