发新话题
打印

仙剑奇侠传3攻略

仙剑奇侠传3攻略


第一章 携侣闯天涯
景天在睡觉时雪见闯进了卧室,雪见让景天帮她修补紫砂壶,突然发生了地震雪见手上本来是用来恐吓景天的铁蒺藜不小心划伤了景天,无奈之下只好约定第二天到指定地点去用修好的紫砂壶交换解药。

第二天早上起床后,记住拿起在架子上的茶壶。和当铺里的伙计对话可以了解基本的操作和主角的基本情况。在收集完当铺内的各种道具之后,到永安当大客房内可以找到赵文昌,为他鉴定古董。

雪见剧情:雪见在百毒楼为景天找解药时不小心听见了唐家内部和霹雳堂的阴谋,被人发现后在逃跑时误入秘道。在秘道里雪见遇见了花楹,在花楹的帮助下雪见破墙逃走。

景天从当铺的营业大厅出来到“渝州城北”。从“渝州城北”南方的渡口可以乘坐竹筏到“渝州西南”,往西沿路走一段后发现雪见并没有在此等待。这时从璧山方向,有一道士被二人追赶,与其中的老者对话后得知璧山上有妖怪。景天拾起道士在逃跑时掉落在路边的木剑,决定穿过璧山到唐家堡去。

沿路继续往西走即可进入璧山,在穿过璧山(走到水边,看到一些出现在主角头上的箭头后,点击右键即可跳过河去)到了唐家堡后被拒之门外,得知雪见已被唐家堡视为叛徒,并已经被逐出唐家堡。景天在无奈之下只好回到永安当。

在永安当大厅,当景天正在被赵总管教训时当铺的大门被重楼打开,他以一文钱把一把古剑当给当铺。景天觉得剑有点古怪,把剑拿到卧室里打算好好研究。半夜景天起床小解时,发现魔剑正跟随在他身后。景天被吓得从城北跑到城西南的竹林处,结果与雪见相撞摔倒在地,刚从地上爬起来说了一句话便晕过去。从雪见处讨来解药后为了在美女面前逞英雄,景天把魔剑背上。在雪见用唐家大小姐的身份逼迫之下,景天决定和雪见一起闯荡江湖(雪见加入),然后两个人在旁边找了一家客栈歇息。

第二天从客栈出来后往南走即可来到九龙坡,在来到九龙坡的尽头时遇到了霹雳堂的弟子,霹雳堂弟子想捉雪见。战斗后,景天莫名其妙再次晕倒在地,而霹雳堂又来了援兵。在寡不敌众的情况下,两人被关押在地牢。景天醒来之后,雪见正想法逃出地牢。危急之下,雪见叫来花楹帮忙,突然魔剑飞起,把锁住两人的枷锁砍开。两场战斗后景天再次晕倒,雪见只好把景天拉上木筏,两个人顺流而下来到了的水车仓库休息。雪见为安全起见,离开景天自己一个人到外边去引开追兵。

醒来后,发现雪见不在身边。与村人对话得知雪见在南城门处(城门往西,紧贴着城墙处的一棵树下)。刚刚走了一段路,遇到了两名霹雳堂弟子,他们会妖化(攻击力会增强)。战胜敌人后雪见决定从南面的大渡口处乘船。进入大渡口后,雪见要求休息,并让景天帮她找水。景天回来后,雪见对景天阐述了自己的心事。景天发现雪见受伤,在雪见运功疗伤时,景天帮忙护法,但他居然睡着了。

第二章 结伴走长江
来到南渡口时,又有几只霹雳堂弟子妖化成的妖兽追上来。战胜后雪见由于过于劳累而晕倒,景天奋起应战。这时,船上的长卿和紫萱伸出援手把妖兽消灭,景天晕倒。

景天醒来后认识了长卿和紫萱这一对恋人。长卿认为景天是使用这把魔剑耗费太多的灵力所以才会晕倒。在得到长卿蜀山心法后即可克服。在与船上所有人物聊天之后得知,长卿是蜀山的弃徒,由于在看守镇妖塔时被妖怪所伤,幸得紫萱相救。由于紫萱为长卿疗伤的方式特殊,被掌门所误会,所以被逐出蜀山,此去蓬莱是想求蓬莱的掌门为他们说情,澄清误会。最后再和长卿对话即可进入开船模式(紫萱、长卿加入)。

