EMU618社区

 找回密码
 立即注册
搜索
查看: 731|回复: 6

[原创HACK教程] PS1 HACK教学(2025.10.17更新以红字补充)

[复制链接]

签到天数: 2154 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具
7 i: ~6 D. }- r5 z  b带调试功能的模拟器:pSX 1.13- O# i: ?& i# s- D3 r
一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。6 Q* y/ G2 d) C) l
MIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)0 W4 S/ n5 @9 C
游戏ISO:月下夜想曲Rev 2版6 S6 p/ W( Y9 Q
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
# a3 p0 I9 U  Y, U5 x: _7 Z1 Y. DAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin
& M/ V$ b& k& B+ [) SAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue4 c2 E+ Q" Q: y: v" C

6 {- z, h4 j/ ~4 ^  c* X. V4 k, C2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。. H$ z- I' h! s% @- |
[金钱无限]
( n" ^3 y: d+ O9 K5 DON=80097C00#423F;80097C02#000F0 U9 ]/ J' \- q* b6 ]' I7 [
5 ~3 E. X2 a* u% y. I; A
金钱地址是0x80097C00
" f' w* D3 l1 o( |% _+ v( _# m& d# G! Z) O5 n$ n, f: u. M$ }$ W6 R, L7 u# k
3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;
) X8 n- [/ X8 h) Z; e6 }# Q. g# y& r( J) i5 p+ V
(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)
. \$ Y- |) `4 x: i$ _0 v+ q
* o/ N* e' n7 i8 ]6 W9 V$ @8 z4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;
7 b1 n5 p% A) k1 b
+ r, t* m% }9 x% j: z$ f  n
& a$ m# l. Z% U  F
' `9 Q2 ?7 }9 |7 _5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;& ^# u& C! T0 g5 d& c. \8 Q

6 h4 ?3 M# T# j7 r- G, C9 i) k$ ]* v7 F8 U

