系统字库置换原理Word格式文档下载.docx

上传人:b****8 文档编号:22875733 上传时间:2023-02-05 格式:DOCX 页数:32 大小:28.57KB
下载 相关 举报
系统字库置换原理Word格式文档下载.docx_第1页
第1页 / 共32页
系统字库置换原理Word格式文档下载.docx_第2页
第2页 / 共32页
系统字库置换原理Word格式文档下载.docx_第3页
第3页 / 共32页
系统字库置换原理Word格式文档下载.docx_第4页
第4页 / 共32页
系统字库置换原理Word格式文档下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

系统字库置换原理Word格式文档下载.docx

《系统字库置换原理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《系统字库置换原理Word格式文档下载.docx(32页珍藏版)》请在冰豆网上搜索。

系统字库置换原理Word格式文档下载.docx

Export0,Namesyslib,Functions1,Variables1,flags80000000

Functions:

0xD632ACDB[0x00000168]-module_start

Variables:

0xF01D73A7[0x00001440]-module_info

Export1,NamesceLibFont,Functions15,Variables0,flags00010000

0x67F17ED7[0x00000A94]-sceFontNewLib

0x574B6FBC[0x0000070C]-sceFontDoneLib

0x27F6E642[0x00000704]-sceFontGetNumFontList

0xBC75D85B[0x000006FC]-sceFontGetFontList

0x099EF33C[0x000006F4]-sceFontFindOptimumFont

0x681E61A7[0x000006EC]-sceFontFindFont

0xA834319D[0x00000858]-sceFontOpen

0x57FCB733[0x000006E4]-sceFontOpenUserFile

0x3AEA8CB6[0x000006DC]-sceFontClose

0x0DA7535E[0x0000068C]-sceFontGetFontInfo

0xDCC80C2F[0x000004F8]-sceFontGetCharInfo

0x5C3E4A9E[0x000004F0]-sceFontGetCharImageRect

0x980F4895[0x00000380]-sceFontGetCharGlyphImage

0xCA1E6945[0x00000378]-sceFontGetCharGlyphImage_Clip

0xEE232411[0x00000370]-sceFontSetAltCharacterCode

Imports:

Import0,NamesceLibFttt,Functions27,Variables0,flags00090011

0x67F17ED7[0x00001240]-sceLibFttt_67F17ED7

0x574B6FBC[0x00001248]-sceLibFttt_574B6FBC

0x48293280[0x00001250]-sceLibFttt_48293280

0x27F6E642[0x00001258]-sceLibFttt_27F6E642

0xBC75D85B[0x00001260]-sceLibFttt_BC75D85B

0x099EF33C[0x00001268]-sceLibFttt_099EF33C

0x681E61A7[0x00001270]-sceLibFttt_681E61A7

0x2F67356A[0x00001278]-sceLibFttt_2F67356A

0x5333322D[0x00001280]-sceLibFttt_5333322D

0xA834319D[0x00001288]-sceLibFttt_A834319D

0x57FCB733[0x00001290]-sceLibFttt_57FCB733

0xBB8E7FE6[0x00001298]-sceLibFttt_BB8E7FE6

0x3AEA8CB6[0x000012A0]-sceLibFttt_3AEA8CB6

0x0DA7535E[0x000012A8]-sceLibFttt_0DA7535E

0xDCC80C2F[0x000012B0]-sceLibFttt_DCC80C2F

0x5C3E4A9E[0x000012B8]-sceLibFttt_5C3E4A9E

0x980F4895[0x000012C0]-sceLibFttt_980F4895

0xCA1E6945[0x000012C8]-sceLibFttt_CA1E6945

0x74B21701[0x000012D0]-sceLibFttt_74B21701

0xF8F0752E[0x000012D8]-sceLibFttt_F8F0752E

0x472694CD[0x000012E0]-sceLibFttt_472694CD

0x3C4B7E82[0x000012E8]-sceLibFttt_3C4B7E82

0xEE232411[0x000012F0]-sceLibFttt_EE232411

0xAA3DE7B5[0x000012F8]-sceLibFttt_AA3DE7B5

0x48B06520[0x00001300]-sceLibFttt_48B06520

0x568BE516[0x00001308]-sceLibFttt_568BE516

0x5DCF6858[0x00001310]-sceLibFttt_5DCF6858