在船经过长江到达镇江后,在附近的一处小山丘上遇到长卿正和方镖头对话。从对话中得知镇妖塔倒了,蜀山派损失惨重,并派出弟子四处消灭四散的妖怪。得知此事后长卿决定返回蜀山,而其他人继续上蓬莱(长卿离队)。回到船上,继续前进。
蓬莱迷宫,在迷宫里发现蓬莱弟子死伤遍地。出迷宫赶往御剑堂,在大殿中遇见蜀山派掌门清微及蓬莱掌门商风子。雪见被清微用术法所攻击。清微不断威逼商风子说出蜀山旧事,紫萱发现清微是假的,假清微恼羞成怒,攻击紫萱,正在紫萱招架不住时重楼出现为紫萱抵挡住了攻击,假清微逃走。此后,重楼对景天下了魔族的刻印后,把魔剑正式给了景天。与商风子对话后,紫萱决定到蜀山去揭发假清微的阴谋。出大殿,在大殿左边可以找到一条直通海边的秘道。

上船后,到唐家堡码头停靠,紫萱急于上蜀山(紫萱离队)。在唐家堡门口雪见要求单独去见爷爷,景天等了很久之后,花楹忍不住飞进去找雪见。景天也只好进入唐家堡。在议事大厅中见到雪见在和一些三姑六婆争论,得知在雪见爷爷死后,现任掌门要用雪见爷爷的尸体来炼制“三尸三虫”,并说雪见并不是唐门的人。雪见对此十分气愤,扭头就跑。与唐门正门守卫对话后得知雪见已往璧山方向去了。

第三章 问世间,情为何物
通过璧山来到渝州,没有发现雪见的踪影,景天决定先回当铺。从当铺后门进入当铺后,不小心打破了瓷瓶引来了伙计和赵文昌。正在赵文昌想揍景天时魔剑又动了起来,为景天打开了一条逃跑之路。

万般无奈下,景天只好到城隍庙休息。这时魔剑突然发光,分出了一位少女龙葵,认为景天就是她哥哥。少女身上并无衣物,让景天帮她找广袖流仙裙。从后门溜进当铺,进入仓库内寻找服饰,在拿到所需的服饰后回到城隍庙把衣服给龙葵穿上即可(龙葵加入)。

第二天从南渡口坐船到城西,在璧山入口发现雪见正被唐门的人追赶,并让她交出五毒兽(花楹),雪见不允(雪见加入)。雪见决定上霹雳堂总堂为爷爷报仇。在变身后的龙葵的帮助下三人一起飞往霹雳堂的所在地。在飞行的过程中,看到雪见和景天搂在一起,龙葵一气之下,控制魔剑把二人丢了下去。

在九顶山走过重重迷宫后来到山顶打败人面兽,得到龙精石,此后魔剑养成系统启用。穿过人面兽后边的冰壁,到达德阳。
在德阳一处民居发现一个小女孩在墙上划饼,景天想给钱让她去买吃的,但小女孩并不收。没法,只好到小女孩东边的商贩处去买一个烧饼给小女孩,女孩在接受了烧饼之后便会告诉景天通过客栈后方的井可以到达霹雳堂。过井,推开石桌即来到霹雳堂。
来到霹雳堂底部地牢,发现紫萱。用魔剑破除禁制后把紫萱放出来,得知紫萱是被霹雳堂的堂主用缚仙咒困在此地,并得知邪剑仙与霹雳堂勾结,打算内外夹击攻破蜀山。众人准备离开时发现一件披风式的怪物拦住了路,打败它后得知这是魔灵。

出霹雳堂,到安宁村,入客栈。由于最近村子里并不太平,客栈老板不让众人入住,这时万玉枝出现。到了玉枝家里得知她正为丈夫生病的事发愁。众人休息后,景天与房内的龙葵和雪见聊天后,出屋后发现在万嫂卧室里有异状,发现玉枝正对丈夫施展法术将他土化。众人立即出手,玉枝逃走。紫萱发现被土化的玉枝丈夫并没有死,决定到村子东北的森林去寻找玉枝。

到达古藤林内部找到玉枝了解到,原来玉枝正在用土系的法术为丈夫疗伤,众人打断她施法,她丈夫可能因此而性命不保,而治病用的土灵珠又失踪了。决定到古藤林更深处去寻找土灵珠,遇见猴精——精精,打败后得知土灵珠是它偷的,但又被古藤精给抢走。到达森林底部的清风台遇见古藤仙人。古藤仙人与大家打赌,说可以看出大家心中最宝贵的东西。但是在古藤仙人惟独没有看出雪见心里最宝贵的事物,古藤仙人认输,打开通道。

打败古藤精后,土灵珠掉落在地,大胡子飞身而来把土灵珠收到怀里。我方战败后精精会过来从该男子身上偷出土灵珠,但是他也受了一掌而身负重伤。精精临死前把“飞龙探云手”传给了景天。众人得知大胡子就是霹雳堂堂主罗如烈。

