冒险解谜游戏中文网 ChinaAVG

标题: UV坐标暴力扫描工具(scgame请进) [打印本页]

作者: shane007    时间: 2010-1-22 11:31
标题: UV坐标暴力扫描工具(scgame请进)
在很多游戏里都采用UV坐标来保存每个字符的坐标,如果字体定义文件是一个单独的文件,
/ v. G! R3 C/ r# t分析起来还是比较容易的,比如神秘岛4和福尔摩斯觉醒等等。但是如果字体定义是以数组的
' v4 ?6 }# _4 q! S4 F' h形式编译到exe文件或存在于其他数据文件里面的话,寻找起来就比较麻烦了。
" C9 B8 G  Y/ C( j# C5 O. C5 \+ R- |& I8 D" v" k% J& h
本工具就是我设计的暴力扫描文件里的疑似UV坐标的工具。 " j. G9 m) j; _2 ^  U  O
我们假设有一张256X256大小的图片,如果字库定义采用UV坐标的话, * G0 A* }5 l/ ~; {8 l6 S3 ?4 S% m
在字库定义文件中肯定会存在1/256-256/256这样的UV坐标。 ; t. y3 t! `2 L8 z9 B9 m
(当然,都是以4个字节的16进制数的形式存在的)
7 ^2 y& ?* n' @+ v' O我们的工具就是来个256次的循环扫描在文件中寻找是否存在1/256-256/256的16进制数。 2 k, p( M2 F. D4 L( L/ Y7 f
如果找到的话,就在画面上表示出来。   O& _+ i$ I0 F% F) V/ l
表现形式是这样的在屏幕上画一个很长的矩形,代表一个文件,扫描到疑似UV坐标的话,
- r) P$ L  p6 Q* H; Y: d" S就在相应的位置画上一条纵向的竖线。
, N) n2 @- n0 M+ k如果这个文件里存在图片字库的UV坐标的话,将会在某一个区域集中且均匀地画上很多竖线。
7 }# @5 Z  K$ b! z, r6 O4 T用肉眼就可以很直观地看出来。当然,我们可能会扫描到一些其实并不是UV坐标的数据,但是 ! h$ H% _: N% {
由于这些数据是分散,非均匀分布的所以可以很直观地排除。 ; d' u& B8 [9 B6 d3 K8 A# ~
这个工具主要是针对exe和其他数据文件的,但是基本上来说,可以扫描任意文件。 * e* q. [4 \1 ?1 r' D+ l
有了这个工具,可以大大加快寻找图片字库定义的过程。
! O: u4 H3 u1 Y: K另外,不是所有图片字库都使用UV坐标的,有个小技巧,如果在游戏中发现使用不同大小的同一种字体,但是找到的图片字库只有1种大小的话,就很可能是使用了UV坐标。 2 d6 \4 Y0 b7 h8 @) n
对于非UV坐标图片字库,我以后会设计另一个暴力扫描工具。 5 q: {. A9 @6 d/ m8 K
1 S  n+ i8 `) @: E
不知道有没有懂技术的热心朋友来完成这个工具?
; [  S0 j- o1 J; `& |5 F6 }5 G/ r
" w+ E+ a5 L/ K1 V---------------------------------------------------------- ; f, n& Z; N( w% r* Y8 C
2010.4.15  更新 . w/ j9 ?4 e, X+ N: a" g
scgame,你好,想把这个任务安排给你来作。
  _$ q' h: y7 k2 ]: a' Z最近如果事情比较多的话,可以等有空的时候再做,不着急。 / h5 M' _. e; L/ K
我把工具的设计再修改一下,就是依次扫描字体定义文件,步长1个字节,如果每4个字节转化为浮点数再乘以2048是一个整数的话。 就输出1行log,要求有这四个字节的第1个字节的offset,和乘以2048后的结果。 5 A. `3 u3 e/ k! h: G# S, ?
有不懂的话,请提问。
( B& E/ w' t' V+ \( A2 Q# {1 F- e. f; ]

作者: shane007    时间: 2010-4-15 22:26
2010.4.15  更新
作者: scgame    时间: 2010-4-17 09:58
哦,我知道了,好多任务啊,哈哈,先把第一个做掉再慢慢来
作者: scgame    时间: 2010-4-17 10:14
为什么是乘2048
作者: shane007    时间: 2010-4-17 10:26
引用第3楼scgame于2010-04-17 10:14发表的  :
8 R0 }9 z' Y& ?) F8 Q7 ?为什么是乘2048

4 e2 A- n$ w  n/ r1 T. ]' k因为乘256为整数的话,乘2048 也必为整数,反过来则不成立。
. b; ~. {4 ]7 G0 Y& g6 a: @所以我们要选较大的1个,就选2048吧,游戏里面的图片字库的宽度一般没有更大的了。




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2