EMU618社区

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

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

[复制链接]

签到天数: 2131 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具& A2 J/ y7 h: a/ z* f3 E- Y5 I/ L
带调试功能的模拟器:pSX 1.139 M! [9 Z: M. b% h4 F; a7 q5 R
一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。
$ ~* s# P" {+ O1 G: UMIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)
9 R3 F; m& T0 c: ~( G- _% t$ {! [游戏ISO:月下夜想曲Rev 2版6 E" l2 A, [' b/ @
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
) e  ~5 B$ B, R1 R0 K4 v. ~Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin$ r1 J5 u/ l- j& g! y
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue0 h4 w& Q  r; C; D( F3 i
. v. n. v7 y) n. D! Q
2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。( T1 U8 f; u6 H" a: Z. S3 g
[金钱无限]. B! p$ w5 c, \2 W
ON=80097C00#423F;80097C02#000F+ K+ U9 b8 [1 j  V& x) c8 F

- K# M5 U) Z/ t% X8 v7 w金钱地址是0x80097C00
, a  T# S7 X. |: |2 T8 q5 y2 f2 N% T
3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;
( x2 T% X- N* n# T7 A. K" `, k1 a  B  D6 m6 B
(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)
" K6 U! ^2 Z1 ]9 u/ ?/ \1 u. ], j
8 c0 |, ?  G) B4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;; ~2 @6 e" z/ w2 x$ i8 j# p$ s

! ~* U% X$ u8 @+ _4 n
+ V4 M! Z2 ~3 J+ G; d" a4 x9 p! j/ p' f' [( V
5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;
6 X2 E) |# z3 @9 K0 `, C. x  @- ~9 l% z5 r
" f8 X& ?8 R% w( X/ F

; j8 d# {( ~' _6 f6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;
  l, ~* u; M- l
0 J6 X1 E6 s, U6 w6 \8 M
* Z/ V* H2 Y0 ^$ ~9 H% Y  o4 C. A, R* p& a  l: h' |
7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;
4 v$ _0 E5 c. n
" D  A6 [% F$ q) _' i! _8 a0 P6 A) {+ E

6 \* i3 @% V6 }  L: L8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;
) l- y  s6 S6 N1 ~* ]
" A! h) D8 I1 H. E8 I+ U) ?" u' c5 q: a) Q. V

) c6 f6 q$ d0 u; J9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;' M% G3 `  d; \# `. F$ D

+ ?& F2 i$ Q+ @0 ]0 y001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f00008 d  U+ t, [" q: e
001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f& y# G* z/ d9 {6 k5 x9 ]
001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x80090000
3 ?& O0 e  Y: q  s5 I2 |6 x001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c00
2 _: A" y' h1 d3 m* Z) z001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器# i7 {# e) v8 ~7 \5 x: Z: N
001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器+ a0 z1 f" c) g) U. {6 {4 s: K& U, N
001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器$ d7 H; c1 I' y: M+ K, c( `
001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址
" M) |7 f) V8 P9 m9 D- b001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为1
4 ~# ^4 x  a: E* Y8 ?001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续
6 p& w& x" L7 V! t001b31f8: 00000000 nop                                ->空指令
2 l8 R) h/ [9 |001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址' K/ E& H$ |0 @/ Q
' Y3 h( d4 q, |7 h% l
10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。0 H5 n+ ]5 u, g3 t3 ?

3 @" X$ W2 L& a# M8 r& ~0 q1 t为什么要这样改呢?$ ]1 I, ?0 S3 X4 {: u% p

" M1 _1 G6 q. e, Y001b31d0: 3c05000f lui r5,0x000f
; ]) |/ N3 l+ U8 q001b31d4: 34a5423f ori r5,r5,0x423f$ {: E- ^! c& F3 i8 E* N

' i7 J6 m" p2 c$ j! I; U$ a7 b这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;
1 a- Q6 T4 T; ^0 d
: x6 D5 s) ~; {. J# o6 r* S( V5 @001b31d8: 3c048009 lui r4,0x8009
* s* {% u0 B8 H/ V001b31dc: 24847c00 addiu r4,r4,0x7c009 w# U; E# y3 t' a& r8 u. y

8 W+ b0 U- M- _1 y3 T这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;7 J  F' F$ _) W* V8 I2 u( t

& H8 c  u4 |+ R! u3 U& `001b31ec: ac820000 sw r2,0x0000(r4)2 V& Z" h1 k) s) k# \: o( A% A' N

7 j, o' ~, Z5 S6 y; W4 K1 K这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;
, a9 w1 ]% |6 ^6 w
5 \* v1 l' r* r0 R6 [001b31f0: 00a2102a slt r2,r5,r2
" ^* {5 m) x6 [3 V9 |- L6 o001b31f4: 10400002 beq r2,r0,0x001b3200
5 r( W% K) n6 b( M7 g3 u1 w  S! ]0 l! H" t' q" L- }
这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;
9 l# s* C2 T, L  |" o% T/ [. y* P3 s! R
001b31fc: ac850000 sw r5,0x0000(r4)
0 S' b) A) Q9 D4 z+ h1 D' G7 h! o
这一条指令是把金钱最大数值写入到金钱存放地址去;- e, ]2 t" W# q( N
* P  F: r/ ]1 i% o0 I' N# o/ M+ M
把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。
8 z" \; e, t" C" `* U; b' o

" |; s/ I7 K! L7 b* e3 V11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
6 }" L  U5 s. D! I  e2 N) L8 }
12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac+ H# D0 o1 n$ J+ Y3 D& w

8 L" Y8 [1 h( s* s/ M% u# A13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;
' L3 Z; P- r5 z* N; O) J3 `# {4 [4 h
14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件: ]! ]) |9 f" _4 k7 W

% ]- r+ p) H& g, C
4 N# _+ I0 E( W" c" L  v7 ~6 [* c5 K& e! v
15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。3 ^% o, a; h6 _+ r
& `/ i# e! X! U$ j
2 S' e( f  X' b0 c1 @' W2 \- b

0 X6 l( T( [4 Q2 W' o6 @1 L16.要刻盘用实体机玩请先把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,再刻盘用实体机玩吧。
4 `' @5 L0 O; H. v' e7 M
% a; W% j+ j7 r& K' P6 J# w7 @
疾风之狼
7 D6 X1 }' y7 S& Z6 E2025.10.11首发# ]. [7 {& \' `# e
2025.10.17更新
0 w  L: c: p5 W

本帖子中包含更多资源

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

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

使用道具 举报

签到天数: 1194 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1667 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2131 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-14 14:55 , Processed in 1.077149 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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