直接使用土灵珠回到安宁村,来到玉枝家里,用土灵珠治好玉枝丈夫。紫萱觉得土灵珠和土隐放在玉枝身边会引起妖怪们的注意,反而找来祸患。在经过玉枝同意后得到土隐和龙精石。


第四章 茫茫蜀山路
来到蜀山第一层,龙葵可以打破在此挡路的石头,但是在通过浮空的石阶后会有大石门拦着,这必须到上一个或者下一个浮空的岛上去打开机关才能通过。在经过数轮来回把机关全部打开后即可上到第二层。到达第二层后有各种颜色的伸缩的石柱,当被红、橙、蓝、黄色的石柱碰上(黑色的千万不要碰,没有用)之后会来到一个浮空岛上(四种颜色分别对应四个岛),打开岛上的开关,并利用旁边的法阵回到底下,来回几次后即可打开山顶上的门。

进入蜀山后发现山上气氛和平时不同,先去无极阁。来到后山无极阁前,与两名守卫对话,雪见趁着守卫分神,冲上去把门给打开,众人进入无极阁后,邪剑仙也带着长卿进入无极阁。这时,邪剑仙与清微抢夺长卿,在紫萱帮助下长卿脱离危险,而紫萱也因为法术的反噬而倒地,邪剑仙见寡不敌众,溜之大吉。

邪剑仙走后,得知邪剑仙是长老们的邪念所化,并且答应寻找五灵珠。此后,紫萱由于受伤要在蜀山修养。出了无极阁后来到前山的西面,在一浮岛上可以找到长卿,长卿传授武功之后再到长卿房里与紫萱告别后来到无极阁(紫萱离队)。从武当前山南门即可出山,到达唐家堡。

在唐家堡的门口发现地面上有遗失的断魂砂,进唐门一探究竟。在演武堂门口找到正在与唐渐发生冲突的雪见,得知演武堂里正在通过比武来决定掌门人,雪见谎称景天是自己的未婚夫把景天也拖进去。进去后雪见与唐泰争执不休。唐泰一怒之下许下诺言,如果雪见能连胜他弟子三场便奉雪见为掌门。雪见战胜后唐泰只好把掌门令牌交给雪见,但是唐家众人并不服雪见当掌门,并拿出爷爷的日记证实雪见并不是唐家人,雪见愤起而去。

在演武堂的东边找到雪见,发现花楹被唐益捉住,并逼雪见交出掌门令牌。在雪见把掌门令牌交给他后,唐益出手欲伤她,景天挺身接住暗器。就在雪见想去求唐益拿解药时,花楹用自己的五毒珠之力为景天解毒。回到演武堂后发现唐门的人都身中剧毒,花楹利用自己的五毒珠为所有人解毒。导致五毒珠被用干。到雪见爷爷卧室,雪见和爷爷告别,来到后门码头,乘船继续向南行。

来到雷州,从吉祥客栈掌柜处得知晚上会有雷公灭妖。晚上景天在客房走廊发现龙葵有心事,得知龙葵正在苦恼自己是鬼。一番安慰后,龙葵会偎依在景天的怀里,雪见见后,愤然离去。众人追出客栈,有妖怪袭击。往西北走,过桥,花楹被一小妖拦住,小妖喜欢花楹,努力说服花楹跟它一起,但花楹不允,长卿怒起对小妖发动了攻击。小妖被打败后,把龙精石送给花楹,花楹为它治疗,小妖决定再加修炼,立誓要把花楹抢到手。

从花楹言行中得知雪见好像被人救走,于是众人先行回到客栈。回到客房发现雪见还未回来,景天正在担心,龙葵和长卿进来安慰景天,而花楹也表现出一副很放心的样子。回到自己房间后,长卿提醒景天理清个人感情问题。烦恼之下,景天到龙葵房里想找人聊天,发现龙葵正收拾东西想出走。经过一番安慰,景天便回房休息去了。第二天来到临风楼二楼包厢里遇见雪见与云霆,但是雪见气还未消,只好作罢。

回到客房把事情的经过告诉长卿后,龙葵告知雪见和云霆进了刺史府,于是众人决定夜探刺史府。刺史府在城的东北处,在景天翻墙进入刺史府找到云霆的房间后,龙葵会唆使景天在外偷看,发现云霆会使用雷电,城内传说中的雷公便是云霆。就在这时群妖来袭,云霆在众人相助之下打退妖怪。这时长卿猜测云霆体内有雷灵珠,在经云霆同意后把雷灵珠吸出来,并许诺派遣蜀山弟子保护城内的人。这时重楼出现,告知景天拥有灵珠,让众人到神界去找答案,并为众人打开了一条通往神魔井的通道。