& c" r1 v" P2 s& l5 B! O+ {6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;
9 C+ h8 G+ L2 \3 U" T' {+ k( u8 [5 J8 ~

! P( A1 E  ~% Y3 `3 l, u
8 Z" z9 u, q* y  F, i; v7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;. m+ h" D* D6 C$ P8 A
0 e! z) n+ B  w

: `9 m- N$ w/ T$ ?) X9 l, b% {' b) H+ @
8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;0 q( f: `5 Q/ ]  @: c
8 b5 x  t2 t# D7 ^( v

# ^: p; H' X* `& i6 I1 Q* W, v4 B' |  s, ?
9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;% N' r' b/ n" ]7 _
+ O5 e/ m( g8 H2 q3 D9 K* A! c
001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f0000
: f, u. E3 Y7 C' R. Q+ D% }# [4 y001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f* V5 h1 t4 X/ n2 X3 J; f# g
001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x80090000" x/ h( p7 q3 }$ \3 C* H. D
001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c00
+ L- Q" h! q! y. C0 ^001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器9 f7 \) o1 W( J+ g
001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器: z6 m. f3 P- T, X- F7 @  p
001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器% t' R# g& [- M( U) M' t
001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址! o4 N; E8 B. g3 F" Y8 e. [
001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为1) R+ i( r# y) s4 T6 y
001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续# l3 {* e7 o8 ~* x& }. @1 k
001b31f8: 00000000 nop                                ->空指令' |5 ^! f+ T4 N0 u- [
001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址
4 E0 L  L6 @* J
" p$ A1 N/ R+ [10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。5 V6 m9 u5 r8 ^9 N3 K
5 Y1 o# e: [4 k7 x, m6 o5 a
为什么要这样改呢?
' B) Z( |7 q" J) _; v1 K1 O" P/ A9 Y3 f+ F
001b31d0: 3c05000f lui r5,0x000f  s0 Q( J$ c' G, L
001b31d4: 34a5423f ori r5,r5,0x423f
$ `* ^/ P6 \, x" C  z: q0 y. e7 K4 a' C* q. w( w- a. u% S/ T6 ~
这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;
  R4 ], m1 a  `0 i1 s4 H. l
+ p: d1 ]4 X+ q3 Z001b31d8: 3c048009 lui r4,0x8009
% {! H" e* ?  X001b31dc: 24847c00 addiu r4,r4,0x7c00
& K6 p& Q% S; O
1 P8 \/ |) i% p这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;3 F" x6 S/ j4 `" H4 M; Y$ u

# m& ]- d1 L0 g) A001b31ec: ac820000 sw r2,0x0000(r4)/ \! g9 v# A/ r# x. z2 x

  n) W* B: C( Q, q* w1 O) Q% g% F9 H% s这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;! g6 Z; X+ U9 v" T- x0 P8 \( N8 |( Z
" Q/ q2 J! {0 z- Q) p- Z' p
001b31f0: 00a2102a slt r2,r5,r2
8 u. m# f- R' P3 t001b31f4: 10400002 beq r2,r0,0x001b3200/ ?& S. X/ H1 S2 i2 n# O
! l3 t5 _7 i2 I4 t
这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;! P  L; G2 N$ Q) m- y

1 o6 Z4 _! W7 ~( |6 Y* I! a001b31fc: ac850000 sw r5,0x0000(r4)
) s' \6 |# [" j. x
# ^# z' l2 ~! S" _" _- i9 `3 |这一条指令是把金钱最大数值写入到金钱存放地址去;' L. X: h# A; i( [2 U) |
* p8 I) k5 R+ x9 ~, r
把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。

' U* d! \3 j! Q& Y
7 c- {* L, p, p+ X* P. W2 x11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin! G! f* u" ]; Y1 [6 C9 L

. ?4 ^# q- F- [& a12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac
9 l7 _. ], a+ E" x1 K" Y+ M, I6 Y1 W8 i1 b$ G& ?0 e" C' Y
13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;( F# m) @; g3 [$ ~4 T0 [& m# D- X
; u3 Y' Q2 i( @9 c5 r0 @; s
14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件
9 Z2 b/ p4 u; S5 Z3 `4 a) Z; O0 {6 n

5 T* ?# t3 }% M
. t# h: i* \- I& Q  j- k( S2 K15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。# w+ t8 I: l0 J1 m: a: v
# l& u/ t/ i4 b$ C+ J; B" h7 e( I. D

2 l; e. C& f5 N: f
3 ]2 z4 N4 x2 n( C. Q16.要刻盘用实体机玩请先把Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin和Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin两轨数据合并成一个镜像,然后用ECCREGEN 1.4之类修复EDC和ECC,再刻盘用实体机玩吧。
7 w$ A) p! o) u6 E- V- v- C
$ T( M; R- C- B* b2 W0 ~8 H
疾风之狼  v1 W$ B+ Z  V  a/ V- X
2025.10.11首发
8 f% p+ h3 o7 L  j1 b) L5 [2025.10.17更新
+ e9 E! ?" [8 s/ p6 s

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

签到天数: 23 天

[LV.4]偶尔看看III

发表于 2025-10-11 20:39:31 | 显示全部楼层
狼大真高手。我目前只尝试过FC SFC MD的hack,其余机种的还一次没碰过
回复 支持 反对

使用道具 举报

签到天数: 10 天

[LV.3]偶尔看看II

发表于 2025-10-11 23:42:41 | 显示全部楼层
有时间试试   
回复 支持 反对

使用道具 举报

签到天数: 1218 天

[LV.10]以坛为家III

发表于 2025-10-12 10:23:37 | 显示全部楼层
大佬 谢谢   没事了研究研究
回复 支持 反对

使用道具 举报

签到天数: 1691 天

[LV.Master]伴坛终老

发表于 2025-10-12 17:17:21 | 显示全部楼层
感谢分享
[发帖际遇]: 一个袋子砸在了 yes007007 头上,yes007007 赚了 1 个 柠檬. 幸运榜 / 衰神榜
回复 支持 反对

使用道具 举报

签到天数: 2154 天

[LV.Master]伴坛终老

 楼主| 发表于 2025-10-17 16:36:48 | 显示全部楼层
2025.10.17更新以红字补充
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2025-11-13 00:46:02 | 显示全部楼层
教程类的帖子,必须支持!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2025-12-8 03:53 , Processed in 1.080079 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表