Import1,NameIoFileMgrForUser,Functions5,Variables0,flags40010000

0x810C4BC3[0x00001318]-sceIoClose

0x109F50BC[0x00001320]-sceIoOpen

0x6A638D83[0x00001328]-sceIoRead

0x42EC03AC[0x00001330]-sceIoWrite

0x68963324[0x00001338]-sceIoLseek32

Import2,NameModuleMgrForUser,Functions2,Variables0,flags40010000

0x977DE386[0x00001340]-sceKernelLoadModule

0x50F0C1EC[0x00001348]-sceKernelStartModule

Import3,NameStdioForUser,Functions1,Variables0,flags40010000

0xA6BAB2E9[0x00001350]-sceKernelStdout

Import4,NameSysMemUserForUser,Functions3,Variables0,flags40000000

0x237DBD4F[0x00001358]-sceKernelAllocPartitionMemory

0xB6D61D02[0x00001360]-sceKernelFreePartitionMemory

0x9D9A5BA1[0x00001368]-sceKernelGetBlockHeadAddr

Import5,NameThreadManForUser,Functions4,Variables0,flags40010000

0xCEADEB47[0x00001370]-sceKernelDelayThread

0x446D8DE6[0x00001378]-sceKernelCreateThread

0xF475845D[0x00001380]-sceKernelStartThread

0x809CE29B[0x00001388]-sceKernelExitDeleteThread

Done

正如我们所料,Export库被命名为了sceLibFont,里面函数的NID也全部保持一致。

因此我们才能正常导出API名称。

继续往下看到Imports,一个叫sceLibFttt的导入库引起了我们注意。

这是什么?

仔细看一看后面跟的NID,跟LibFont里的NID一模一样嘛

因为NID是有损的SHA1摘要,因此出现重NID的可能性非常非常小,唯一的解释:

同名函数。

需要从哪里导入同名函数呢?

答案只有原PRX。

由此我们猜测,TPU将原来的LibFont.prx的模块名修改成了sceLibFttt,再进行导入。

将ISO带的原版LIBFONT进行提取,其中的内容证实了我们的猜想。

确定了反向思路以后,我们来看一看MHP2G到底是怎么调用那些模块的

经过对BOOT的反汇编,我们得到的结论是,游戏采用sceUtilityLoadModule这个API进行了装载,而不是惯常看到的sceKernelLoadModule

稍微有些出乎意料,不过并不影响我们接下来的工作

经过一些观察,我们注意到一个有意思的情况

就是在fontfuck的末尾(0x1960)出现了.data段,里面的内容是2958个uint16

因为PGF系统字库是采用Unicode编码作为寻字基础,我们猜测这些就是Unicode码

首先记在这里

好了,下一步没有任何疑问

prxool-npsplibdoc.xml-wfontfuck.prx>

>

fontfuck.txt

反汇编开始

//说明一点,这之后有关系统API的接口将全部直接运用而不加以说明——包括PSPSDK里提供的和没有提供的。

//具体可参见PSPSDK的头文件,和PSPdevsrc1这个泄漏的开发包

作为一个库模块,事实上原本的Libfont是并不包括module_start这个函数的

//说明,module_start是模块被调用的时候运行的那个函数,类似于类机制里面的构造函数的作用

不过既然是一个外壳,又需要装载其它模块,显然写一个module_start是很好的选择

因此我们直接跳到module_start

//此函数隶属syslib库,NID为0xD632ACDB;

当然,有libdoc的时候不需要知道这个

;

Subroutinemodule_start-Address0x00000168 

Exportedinsyslib

module_start:

Refs:

0x00001498 

0x00000168:

0x27BDFFF0'

...'

'

-addiu 

$sp,$sp,-16

0x0000016C:

0xAFB10004'

....'

-sw 

$s1,4($sp)

0x00000170:

0xAFB00000'

$s0,0($sp)

0x00000174:

0x00A08821'

!

-move 

$s1,$a1

0x00000178:

0x00808021'

$s0,$a0

0x0000017C:

0x3C050000'

...<

-lui 

$a1,0x0

0x00000180:

0x3C040000'

$a0,0x0

Dataref0x00001634"

fontfuck"

0x00000184:

0x24841634'

4..$'

$a0,$a0,5684