第五章 天界故人今犹在
众人进入神魔井。重楼为龙葵塑了暂时的肉身并把天界令牌给了景天,在大家的追问之下重楼再也没有回答什么有意义的事便跑了……

在神魔井中,由于景天陷入了幻觉,龙葵使用雷咒将他打醒。神魔井一共分两个部分,第一部分比较简单,(正区下)开北方机关→中央柱子往上→东南方的机关→反区上)西南方机关→回到正反机关处返回正区→中央柱子往下→正区下西南方传送点。

通过传送点,来到井戊,雪见和景天一样陷入了幻觉,把她打醒。戊:开东北机关→庚:开东南机关→丁跳下→乙开西方机关→辛开北机关→乙开北机关→甲。来到这里遇到长卿后重楼突然出现,由于他对长卿很不满,再加上龙葵推波助澜,便召唤出妖怪,并命令其攻击我方。打败后即可来到天界。

利用令牌通过天门后来到西北方遇到雪见,解决玉佩的事;西北偏南,遇龙葵学“天线玉露”。到北门遇到一天兵,景天被问了一堆莫名其妙的话后被发现是凡人,而这家伙好像是以前在神界认识的兄弟,以为景天要到神树去看夕瑶,他就放了景天一马。到了北门后,发现雪见不见了,景天单独到神界东南可以找到雪见,但是雪见不知在担心什么。在说服了雪见后便可从北门离开。

来到神树顶时会遇见夕瑶,从而得知景天从前在天界与魔尊争斗时佩剑落入凡间,而雪见是夕瑶用神树的果实枝叶以自己为蓝本做出来的代替自己的“人”(得到风灵珠)等等陈年旧事。在打败仙将后,夕瑶便把众人送回蜀山。

到无极阁外间,从掌门处得知镇妖剑在锁妖塔里,蜀山弟子不得入内,因此紫萱与景天便自荐入内取回镇妖剑。刚出无极阁,雪见也强烈要求和景天一起进去,没办法只好依她。在前山一高级弟子房间中找到龙葵,结果她也要去。回到无极阁,与紫萱对话后即可到镇妖塔中。镇妖塔共有10层,打败天妖皇后得到龙精石和镇妖剑,紫萱会打开法阵,离开。

从塔中出来后,龙葵失踪,紫萱告诉景天因为龙葵会被鬼送到更远的地点,让景天先把镇妖剑交给掌门然后再去找龙葵。路上遇到蜀山弟子,从其口中得知邪剑仙正领兵去攻打无极阁。果然,在去无极阁的路上遇到了邪剑仙,他向众人索取镇妖剑,景天把剑交给雪见,让她把镇妖剑拿给长老,自己挡着邪剑仙。但雪见刚准备进入无极阁,就被邪剑仙打了一掌,而镇妖剑也被夺走,清微道长也被邪剑仙打伤。景天在雪见的冰棺旁回忆起与雪见一起度过的日子,然后在后山找到龙葵,在到前山西边长卿的房间会遇到紫萱,到后山无极阁附近可以找到花楹,最后到无极阁去找长卿谈话,之后到蛮州的女娲庙去。蜀山后山的北边是草海,经过草海后便是女娲庙。草海有上下两层迷宫,迷宫的出口就在东部。从草海出来便是蛮州,在城里找到其他人并对话后进入女娲庙,剧情发展完后即可从北出口到灵山仙人洞。在到仙人洞第二层的水幕厅时,妖狐正准备带兵去攻打蜀山,但是众妖不服,突然景天等人被众妖发现,与妖狐发生战斗。在这之后,可以从旁边的出口到达仙人洞三层(哪里宝物多啊?这里宝物多)。


第六章 地狱寻她千百重

到达古城镇,在城镇里龙葵突然发现当地情况不对,这里与姜国的王都很像,从而得知众人落入了回魂仙梦中。来到镇长家后紫萱会与镇长交涉,在祭坛找到龙葵后即可回到现实。

回到现实后,景天看见自己以前在蜀山的情景,再一次经历了雪见的死亡事件后,龙葵告知景天她看见了雪见的灵魂,如果拥有灵魂的话就可能复活,但是需要先到鬼城,然后再去鬼界寻找雪见的灵魂。

之后正式回到“现实”并与紫萱见面后向龙葵学会御剑飞行。现在打开御剑飞行就会看到整个大地图,景天为了再见雪见一面,查看了遗体的状况,飞到了蜀山在高级弟子房间里遇见紫萱和龙葵,在这之后众人前往酆都鬼城,在蜀山东方的桥上,景天不让花楹同往,花楹离队。

