KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

[文物] Planetarian 汉化测试第一版下载

[ 46998 查看 / 59 回复 ]

回复:Planetarian 汉化测试第一版下载

PS:拖动窗口的话字幕的位置也跟着一起动...


这个应该不可能吧,汗一个。我写屏的函数都是按屏幕的绝对坐标写的,而且,我也没得到Planetarian窗口的位置。可能是没更新。

其实,这些问题下个版本肯定不会有的(希望……呵呵).
TOP

回复:Planetarian 汉化测试第一版下载

严重支持楼上的!


传播音乐梦想的种子,让音乐的美在人们心中破土成长
拥有梦,拥有未来!
TOP

回复:Planetarian 汉化测试第一版下载

以下引用kkkklll在2004-12-17 13:02:51的发言:

这个应该不可能吧,汗一个。我写屏的函数都是按屏幕的绝对坐标写的,而且,我也没得到Planetarian窗口的位置。可能是没更新。

其实,这些问题下个版本肯定不会有的(希望……呵呵).
嗯,的确如此,偶记错了=v=
总之期待正式版了XD
TOP

回复:Planetarian 汉化测试第一版下载

有速度==||
明天回家实验= =


ライアーソフト人気向上委員会
http://blog.goo.ne.jp/nowitzkiwc
TOP

回复:Planetarian 汉化测试第一版下载

偶知道是虾米问题了,显不出是因为切换了屏幕后没有改变写的位置,结果写到外面去了,呵呵。

我的机器一直是800×600分辨率,所以可以显示。
TOP

回复:Planetarian 汉化测试第一版下载

以下引用kkkklll在2004-12-17 17:23:54的发言:
偶知道是虾米问题了,显不出是因为切换了屏幕后没有改变写的位置,结果写到外面去了,呵呵。

我的机器一直是800×600分辨率,所以可以显示。


我想还是表用绝对坐标,因为窗体样式可改,容易引起误差。

以下引用亡灵之猫在2004-12-17 12:28:16 的发言:
我还有一种想法:继承游戏的主窗体再建一个子窗体,用SetWindowPos()函数(记不清是不是这个名字来着)将窗体置为最前,然后把文字显示在那个窗体上....


还有千万不要想用嵌入的方式写屏。我的想法就是因为这个而行不通的。
程序redraw时会把我的窗体也给覆盖了,只有通过不断Refersh来维持窗体,这会使得字幕不稳定,显示图之类的更是惨不忍睹,看来楼主只有在程序外部作文章了!
以下是程序草稿和源代码(Delphi7),虽然实现不了,但是也许对楼主有所帮助:

这里下载

先启动我的程序,再启动planetarian,用鼠标点击planetarian窗体任意位置即可看到实现的效果。

PS:看到寄生窗体中的那些数字了吗?他们是文字窗的相对坐标,依次代表x,y,cx,xy(从横行看起)


传播音乐梦想的种子,让音乐的美在人们心中破土成长
拥有梦,拥有未来!
TOP

回复:Planetarian 汉化测试第一版下载

呵呵,Planetarian终于被破解了~
支持楼主~

等待在未来之途的会是什么,我不知道,不过,肯定是与和平、善良、正义完全无关的东西吧!
                                                  ──雪人
TOP

回复:Planetarian 汉化测试第一版下载

问一下楼主,外挂字幕是如何实现和游戏同步的?是通过API Hook、调试API、硬件断点还是别的技术?
    我在做的对脚本引擎的逆向工程遇到了很大的阻碍。现在已经查明SEEN文件位于kineticdata.pak的
偏移29B00D8h处,大小为8506Ch字节,前面38h字节为头部,游戏初始化时读入内存并进行第一轮解密。
通过目录或存档进入游戏时还要再解密一次,才得到真正的脚本。最大的困难在于虚拟地址004F3210处
的一个子程序。这个子程序是整个解密算法的核心,两轮解密都要用到,长度为22F9h字节,有36个输入
参数,里面大量使用多层间接寻址和跳跃表,最后还有389个ret返回出口。看到这个样子我已经觉悟到
要在短期内还原它的算法是不可能了。下个月我考研,现在只有放弃。期待楼主早日做出正式版。
    另外游戏中的文字到底是用什么方法显示的也不清楚。SoftICE装载了ddraw.dll,d3d8.dll,d3d9.dll
