EMU618社区

 找回密码
 立即注册
搜索
查看: 627|回复: 5

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

[复制链接]

签到天数: 2105 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具
: z  _. I* _2 M带调试功能的模拟器:pSX 1.13
. \, ^) w9 R8 K2 [9 X* h; B4 \一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。
: w# w  g& A) ~5 O# iMIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)& Q9 [; e- O; U0 k1 u$ x+ M" n
游戏ISO:月下夜想曲Rev 2版
* }7 t- V* r+ m! t9 Y7 N& c% `2 uAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
! N8 D! H. y4 WAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin
  I" ~% I6 }: UAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue
( [% A& l1 I& I6 R$ Q
; T0 t' M) g% O2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。
- `: y' D9 F" v5 M( J& {[金钱无限]
# g/ x/ Z1 ]" \% P' ~$ N* HON=80097C00#423F;80097C02#000F7 y" T  k- L5 Y

5 c" m( ]4 }0 K. g金钱地址是0x80097C00+ G0 T( F: {1 ]

( f" {) M7 X/ n5 q1 f& I3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;  r% ~' O4 p. Y4 @- G7 x; c3 H0 C

: }7 M) b% H# v9 G(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)
1 h4 |9 Y1 C7 t1 q1 C
1 ?0 A  y. S1 Y4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;" e6 l& @1 d! I$ O2 j% y
; Q( A2 L; Q* v" W/ U
7 h) @3 E) D8 T! D

" [3 n3 }9 ~- o; r2 ?5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;
2 C/ X# r7 _& e# B2 B% v" R
# }$ `* ?% u0 o2 K1 Q0 N) M; V* ~' i+ _# I" G
) |% Z) Y  Y7 ]; W) w
6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;3 k5 b+ U2 ]- s; H9 A

: \# c9 ]$ L' Q8 |! x2 J/ j% b
) k* H- G$ f9 p- n9 x  d* r! C
3 \9 ?% f5 a7 J  Q3 ]+ c. \& `! }7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;
, ~9 o. _3 F3 s. p5 a6 N5 w; X1 U# z# N/ [4 a2 w
8 ]. q& {1 `2 H9 Y9 O
  T* j, j7 Z$ \: ^( {; I7 r2 @1 M7 H
8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;0 b7 a. B, W; O' X

2 b: G+ U% e, N* S0 B6 q1 P9 f
) j9 X" j( B" Z; G/ M* a. Q5 p& \. ]  V9 I* ^, t
9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;: [' D  e3 \  e4 u. a; G' k, o
1 |" V& d* f- P& i- J3 ^0 v
001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f0000
* A2 N( o5 b% E3 W* v8 I& D001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f6 F9 w5 Y/ u1 _' j7 m, h
001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x80090000
) P8 a4 w! B. U0 _% s001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c00
/ x  J& m! T: J! o+ `4 e$ `001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器. I2 f! O, n7 ]; ?, s3 j
001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器) C9 J% G1 O: j! @
001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器
( f" V7 b6 I( ^$ ?001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址, W8 D3 d9 T  s0 W7 ?3 M% H7 a
001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为13 a/ s9 N) ]3 V7 X0 u8 x
001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续% }' l. j, z' [, A$ @  ^( l
001b31f8: 00000000 nop                                ->空指令
3 M/ B. Y/ _+ F+ \7 T001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址
7 }, ~% M% k6 B+ f. v2 N- S4 [8 V$ V  F6 ]" l" U/ G" o
10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。. p% @/ G! \4 F# k2 s- G( C: {
% r+ s2 H7 v. f4 G- C' t
为什么要这样改呢?
8 K: X% }% z  v0 v9 p; A
2 F/ P3 j+ n. k) ~/ a001b31d0: 3c05000f lui r5,0x000f
% ]1 Q& R+ l, e7 T001b31d4: 34a5423f ori r5,r5,0x423f
# G. ^- \7 |; G! J# k- S% {& }0 g9 N8 r( n) G/ p/ i
这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;+ D4 M2 I& a& M- U9 x
7 a3 @/ f1 I7 ?; G( d2 U5 {
001b31d8: 3c048009 lui r4,0x8009
7 m: d# l  k/ M/ l# r  a001b31dc: 24847c00 addiu r4,r4,0x7c00
1 R' I! f" R5 e/ u3 A/ D; n) B' k
这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;7 v; G  ?: Z, C2 v  x( h$ d5 I) k* z
9 I: S& N+ r! Q8 K, q8 r7 N5 I2 \
001b31ec: ac820000 sw r2,0x0000(r4)
4 q. ?! r$ d; V. M' }8 l5 }. ]( T+ I9 l7 q
这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;0 R9 s+ |; f7 f9 E3 K

# g- {7 m. R0 O0 x& q* \001b31f0: 00a2102a slt r2,r5,r26 A, Y) Z6 I  J+ D( ]& M: x4 r. C9 r
001b31f4: 10400002 beq r2,r0,0x001b32000 u/ ?" H% N% P8 r6 Z4 `. y

' `6 n9 Q1 H( O2 W2 y. s& X这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;
) p4 b# r7 U& }  {: _2 |* q; y+ r& E: B2 U
001b31fc: ac850000 sw r5,0x0000(r4), d6 z4 _" c0 L, w. h

# T$ e+ ?+ s) Y; o" C* o这一条指令是把金钱最大数值写入到金钱存放地址去;# i6 p  y' k4 s6 V# e

+ n4 t9 y, Z6 k把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。

" i& O+ y9 p$ H& R. w1 T7 b) Q' {+ a! Y) `& p2 D9 h
11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
) ]# I% b) M5 W$ u' ^/ y
5 ?+ s9 K+ L7 d$ w5 |; f0 I12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac: p+ }1 r3 N; e2 `

9 P& m9 u3 O, N; I13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;
7 g# D# Z+ q; o1 w: w2 M2 f0 G6 e2 m" t' e5 h  w
14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件
3 i$ \9 {: y- J; u
( X/ I1 V( U  J1 z/ o0 T0 r6 q/ E. n- i8 g
( f5 u) e- W' B9 @7 i3 S8 X  y# P4 X( Q, n# i7 M, I# o3 P) l1 R
15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。9 o  O( Y# q0 J# k- k
1 J5 ]- q' J( e
; ]' _+ i: @1 [7 {7 z% C! o* {$ I
5 W; a" \" b0 i: T+ _6 t. ?
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,再刻盘用实体机玩吧。8 `7 v! o1 n! {7 W3 h  d
: H. N% {9 G8 K* j# ]% N% Y+ G
疾风之狼# ?4 O, p. P1 C' w
2025.10.11首发
. f1 D  K! f' ~2025.10.17更新
" z* |2 O+ F+ w# f, B# K1 ?8 d

本帖子中包含更多资源

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

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

使用道具 举报

签到天数: 1167 天

[LV.10]以坛为家III

发表于 7 天前 | 显示全部楼层
大佬 谢谢   没事了研究研究
回复 支持 反对

使用道具 举报

签到天数: 1641 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2105 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 08:46 , Processed in 1.080078 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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