飞到地图的东北方即可找到酆都,在青阳居对面可找到阴差的腰牌,这时会有人出面说这个是属于他的,可以在他这里买到离魂汤。购买离魂汤后到客栈找到紫萱得知只要在子时到城门口即可到鬼界。在酒馆中找到花楹。休息后众人来到城门口,花楹被吸入鬼界中。

来到鬼界后大家失散。在右上方可以找到龙葵得知有一个女人在阴差房里,入口的不远处可以找到花楹。来到阴差房见雪见被绑在床上,雪见再次误会景天。雪见正准备投入轮回,多亏龙葵把雪见救出来。得知紫萱可能进了熔岩地狱,众人前往熔岩地狱去寻找紫萱。

在熔岩地狱不远处即可遇见紫萱,得知火鬼王有可能拥有火灵珠,为了拿到火灵珠,众人决定继续往更深层走去。在经过火鬼殿,鬼界外围,黄泉路后众人又回到了大本营——蜀山。


第七章 海中央,千层巨浪

回到蜀山后发现雪见的尸体不翼而飞,在无极阁询问长卿后得知邪剑仙为了得到身体而盗走雪见的肉体,并且得知邪剑仙在西北的雪山。

为了帮雪见找回肉体,景天一行来到雪岭镇(地图西北)。从雪岭镇的后方可以进入冰风谷,刚走几步,由于众人受不了寒冷,一起玩了个小游戏。景天得意忘形之下,造成雪崩,三人都被拖下崖底,走过一段路后会遇见雪见与花楹。

继续往前走会发现邪剑仙正想利用法术占用雪见的身体,雪见乘景天引开邪剑仙注意力时,进入邪剑仙的身体。邪剑仙发现后十分震怒,于是开战。战斗结束后邪剑仙打算击杀紫萱时,重楼再次化解了邪剑仙的攻击。重楼离去后刚走一段路,罗如烈出现了,再次开战。但是由于罗如烈不断地变形,众人不知道该怎么办,最后花楹把这个怪物撞下了冰河,才算了事。之后大家决定回蜀山看看。回蜀山在无极阁遇到长卿后,他决定让众人到安西去调查火灵珠的下落。

在地图的东南方找到安西后,在南方的海边找到龙葵,龙葵想到小岛上看看,正好雪见和紫萱也一起去。

来到海底后,在底层遇见两位从前的神仙,由于误会景天他们是天界来的人,两个神仙和众人打得不亦乐乎。然而此处的海底火山就要爆发,两位前人神仙为了拯救神州人民,在这里用城镇堵住火山,但是如果一动不动,又会被神界的人所发现。为了人民两人决定牺牲自己,他们俩决定用所有灵力镇住火山。此后,天界跑来想毁城,众人出手阻止。

第八章 长亭外,又见仙剑

回到安西后来到一处民居旁,在无意中得知剑冢魔炉再次燃起。到达村口后得知邪剑仙想打造一把自己的剑,长卿邀景天及众人到剑冢相助。

在铸剑厅遇见邪剑仙后,邪剑仙用毒对付众人。并用魔剑与镇妖剑铸造了一把超级剑,在剑铸成之后将镇妖剑刺入景天的胸部。这就是选择结局的时候。在景天醒来后,立即赶往蜀山,帮蜀山众人防御邪剑仙的攻击。

回蜀山,找到长卿后得知锁妖塔有危险,大家一起到锁妖塔去支援。到了锁妖塔门外发现众长老不敌邪剑仙,进入战斗。经过数场战斗后终于打败了邪剑仙,但是这时由于在邪剑仙的干扰之下,锁妖塔已经快封锁不住……

清微在临死前任命长卿为下任蜀山的掌门,紫萱将自身的法力传给长卿,并告知水灵珠就在她体内,然后紫萱就牺牲自己来封印锁妖塔。如果紫萱好感度最高,就是紫萱结局,条件是剑冢悬着镇妖剑,重楼出现以自身的法力封印锁妖塔,救出紫萱。

在紫萱牺牲自己后重楼赶来准备毁灭锁妖塔和蜀山,在景天的劝说下放弃了这一想法。但是却以龙葵或雪见为人质,要求景天到新仙界去与他决斗。然后根据主角和几位MM的好感度不同以及能否打“赢”重楼,组合一下,就是几种不同的结局啦!
欢迎来-运动休闲 -电子社区畅谈电脑,以及网络游戏!

TOP

