EMU618社区

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

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

[复制链接]

签到天数: 2175 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具
' ], B1 ~# y; j. p  K带调试功能的模拟器:pSX 1.13: a% J$ `% O* w. L: v: J: ]2 |- K
一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。
: \, w9 d+ y( S- v! [# F) B9 pMIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)
% W. O/ q$ a' ]: {, T9 d4 o游戏ISO:月下夜想曲Rev 2版
) Y& p0 L% o% N" a5 n" U! P( ~4 jAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
5 L. S7 q0 i& r5 [& M. dAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin
  I, h/ H4 r. IAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue) t9 c( H' o$ O
3 Y* S# ?/ ^  ]$ W* _* [$ \
2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。( U/ w, w9 B2 D
[金钱无限]
, r+ K& T  }7 y( mON=80097C00#423F;80097C02#000F( A: d$ ~% ~* k+ A
, T  w. _: A6 V; G: i8 C- X% x# G
金钱地址是0x80097C00, ]# m. ^$ @1 v1 n
* F1 ?, K* S' F# j
3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;
- Y- g# h. ~; ]  Q4 q& v2 t
5 A5 q( l  O3 K(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)/ T3 s' y2 _( z7 J4 V
( L. X% N, B* h: J, F/ Q
4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;
( b) R5 [4 \* d7 a/ F
, y6 t/ ?4 f  u4 ], A# v# [; J0 w. C& A. k& E3 a+ D
7 b- A7 J- h+ Z
5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;; e1 ?" t8 d$ `$ s
  ], |  [7 F. O& X

# J* ?6 f8 E2 g* Q" Z
: S0 x+ `- H# O3 R/ [6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;
) G. w: J! z* y5 P* T, s9 [, K& w) ^, `, A( }& z

. N8 C+ O! Z: r  X" ?7 M  Q4 o3 l5 S
6 Z; a+ L0 @( P9 F7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;
! e4 m! t$ p' o/ {
! L% f0 L/ ]- `$ \, n4 W1 [# ^" ^: h& L: C
1 d- @( q& x  S; X
8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;' L1 H4 I: b; D

4 t* ~" m# v, n' W7 J! }$ }" H6 \! a

4 ^, G8 j0 }+ O/ P+ [9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;! Y) t) R; U. u8 x

3 R  Z. v+ w1 i1 A1 I5 a001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f0000, j$ u8 ^; `- a% F8 d4 u
001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f& H! Y; A+ D5 q5 [6 l- i
001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x80090000
" ]: @2 W3 Y, d( R# a+ N001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c005 f$ o; i6 N2 e) ]. f  X2 _$ C, ?$ L
001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器6 m- j4 ?3 k: n3 t1 p' K
001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器
9 `4 X" Z8 x0 y1 E6 b: Y6 ~0 V001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器
) ~) j; Z% F3 K: Y# Y1 P001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址8 L( ~7 q% U+ d$ [# Y2 C; F* m1 T
001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为1
( S3 F" H5 X2 I2 z: q2 D% A001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续; \2 S; ^  q4 p! g
001b31f8: 00000000 nop                                ->空指令) @$ {! P6 x  N8 V" _
001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址7 j/ a0 Q2 E2 Z2 K

  j* o; |$ t9 J0 o10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。
2 S0 v8 d$ \) a6 u8 A* U# C3 @$ @% ~$ ^: y# z! B0 @" t1 ~
为什么要这样改呢?$ O* \, @8 `1 ]4 q& m# d+ n
/ ^5 d$ V1 Y7 [8 h6 G/ Z5 i. y
001b31d0: 3c05000f lui r5,0x000f* R1 y' J& U3 l% M6 K
001b31d4: 34a5423f ori r5,r5,0x423f, \% W1 _& A4 m0 ]6 k0 y

) F- s, S( T" K' ~& o0 u- U这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;( l( Z+ d% K: H* V. _# x; ?

, _( c' ^: o7 R; w5 x" ~001b31d8: 3c048009 lui r4,0x8009
% M1 {; Z# m3 p- k8 s0 s001b31dc: 24847c00 addiu r4,r4,0x7c00; ?. k- {, \( d) H0 T
+ ^# r* M8 U8 Z5 [/ a2 D" i
这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;; T! Y$ }' s8 R
, T3 r" F# ?8 B! ~; M/ z3 R/ Y! |
001b31ec: ac820000 sw r2,0x0000(r4)
/ N; c* L2 `! `: H/ O( k+ }/ V8 b9 G8 E$ T: p& U+ U
这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;
6 h( g) M& V& P# w8 M# K6 k# v7 _& k) e" o
001b31f0: 00a2102a slt r2,r5,r2
6 T! R! Z9 L) S- m" J001b31f4: 10400002 beq r2,r0,0x001b3200
/ x" {% F2 \# ^! A7 \& f/ K: b7 P+ N- F2 H5 P$ _8 b% g/ y
这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;
8 H3 f1 @; R0 X4 H* Z3 K, T
! R0 F" y3 b5 {9 }" V3 T+ `001b31fc: ac850000 sw r5,0x0000(r4)
1 l; o% R0 W1 ~7 n9 |5 y- q- U
1 T  ^" |. _: d& D+ t这一条指令是把金钱最大数值写入到金钱存放地址去;
) K, Z9 z, S$ e7 x2 m3 F' P% L& q& x& m; @) G7 W% F
把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。

4 b4 D4 P0 d7 k# |  K
! i* I4 f3 L- g% R7 ^% @3 t11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin" D. ?% a6 t* Q, g2 ~
* w0 l! S& }. U3 w' Q* E. z
12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac
9 Q7 \3 Y: R: j2 R" @7 B& S- J, x, X, B( ^! c
13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;" B. ^( O. }: c2 J: J4 N
9 r- E9 c0 V9 B( H8 M3 I
14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件
, @- k3 A% }) E- J/ [8 f9 P+ @  {; T5 M/ [0 O5 x6 u, b( d% c5 l5 J

* c* z; c2 w7 F; O! T$ B; L' s
: T5 u5 f  j6 }8 {: a- _7 R3 [15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。: u1 T$ V  {& C" Y6 \

  e0 t) t  C6 z
2 v# H3 u3 E0 h. O1 d* ~* Z8 q0 M, G5 h
16.要刻盘用实体机玩请先把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,再刻盘用实体机玩吧。3 Y" n4 `. W8 h$ H. \8 N

& H" s8 O! e7 y7 d( y8 t/ I
疾风之狼
. X7 O: t; ^" v9 |& H2025.10.11首发) i9 X4 Z- y! H- ^7 S
2025.10.17更新

: ~) s: {" G6 O0 M  v/ A

本帖子中包含更多资源

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

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 | 显示全部楼层
有时间试试   
回复 支持 反对

使用道具 举报

签到天数: 1238 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1712 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2175 天

[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-29 14:29 , Processed in 1.073242 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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