EMU618社区

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

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

[复制链接]

签到天数: 2125 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具
8 h- G3 h" @; _1 t带调试功能的模拟器:pSX 1.13
$ ?! D2 k$ Z& Y* c: F8 ?0 C0 {+ ~一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。
! n3 D6 B& m2 A7 S3 t( s' uMIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)( G& {$ C$ v/ K, R) \2 E
游戏ISO:月下夜想曲Rev 2版
( N: V. `0 C2 n# D! EAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
" L. r6 [" B+ t# S, a, d( D$ YAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin
; I7 |" T, O$ S( |% A5 L3 \3 y% TAkumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue5 u/ T- y( D7 @' s

9 K  P0 G9 Z5 c  r( F2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。
2 _9 L% D+ l! ^( o4 h  }" N[金钱无限]
( y; @+ U& X% J# F% j6 d, HON=80097C00#423F;80097C02#000F# ?9 U$ A7 ~4 \1 R, u0 p/ a2 A
, B. u' ?& ?9 G( m, x, B7 `
金钱地址是0x80097C008 p7 p  Y3 U6 j0 ~

- N0 \; e7 z1 b9 F3 v* X1 S3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;( O4 B  G$ q7 C7 x  A
; u6 S* C* o' \; h" j
(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)8 S3 e& b+ n1 p5 K& i3 k6 F" k
6 ~2 y' C* F* ?, m) Q
4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;
, X+ n/ f( B& R  s* w. p8 I( ~2 l# p2 P, K
" s) v, D+ s2 |) k# n/ L' e8 B; x4 S; A7 ?
7 v0 o: T! r! H3 {) r+ a, \- o
5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;( p/ N7 i/ r$ n' N* {* f
5 r* d' B1 ~" P: Z1 D. U
5 @+ I, h( ]5 I& |2 B

9 s: `  a( p# ]1 ^+ Q) ^$ [* N6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;
4 ?) P+ h4 V* w0 n- @5 C5 [: X0 Q3 `( V) U

6 m- {# e5 J* P) w) F( x( X) q) I$ L' \: ]0 P: S0 }- l' t
7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;
% X1 S& [. a6 S8 L
' W/ O- q" x4 X* C' X8 n5 h4 h9 ?. }) z6 c
0 m, W7 T- p+ v  H5 r- v
8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;
5 }' W: }8 g/ S2 R4 n5 q, y8 e; f& I+ J
6 a  ~& v$ N1 r
! h; {1 R5 Q3 t( G/ [: H, A" {
9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;
  U) _' x) A+ ?. Y* b* V# U4 A' Y  C& A; u7 q
001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f0000' E. U. h) x% v
001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f2 ?. k% Q. M! D# z- [' N. T
001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x800900002 A5 `0 I+ c7 U( V
001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c00& m" q/ n) ]- Q
001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器# h  ]- a! S* @$ f: h
001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器
+ s7 i! d2 p  P( [& u  b001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器9 x& a# M2 V1 y
001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址
  u6 N* h% B: l  T+ i0 O4 H1 W001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为1; I4 D2 X0 \9 ~% S! n+ t
001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续
3 W2 o. @* K' }5 A$ z001b31f8: 00000000 nop                                ->空指令7 |2 z# ?/ Y5 U$ |; ~/ H) t
001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址& s: X5 M$ }/ P# i, b" S
: U% t: `& W, f. r& A8 j: a
10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。) _+ p6 b* D8 s# V- D( j+ Z

- m' @* p  E7 j为什么要这样改呢?
& \  v( |2 Y: n; d/ p3 o- h# L; m
8 A8 R  i; B& Q7 t001b31d0: 3c05000f lui r5,0x000f
9 i) Y8 \" k3 ?/ z001b31d4: 34a5423f ori r5,r5,0x423f
9 N% S& {  C4 }, `4 ~+ l% P0 i' |$ s/ C9 R9 X2 I% [8 l
这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;+ b( P8 L. T& u/ }4 k3 a# k

' p8 S$ z# C( ~6 U) k7 k001b31d8: 3c048009 lui r4,0x8009
( w6 o8 C. Y" K- V* W1 e001b31dc: 24847c00 addiu r4,r4,0x7c00+ F) w* x+ r1 }

- h. f9 `5 B$ K  M这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;
% ~. B% x; Z; {9 D0 v& G' g$ Y: n* N& V& O5 c+ y/ G1 {
001b31ec: ac820000 sw r2,0x0000(r4). f9 k; O1 W* _& r! M

$ K+ O4 f3 X) J4 @/ l这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;$ O" G/ G5 T- X8 r$ ?2 C9 ^
; j$ B' `+ ~# Z% o) K/ `( V4 Q
001b31f0: 00a2102a slt r2,r5,r2
4 |& g& ]+ @1 f: r' V001b31f4: 10400002 beq r2,r0,0x001b3200
* y; r4 S/ i  K" _+ L6 ]4 C' K# t" K$ p  s
这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;
6 K  s1 ~; x/ `* o8 S# ?1 D$ a' l( d5 B" B: L7 Y6 m2 B
001b31fc: ac850000 sw r5,0x0000(r4)
2 w* O4 f. U0 s! i9 ?4 {$ K* a0 ]6 t1 P6 k8 R, j' @" L
这一条指令是把金钱最大数值写入到金钱存放地址去;
3 i' w1 ?' |! L  h0 K& v
( y8 J9 ]5 n: Z# |: Z# U1 D5 R* c把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。
5 T( `1 P) h4 w. c

" m) d2 m1 u, _2 G& l# W3 s11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin" _7 h. k3 v- U( Q2 Q5 O7 ^

; ]& X$ N7 r* Y+ @: K0 {7 e12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac
' D* ~7 E8 J- ~; j. r% ~2 }8 y+ V3 I9 U
13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;
+ P# W$ c; P, I2 D. N, G2 m) c* u0 x/ T
14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件
  i* ~) f& Y! ]' x
  z9 i, u% V' y
4 C/ w9 V) E& @. M. |" H1 R9 M
% V$ f/ G# T0 c4 S( A. Q15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。0 z+ R0 h" n) |* N

+ b" z, @" a; C5 h$ x  K+ X5 ]# y
8 a1 V9 L0 w# V6 Y8 A7 t" a
- r4 x$ ]  G3 l7 {7 Y  W4 Y& n16.要刻盘用实体机玩请先把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,再刻盘用实体机玩吧。
: }# Y  ?7 x' a. q. e
( W& A+ q+ A- p- v% z* i9 t4 t6 N2 _/ z
疾风之狼  f) {/ D$ U/ ^6 @. P2 V. O4 m+ l
2025.10.11首发. }" |- n/ d8 Z7 d- s3 j/ `  H
2025.10.17更新

; J* R5 y) R2 l6 X1 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 | 显示全部楼层
有时间试试   
回复 支持 反对

使用道具 举报

签到天数: 1187 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1662 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2125 天

[LV.Master]伴坛终老

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-8 03:10 , Processed in 1.049805 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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