3也出来了么?
前阵子刚看见2的
江湖风起云涌。善于使刀杀出一条血路的人,被称为刀客; 手持长剑扬名立万的人,则被称为剑客; 而在BBS的时候,喜欢持瓢猛灌的人被称为……

TOP

你居然没听过?斑竹怎么当地的!这个出来很长时间了
欢迎来-运动休闲 -电子社区畅谈电脑,以及网络游戏!

TOP

现在很少玩RPG

所以……
江湖风起云涌。善于使刀杀出一条血路的人,被称为刀客; 手持长剑扬名立万的人,则被称为剑客; 而在BBS的时候,喜欢持瓢猛灌的人被称为……

TOP

有没有破解STARFORCE的办法?我是穷人阿买不起
有一天,一个老人对我说:扼住了考研的咽喉,就扼住了命运的咽喉!那个老人是2046年的我… ————————————————————————— 无敌的分隔线 嘛米嘛米轰!一定都能过!2005.2.3

TOP

这个问题太专业了,我是不会的,有兴趣可以自己研究一下,我给你贴一篇过来


对 Star-Force 的研究 (Cossacks)
作者 ASMax ,邮件地址 asmax@imail.ru
译者 kxn@SMTH, 邮件地址 kxn@btamail.net.cn
原文 URL : http://www.reversing.net/articles/122001/sf-cossacks.htm

译者说明:
原文是俄文,本文系译者参考机器翻译到英文的结果和自己对脱壳的理解翻译而成,由于
译者并没有条件去试验文章中的内容,错误在所难免,请各位不吝赐教,转载时请保留原
作者和译者信息,谢谢。

××××××××

2000 年终最值得纪念的恐怕就是 Cossacks : The European wars --第一个使用
Star-Force 保护系统游戏的推出了。Star-Force的出现给程序研究者带来了很多新的问
题,现在是给这些问题一个答案的时候了。



Star-Force是怎样的保护?
    这个保护系统最强的主要是以下几点:它的核心是一个伪代码的解释器,伪代码
大大复杂了对Star-Force的研究工作;一部分导入函数(imported function)
的代码是从系统库中拷贝出来并进行修改过的;一部分程序代码只有在执行时
候才解密出来。除了这些,保护中还大量的应用了下面这些手段:检测某些内存段的CRC
校验和,经常性地将调试寄存器DRx清零,利用RDTSC指令来控制解码不同块代码的时刻(
译者注:这句不是很明白,此句是对照两种不同的英文机器译本硬译出的),最后一块
代码的解码甚至是通过截获int0在 ring0 中进行的。关于这个保护的详细情况我大致就
介绍这么多,因为我们将另辟蹊径,使这些保护方法中的大多数在我们面前根本起不了
作用。



Dump

    在这个版本中Dump还是一件很简单的事情,在protect.dll中跳转到原始入口点
之前大致是这样的代码:
        push 64h
        MOV of eax, [Kernel32!Sleep ]
        call eax
        ret
    因此我们设一个 bpx Sleep,启动游戏,在断点处停下来,跟进 ret 指令,然
后用PEditor之类就可以dump了。




恢复import

    Star-Force所使用的import保护技术是我所见过的保护程序中最强的一种。在传
统的保护中一般最后都是跳转到真正的函数入口处,或者跳转到真正函数入口几条指令之
后的地方。在Star-Force中,所有从kernel32.dll user32.dll advapi32.dll
中import的函数代码都整个被拷贝到保护代码的内存中了(除了push,pop,jxx 指令),拷
贝过来的代码按照下面的规则进行了修改:

        1:  ?????? 改成 nop 和 jmp short $2 (译者注:这里没有一个软件可以正确
翻译出原来的代码,大家猜猜是什么呢?)

        2:      push 12345678h 修改成
                MOV eax, 12345678h
                xchg eax, [esp]
        3:      push esi 修改成
                xchg eax, esi
                push eax
                xchg eax, esi
        4:      pop esi 修改成
                MOV esi, eax
                pop eax
                xchg eax, esi
        5: 两字节的 jcc 代码被修改成 6 字节的相应代码 (译者注:
          即 0F 开头的相对跳转代码)
        6: 两字节的 push 00h 修改成 5 字节的版本

    import 函数入口的长跳转 jmp X 修改成 jmp $+5 ,在首次执行到入口时,X指向