Textrefsub_00000294(0x00000294)

0x00000188:

0x24A50294'

...$'

$a1,$a1,660

0x0000018C:

0x24060019'

-li 

$a2,25

0x00000190:

0x24070800'

$a3,2048

0x00000194:

0x00004021'

@..'

$t0,$zr

0x00000198:

0xAFBF0008'

$ra,8($sp)

0x0000019C:

0x0C0004DE'

-jal 

sceKernelCreateThread

0x000001A0:

0x00004821'

H..'

$t1,$zr

0x000001A4:

0x00402021'

@.'

$a0,$v0

0x000001A8:

0x02002821'

(..'

$a1,$s0

0x000001AC:

0x04400003'

..@.'

-bltz 

$v0,loc_000001BC

0x000001B0:

0x02203021'

0.'

$a2,$s1

0x000001B4:

0x0C0004E0'

sceKernelStartThread

0x000001B8:

0x00000000'

-nop 

loc_000001BC:

0x000001AC 

0x000001BC:

0x8FBF0008'

-lw 

0x000001C0:

0x8FB10004'

0x000001C4:

0x8FB00000'

0x000001C8:

0x00001021'

$v0,$zr

0x000001CC:

0x03E00008'

-jr 

$ra

0x000001D0:

0x27BD0010'

$sp,$sp,16

映入眼帘的是非常简单的结构,显然是开启一个线程进行操作

还原以后的代码大抵如此

intmodule_start(SceSizeargs,void*argp)

{

SceUIDth=sceKernelCreateThread("

sub_00000294,0x19,0x800,0,NULL);

if(th>

0)

sceKernelStartThread(th,args,argp);

return0;

}

//其实这段代码完全没有还原的必要,这里纯粹无聊……

可见主线程需要我们进sub_294了,追

Subroutinesub_00000294-Address0x00000294 

sub_00000294:

0x00000188 

0x00000294:

0x27BDFFF8'

$sp,$sp,-8

0x00000298:

0x0000029C:

Dataref0x00001664"

FontfuckStart!

\n"

0x000002A0:

0x24841664'

d..$'

$a0,$a0,5732

0x000002A4:

0xAFBF0004'

$ra,4($sp)

0x000002A8:

0x0C000420'

...'

sub_00001080

0x000002AC:

0x3C100000'

$s0,0x0

0x000002B0:

0x3C020000'

$v0,0x0

0x000002B4:

0x3C030000'

$v1,0x0

Dataref0x00001678"

disc0:

/PSP_GAME/USRDIR/oldfont.prx"

0x000002B8:

0x26041678'

x..&

$a0,$s0,5752

Dataref0x00003144...0x000000000x000000000x000000000x00000000 

0x000002BC:

0xAC403144'

D1@.'

$zr,12612($v0)

0x000002C0:

0x0C000091'

sub_00000244

Dataref0x00005150...0x000000000x000000000x000000000x00000000 

0x000002C4:

0xAC605150'

PQ`.'

$zr,20816($v1)

0x000002C8:

0x04400024'

$.@.'

$v0,loc_0000035C

0x000002CC:

0x000002D0:

loc_000002D4:

0x00000368 

Dataref0x0000314C...0x000000000x000000000x000000000x00000000 

0x000002D4:

0x2444314C'

L1D$'

$a0,$v0,12620

0x000002D8:

0x000002DC:

Dataref0x0000515C...0x000000000x000000000x000000000x00000000 

0x000002E0:

0x2463515C'

\Qc$'

$v1,$v1,20828

Dataref0x0000514C...0x000000000x000000000x000000000x00000000 

0x000002E4:

0x2442514C'

LQB$'

$v0,$v0,20812

0x000002E8:

0x2405FFFF'

$a1,-1

loc_000002EC:

0x000002F8 

0x000002EC:

0xA4850000'

-sh 

$a1,0($a0)

0x000002F0:

0x24840002'

$a0,$a0,2

0x000002F4:

0xA4600000'

..`.'

$zr,0($v1)

0x000002F8:

0x1482FFFC'

-bne 

$a0,$v0,loc_000002EC

0x000002FC:

0x24630002'

..c$'

$v1,$v1,2

0x00000300:

0x3C060000'

$a2,0x0

0x00000304:

Dataref0x0000312C...0x000000000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1