Flash初哥

January 21, 2010

Multi-Thread Programming in Python

Filed under: AutoPoster,DiscussKiller,Python — Tags: — KAV @ 11:23 pm

(一)在Python中创建一个线程对象

类继承threading.Thread

在__init__里调用threading.Thread.__init__(self, name = threadname)

threadname为线程名字,这样就实现了一个空线程

(more…)

在XNA中渲染显示3DsMax中的模型

Filed under: 3D,3DsMAX,C#,XNA — Tags: , — KAV @ 3:48 am

最近在研究XNA,正好将一些学习过程中的心得写下来。

XNA中显示模型是需要通过XNA的pipeline来实现的,一般来说,XNA自带了两类3D模型的导入处理器,可以分别处理.FBX文件和.x文件, 其中.x文件在DirectX 3D编程中应用得比较广泛,而.FBX文件则能很方便的由3DsMax中导出,所以我决定采用.FBX文件作为模型的载体。
(more…)

[轉]Aion 資源解密

Filed under: 網上收隼 — KAV @ 3:44 am

这两天应美工的要求,我破解了一下aion的美术资源包。
aion所有的美术和音乐资源,还有UI、场景、关卡数据,都是打包存放在*.pak文件里的。pak文件其实原本是一个普通的zip压缩文件,后来在此基础上经过加密处理了。
根据以往经验,我先在网上找一下有没有人已经破解好了的,结果却令人失望。网上流传的AION_PAK文件查看器、RPGViewer 3.0我都下载试了,结果都没破解成功,那些估计都是给旧版用的,而我下的是最新版客户端。看来只有自己动手、丰衣足食了。
我先用UE打开一个pak文件看了下,十六进制状态下感觉很像zip文件,只是文件头不一样。zip的文件头是504B0304,而pak的文件头是 AFBCFCFB,刚好是504B0304 xor FFFFFFFF产生的值。我继续仔细检查了一下其它的文件数据,发现所有相关zip格式的文件头标志(0x04034b50)、目录中文件的文件头标志 (0x02014b50)、目录结束标记(0x06054b50)的三处数据都被改过了,而且都是直接用的异或运算。于是手工把这些标志一一改回来,然后又把pak文件的扩展名改成了.zip,然后这个加密的文件已经能用WinRar打开了。这时的我小有成功之感,但不免有点紧张,因为总感觉不会这么简单。果然,当开始解压缩的时候,出现了CRC校验错误,解出来的文件都是0字节。
接下来我面临两种选择:一是凭运气蒙一下,试试修改CRC32校验码;二是动大手脚,反编译游戏程序,取得解密算法的相关指令,然后再编写破解补丁。最偷懒的办法当然是选择前者,因为反编译一般是需要破壳的,单是破壳这一步我估计我一天时间都做不完,于是我开始动手改起CRC来。CRC全称 Cyclical Redundancy Check(循环冗余校验),是通信领域中最常见的一种数据校验码,可以验证网络传输的文件是否有数据损失,还可以验证软件是否被病毒或恶意软件修改等,另外还有一种常见的校验码是MD5。如果待解压文件的CRC码与zip中预先记录的CRC码不符,就会出现CRC校验错误。我的思路是先计算出当前文件的 CRC码,再手工把预先记录的CRC码改成刚计算好的值,以此使两者统一起来。我翻出以前编写的unzip代码测试,结果发现在计算CRC之前,就已经出现了deflate错误。deflate错误是指的已压缩文件的压缩数据有错,这回可陷入僵局了。能想到的最后一招,是把压缩数据全部xor一下,凭运气再试试。费了点力气这么做了,结果却一无所获,一天的时间就这么浪费过去了。
我给自己两天的时间来破解,如今只有一天了,如果说再破解不出来,就要被迫放弃了,毕竟还有很多更重要的事情要做呢。不过放弃是件很不愉快的事,就好像你正在打游戏上瘾的时候,忽然有个人要你关了电脑去吃饭,你肯定会很烦。
再用一天时间来破解它,我实在没什么把握,不过还是决定试一下。现在能做的只有老老实实破壳了,先大概观察了一下整个aion游戏程序,找到了关键文件 CrySystem.dll,用的是Themida的壳。要破themida,我还是先在网上搜了一下,看看有没有现成的工具。搜索结果吓了我一跳,破 themida壳的文章和教程多如牛毛,Themida视频教程、脱壳机遍地都是,比制作flash小游戏的教程还要多数倍。如此看来,中国的破解和制作外挂大军又茁壮的成长了。今天算是运气不错,没费多少力气,就脱壳成功,进而又生成了静态的反汇编代码。剩下的基本上就是力气活了,花了几个小时的研究,我终于弄懂了pak文件的加密算法。其算法说起来还是很简单的,当然任何事情都是会者不难,难者不会,前一个小时还在云里雾里的,现在就完全烟消云散了。
下面简要说一下aion的pak加密算法。pak确实是在压缩数据那儿加密了,而且用的是密钥,但是只加密了压缩数据的前32字节,利用密钥对这32字节的数据进行异或运算。这样做既破坏了压缩数据,使之不能解压,又不至于导致计算量过大,是一种比较可取的加密方案。
aion的游戏模型是CGF格式,要用3D Object Converter 4.2的版本以上才能查看,注意一定要导出WaveFront obj格式(3ds格式不含贴图uv信息),再导入到3dsmax里。
aion 的贴图是DDS格式(DirectX图片格式),可以用Irfan View打开看,也可以通过插件导入Photoshop。每个模型都有3-5套分层贴图,分别有漫反射、颜色遮罩、法线、高光、自发光、透明等贴图。贴图分辨率不算太大,一般是512*512,不过作为网游来说还算可以了。
场景的贴图,对比几张游戏截图看了一下,确实很漂亮。场景的设计能看出参考了许多欧洲印象派大师的名画,新手村那儿就留有莫奈《荷塘》的印记,魔界的画面明显渗透出凡高的《星月夜》、《麦田上的乌鸦》等名作的痕迹。

3ds max 9 编辑画面如何一次显示很多DDS图文件?

Filed under: 3D,3DsMAX — Tags: , — KAV @ 2:39 am

请使用3ds max utilities面板~~在utilitiesrm卷拦下找到asset browser(资源浏览器)去观看所有的dss文件案

Powered by WordPress