的代码进行将windows库函数代码复制和修改的一系列工作,并将 jmp 指令指向修改后
的代码。(译者注:原文说得不是很清楚,这一段是按照自己的理解翻译的,可能有误)
不过就这个游戏来说,被保护的函数只有11个,因此我决定用手动恢复它们(在我后来对
游戏Venom的研究中解决了这个问题):把代码手动转换回原始的形式,用sice在内存中
搜索入口前10个字节左右相同的库函数。找出的函数结果按照在保护代码的内存中位置排
列如下:
ReadFile, GetUserNameA,  FindNextFileA, WriteFile, VirtualFree, GetFileType,
VirtualAlloc, CreateFileA, DeleteFileA, FindClose, MessageBoxA
将所有import都手动恢复以后,我们就使用一个我常用的工具 ImportList by Boris来重
建 IT。我们把它放进 dump 里面,这部分的工作就完成了。

恢复 _DllDispatch 的代码

        还没有看晕?那我们进行下一步工作。在我们 dump 出来的代码中大约有20多处
(!)调用了 _DllDispatch  --  protect.dll中唯一的导出函数。调用它的代码大概看
起来是这样的:

        push ID
        call _DllDispatch

    其中 ID 这个参数决定了哪一段代码需要被解码并执行,ID = 0 的情况是将主
程序解码出来。值得注意的是,解码出来的代码仍然包含着对 _DllDispatch 的调用。但
是这个 _DllDispatch是用前面提到过的伪代码引擎执行的伪代码。怎么办呢?自己跟踪
每一个调用直到跳转到实际的代码?(译者注:自己的理解)你如果愿意试可以自己去
试,不过我将提供一种更有趣的方法,一次性自动获得所有被保护的代码。为了做到这
一点就需要自己写点程序了。

    首先我们知道一旦被执行过一次,需要的代码就以解密的形式存在内存中了,怎么
捕捉到这一时刻呢?很简单,每个这样的函数多少都会执行到原来的代码中,因此我们
可以截获对_DllDispatch的调用,在将控制权交给protect.dll之前,把原代码段统统
清成0CCh,这样从解码出来的代码跳转出来到任何地方都会触发中断,我们截获int 3
就可以处理之。 更进一步的,我们从ring0的堆栈中找到ring3的堆栈标志,然后就可以
很快找到解码出来的代码了。



对实现的一些说明


    为了方便处理类似的游戏,我建议将我们的deprotect.dll 加入到程序的import中
,它就可以截获protect.dll的入口了,不过这时程序的代码还没有被解码出来,只有一
个指向protect.dll中的入口调用。我们把它修改一下,使得当protect.dll将代码段解
码之后将控制权返回给我们的dll, 接下来我们搜索游戏的代码,就可以找到很多对
_DllDispatch的调用,以及它们对应的ID,把ID都存到一个文件里面以避免出现重复的。
然后我们挨个用这些ID调用_DllDispatch,在 int 3 的处理函数里面将控制权正确的交
给我们的搜索-恢复函数。我们需要在解码出的代码中继续搜寻对 _DllDispatch的调用
以得到全部代码。当然还得把调用这一次DllDispatch的代码修改成直接调用解密代码。
因此搜索需要进行两遍,一遍在原来的代码中,另一遍在解密后的代码中。


    全部工作做完以后,我们得到了两个文件,一个是text.bin,这是程序代码段中
的代码,另一个是code.bin,这是经_DllDispatch解密出的代码,需要手动加到dump中
去。整个EXE文件组装完毕后, protect.dll 就没用了,可以删掉。
最后的一点修正

    启动解密后的游戏试验一下,结果很令人失望:金钱狂涨到无限多,任务说明不
显示,TCP/IP联网对战时选择地图后不生成地图。前两个问题好像是文件名的问题,
把可执行文件改成 dmcr.exe 就正常了,最后一个错误原因是对某一个_DllDispatch的
恢复时出错,大约是这个_DllDispatch中没有跳到其他的代码,就没有被我们的程序捕
捉到(译者注:这里大概是一个没有调用任何其他函数的函数),导致最后生成的代码
里面有一个错误的调用。这样的函数是我们研究的一个盲点,不过就这个例子来说很好
解决,手动跟踪了一下,看出这个函数的地址(译者注:在解码内存区域中的偏移量)
是0A3Ch,手动修改一下调用,把5个nop改成对这里的调用就可以了。
现在所有的问题都解决了,Star-Force完全被搞定了。

源程序
        deprotect.asm (7K) 源程序,使用 TASM5.0 编译成 DLL
        deprotect.dll (8K) 编译好的DLL文件
注意:这个DLL只适用于文中提到的游戏。