之后,DirectDrawCreate、DirectDrawCreateEx、Direct3dCreate8、Direct3dCreate9及常规GDI中的
TextOut、ExtTextOut、DrawText、DrawTextEx等函数都拦截不到文本输出。
KEYFC第二届版杀 - 川澄 舞
TOP

回复:Planetarian 汉化测试第一版下载

以下引用wdx04在2004-12-18 0:38:19的发言:
    问一下楼主,外挂字幕是如何实现和游戏同步的?是通过API Hook、调试API、硬件断点还是别的技术?


我想没那么复杂吧,对基于DirectX编写的程序来说API Hook等钩子是不起作用的,因为对系统的调用都交给了DX。似乎要同步外挂字幕只需要监控程序内存,获得当前换页的相关参数就可以实现

以下引用wdx04在2004-12-18 0:38:19的发言:
    另外游戏中的文字到底是用什么方法显示的也不清楚。SoftICE装载了ddraw.dll,d3d8.dll,d3d9.dll
之后,DirectDrawCreate、DirectDrawCreateEx、Direct3dCreate8、Direct3dCreate9及常规GDI中的
TextOut、ExtTextOut、DrawText、DrawTextEx等函数都拦截不到文本输出。


wdx兄作个实验看看,直接用光栅运算为文字和图片作镂空(即“抠像”),发现问题了吗?直接镂空的文字和图片其曲线边缘有明显锯齿,而你看游戏中图像和文字(高品质下),边缘十分平滑,没有锯齿。
要实现这种效果有两种方法:
1. 3D实现法,将文字以贴图的方式画在一个面片上,打开平滑渲染模式,由硬件计算半透明镂空。
2. 2D实现法,将文字预先DRAW到一个Buffer中,用光栅运算镂空,在把Buffer中的图与背景叠加并计算一个半透明的边。

显然,无论以上哪种方法,写文字时都用不到绘图API函数,自然不能截取。既然已知文字的解密途径,不如监控文字Buffer的位置,这样便可以拦截到文字。
根据我的验证Planetarian的引擎使用了上述的“方法2”,因为在实验窗体时我发现文字是以块为单位画上去的,每个文字都是一个矩形块,而且这样做也方便了字幕滚动效果的生成。


传播音乐梦想的种子,让音乐的美在人们心中破土成长
拥有梦,拥有未来!
TOP

回复:Planetarian 汉化测试第一版下载

以下引用wdx04在2004-12-18 0:38:19的发言:
    问一下楼主,外挂字幕是如何实现和游戏同步的?是通过API Hook、调试API、硬件断点还是别的技术?


其实很简单,那就是……读内存,每隔X毫秒读一次内存,变了就更新字幕。这个方法还是比较好用的,基本所有程序都可以通用。

不过在pl中其实是读不到正在显示的字符的(其他大多能读到),所以比较麻烦,得去找一个对应显示内容列表的内存位置(不同机器还可能不一样……)。API Hook等瓜瓜,我本身都不熟,不能熟练运用。呵呵。


  另外游戏中的文字到底是用什么方法显示的也不清楚。SoftICE装载了ddraw.dll,d3d8.dll,d3d9.dll
之后,DirectDrawCreate、DirectDrawCreateEx、Direct3dCreate8、Direct3dCreate9及常规GDI中的
TextOut、ExtTextOut、DrawText、DrawTextEx等函数都拦截不到文本输出。


还好没去找什么拦截,不然又白费时间了。

顺便问一下,有没有什么函数可以将程序的ProcessID转成它的窗口的HWND的。用其他方法,只要能得到Pl的窗口位置就行。
TOP