XBOX
关键词:

如何破解XBOX游戏的存档检核机制

来源:未知 时间:2007/6/29,点击:0

如何破解XBOX游戏的存档检核机制

目标游戏: VEXX x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
工具: IDA.. (http://www.google.com) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
cxbx (http://www.caustik.com/) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
Xbox Flirt (http://www.geocities.com/smil0r26/misc/xflirt.zip) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
把xflirt的sig文件放到IDA的SIG文件夹里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
16进制工具 (Your Choice) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
################################################################################# x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
介绍 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
============ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
微软在XBOX游戏存档中加入了数字签名技术用来防止修改,不过,既然是我们在玩游戏我们存档有什么理由不能修改呢?(这 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
个叫绵羊(sheep)的大哥其实很火暴啊) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
以下的说明将为你解释如何修改XBOX存档,过程非常简单,使用这个方法人人都可以做出游戏的补丁文件(patchs)我们能随 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
意修改所有的游戏 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
PART 1 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
------ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
i) 把xbe文件转换成exe文件供IDA调试 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
ii) 用IDA加载刚才转换的exe文件 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
iii) 加载Xbox Flirt x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
PART 2 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
------ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
i) 开工 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
ii) 识别函数名 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
iii) XApi Code(xbox 应用程序接口代码?). x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
iv) 找出正确的程序 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
v) 制作补丁文件 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
============================================================================ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
PART 1 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
====== x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
i) 把xbe文件转换成exe文件 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
----------------------------- x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
步骤 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) 启动cxbc x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2) 在File/Open菜单 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
选择VEXX的default.xbe. x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
3) 在File/Export(输出)菜单 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
选择存储位置 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
4)关闭cxbx x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
ok了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
ii) 用IDA加载刚才转换的exe文件 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) 打开IDA x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2) File/Open File菜单 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
选择刚刚转换好的可执行文件(default.exe) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
出现对话框 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
3) 点ok x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
4) 等一会,可能时间有点长 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
左下角的数停下来就表示好了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
iii) 加载Xbox Flirt x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
--------------------------- x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
(注:Xbox Flirt没下到,我猜测应该是IDA的一个插件类的东西吧 有明白的人能指导一下吗?) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) 在File/Load File菜单(指得应该是IDA吧?) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2) 选择Flirt Signature File x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
3) 从下拉列表中选择Xbox Flirt file. x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
4) 等一会 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
PART 2 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
====== x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
开工 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
------------- x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
准备就绪,开工 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
首先要处理的是存档中的数字签名,方法是在关联的任务中寻找相关的函数。所以我们要中断程序,查看函数。 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) VIEW/Open Subviews菜单 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2) 在列表中选择第4个项目"FUNCTIONS" x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
现在我们就能看到所有的函数了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
识别函数名 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
------------------- x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
在开始时加载Flirt是因为它可以识别许多函数,当然更多的函数可以被IDA识别。 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
下面3个函数是我们感兴趣的 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
XCalculateSignatureUpdate x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
XCalculateSignatureBegin x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
XCalculateSignatureEnd x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
很明显这几个函数把其他构成数字签名的程序关联起来,下面我们需要找出这些xapis(xbox 应用程序接口?) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) 选择"FUNCTIONS" x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2) 在菜单里选search(查找)命令 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
3) 输入"SIG"(不包括引号)点ok. x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
4) 如果找到其他xapi而非上面的那三个,那么按CTRL-T继续查找 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
直到你找到为止,然后双击进入该函数 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
XApi Code(xbox 应用程序接口代码?) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
--------- x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
你已经来到了应用程序内部 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
向下来 看到如下代码 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
; Attributes: library function x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0011D084 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0011D084 ; __stdcall XCalculateSignatureUpdate(x,x,x) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0011D084 _XCalculateSignatureUpdate@12 proc near ; CODE XREF: sub_5A2B0+15p x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0011D084 ; sub_5A2E0+18p x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
在“_XCalculateSignatureUpdate@12”点鼠标右键,接着选"Jump to Xref to Operand.." x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
现在你可以得到2个参数 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
下面我们分析一下这两个参数是做什么的,我们知道游戏需要它们做两件事 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1:在载入时校验数字签名 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2: 在保存游戏时创建新的签名 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
那么也许这两个参数正是我们要寻找的 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
iv) 找出正确的程序 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
现在要找出哪一个是我们保存游戏时调用的参数,下面需要跟踪一下代码了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
来到这里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
************************************************************************************ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2C4 push esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2C5 call _XCalculateSignatureUpdate@12 ; XCalculateSignatureUpdate(x,x,x) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2CA mov edx, [esp+arg_4] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2CE add edx, 8 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D1 push edx x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D2 push esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D3 call _XCalculateSignatureEnd@8 ; XCalculateSignatureEnd(x,x) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D8 pop esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D9 retn 10h x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2D9 sub_5A2B0 endp x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
懂汇编语言的朋友自己分析一下吧 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
现在已经进入了签名程序,可以看到我上面提及的2个API也在这里,看来我们离真相已经不远了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
Hmm,你发现了没有,这段程序里没有任何比较或检验的命令(cmp or test 汇编指令)它看起来很普通…… x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
因此我认为真正的检验关键不在这里,我们需要在外面寻找一些别的线索…… x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
来到这里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2B0 sub_5A2B0 proc near ; CODE XREF: sub_59B40+8Dp x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
双击 sub_59B40+8D来到这里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BCD call sub_5A2B0 ; 从这进入 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BD2 mov eax, [edi+10Ch] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BD8 push 1Ch x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BDA lea edx, [esp+28h+var_1C] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BDE push edx x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BDF push eax x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BE0 call sub_DE3B0 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:00059BE5 mov ecx, [esp+30h+var_1C] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
在这里你可以发现程序自自始至终都没有比较之类的命令,无论在SAVE GAME还是LOAD GAME的程序里。 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
现在让我们从头开始,按“G”输入“11D082” 在“_XCalculateSignatureUpdate@12”处继续取得参数 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
这次双击最下面的参数 来到这里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2F8 call _XCalculateSignatureUpdate@12 ; XCalculateSignatureUpdate(x,x,x) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2FD lea edx, [esp+20h+var_14] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A301 push edx x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A302 push esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A303 call _XCalculateSignatureEnd@8 ; XCalculateSignatureEnd(x,x) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A308 mov ecx, [esp+20h+arg_4] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A30C lea edx, [esp+20h+var_14] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A310 add ecx, 8 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A313 test dl, 3 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A316 lea eax, [esp+20h+var_14] x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A31A jnz short loc_5A350 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A31C test cl, 3 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A31F jnz short loc_5A350 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
haha,这里可以看到好多比较命令test(比较)jnz(非零即跳转) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
看来我们逼近终点了,继续看可以看到两个出口,这里大约有10条指令,你可以看到ecx被赋予eax的值这是执行比较命令之前 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
的一种常见做法,我认为eax将返回一个正确值或一个错误值,但是这看起来太简单了,只有一条比较指令就能返回值有些不太 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
可能,估计真正的检测应该在外面的某个地方。 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
来到这里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2E0 sub_5A2E0 proc near ; CODE XREF: sub_5A260+2Fp x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
双击 sub_5A260+2Fp and we should be here.. x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A28F call sub_5A2E0 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A294 test eax, eax x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A296 jnz short loc_5A29F x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A298 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A298 loc_5A298: ; CODE XREF: sub_5A260+22j x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A298 xor eax, eax x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29A pop esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29B add esp, 1Ch x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29E retn x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29F ; ------------------------------------------------------------------ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29F x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29F loc_5A29F: ; CODE XREF: sub_5A260+36j x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A29F mov eax, 1 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2A4 pop esi x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2A5 add esp, 1Ch x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2A8 retn x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A2A8 sub_5A260 endp x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
*********************************************************************************** x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
就在CALL sub_5a2e0这个调用外,比较EAX里的存储值 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
这里同样有两个出口,这些代码比上面的要清楚多了 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
在这里可以看到如果eax非0,那么被赋1并跳转到其他程序;如果eax=0那么来到判断命令 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
因此我想我找到了解决问题的关键,修改下面的代码 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
把“text:0005A296 jnz short loc_5A29F”的jnz命令改为jmp(无条件跳转) x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
创建补丁程序 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
------------------ x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
需要一个16进制工具 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
1) 启动16进制工具 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
2)打开VEXX default.xbe x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
3) 寻找 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
把IDA的地址转换成静态地址通常要减去10000,即 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
.text:0005A296 - BASE IMAGE = 4A296 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
4) 在16进制工具里 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
5) 把机器码75即(jnz)命令改成EB即(jmp)命令 x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
text:0005A296 jmp short loc_5A29F x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
x+++yX^'l%$Ri`$YP'5ZDzL;Gc32|S2Dx'5y<\8/spTjjstOL]PZIQzew9G;^XB90&l[E_7bnlkQLԴvgsky.com
6) 保存
  上一篇: ♦ 关于xbmc的升级,使用心得等 2007/6/29 -C%?c.ug8J|0]TJԴvgsky.com
  下一篇: ♦ 8G XBOX WD80ED硬盘成功解锁 2007/6/29
<