(译者注:上面两个程序的URL如下
http://www.reversing.net/articles/122001/deprotect.asm
http://www.reversing.net/articles/122001/deprotect.dll


总结
        Star-Force是一种很有意思的保护系统。不要怕在对它的研究上费时间,这是值
得的。我希望这篇文章对你的研究有所帮助,如果你有任何的问题请给我来信,我会很乐
于回复的。
ASMax
asmax@imail.ru





发信人: kxn (没钱的事情我是不干的), 信区: Hacker
标  题: 一些对Star-Force的个人看法以及补充
发信站: BBS 水木清华站 (Fri Nov 29 10:42:21 2002), 站内


从翻译的文章中可以看出,Star-Force 的保护确实非常优秀,几个关键创意都是
头一次提出:

1: 使用伪码解释引擎来使得对代码算法的分析基本不可能
    像 VB 和 installshield 那样的伪代码程序一直都是破解的一个难题,
    但是 VB 和 is 因为能弄到相应的伪代码生成器, 分析起来方便不少。
    对于 Star-Force 这样搞不到生成器的,希望就更渺茫了

2: 首次大范围应用对汇编代码的反向分析
    Star-Force 一定是有一个比较强的代码反向分析引擎的,首先
    在它独特的 Import 保护方式里面需要对 windows 库函数代码进行修改
    程序必须能正确的分析出所有的跳转指令进行修改,才能使得 windows
    库函数可以在其他的内存位置执行,其次 _DllDispatch 生成出来的
    代码,明显是对原 EXE 分析以后,把整个函数抠出来了,而且需要
    修改原函数里面的一些跳转指令取址指令等以保证能够正常执行

3: 非常特别的 import 保护方式
    通过将 windows 库函数代码拷贝到另外的地方执行,就完全从原理上
    废掉了 imprec 和 revirgin 这类工具

  4: 那个诡异的 DllDispatch
    只能这么说,这个设计实在是太变态了,弓虽口阿


  Star-Force 自己对这些手段看来也是比较有自信的,因此可执行文件的
其他部分,比如数据段,资源段等,统统没有加密,连程序的 OEP 都没有隐藏
加密过的程序 EP 和 OEP 数值一样,还有可执行文件各段的实际长度
在普通的壳里面, 这些数值都是要极力隐藏的。


从 Star-Force 的保护方式可以看出,将来的软件保护将越来越趋向对原有代码
进行自动修改,而不是像以前加个壳完事,而且还不要求软件厂商做任何的适应



发信人: kxn (贫僧法号一坨大师), 信区: Hacker
标  题: Re: [翻译]对 Star-Force 的研究 (Cossacks)
发信站: BBS 水木清华站 (Wed Feb 12 13:54:37 2003), 转信


还有点其他信息, 有的来源是同作者的另一篇文章, 有的来源是自己瞎看的
一起贴上来算了, 另一篇文章懒得翻译了, 辛辛苦苦翻译一堆, 转的人果然
还是把前面的话删掉

ASMax 另一片文章里面的介绍了一个新版本的 SF, 主要内容就是两点,

1: 新版本 SF 代码使用了 INT1 和 INT3 , 不仅使得跟踪不便, 还使得原来的
  用 0xCC 填充代码段来恢复 __DllDispatch 的办法失效了

  ASMax 的应对方法如下:

  在 deprotect.dll 的 DLLMain 里面加上恢复 INT3 和 INT1 的代码, 方便跟踪.

  DllDispatch 的恢复思路跟以前一样, 不过这次改成用 0xFF 填充, 拦截
  INT6 (非法指令)

2: import 的快速恢复,
  把自己的 kernel32.dll user32.dll advapi32.dll 修改,使得 API 入口代码大致像

  CreateFileA :
  push  77e56724  ; 原来的 CreateFileA 入口
  retn

  这样 StarForce 复制过来的代码就变成

  mov eax, 77e56724
  xchg eax,[esp]
  ret

  一下就得到 import 的入口了


关于新的 SF 3.0

  SF3 的 import 直接用 imprec  auto search 不到了, 不过还是可以 dump
  出来, 反编译一下就看出 iat 在哪里,

  Dlldispatch 的代码 SF3 用了一个很简单也是很有效的办法来保护
  以前 SF 的 Dlldispatch 是直接把代码解出来到代码段的, 因此以前 SF
  保护的可执行其代码 section 是空的, rawsize = 0 , vsize != 0
  现在 SF 把代码段预先填充内容, 解出来的数据和原来处的数据做运算后才是
  正确的代码, 这样 0xCC 和 0xFF 大法都不能用了. so .....
(出处:嬴政天下整理收藏)
江湖风起云涌。善于使刀杀出一条血路的人,被称为刀客; 手持长剑扬名立万的人,则被称为剑客; 而在BBS的时候,喜欢持瓢猛灌的人被称为……

TOP

发新话题