EMU618社区

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

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

[复制链接]

签到天数: 2146 天

[LV.Master]伴坛终老

发表于 2025-10-11 02:22:42 | 显示全部楼层 |阅读模式
1.准备工具& k# _7 g% W1 \& C
带调试功能的模拟器:pSX 1.13
9 l' m+ P, [% g' I; A: V/ M7 k- @一个16进制编辑器:很多,随意选一个自己喜欢的,本例教程使用的是winhex。
0 Q: Y% v+ q: e- E( cMIPS汇编指令集资料:MIPS汇编指令基础.pdf(MIPS Assembly Language)6 V) {7 c  F9 i7 d5 k  C$ r$ B
游戏ISO:月下夜想曲Rev 2版, _) }5 e2 s0 S# o' t* }2 W
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin1 f' y1 `( i) L
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 2).bin+ H) S  [( b* |5 K0 e+ q7 J
Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2).cue
, Z8 ]. u- H2 `# m. Y
; W; |; Q' K6 T5 J+ x/ @2.首先找到要修改的游戏金手指地址,我在emucheat提供的游戏金手指找到了。0 m9 a& c& i4 [+ o- r
[金钱无限]; n9 {. e, G1 N* F" j
ON=80097C00#423F;80097C02#000F
+ f+ R/ a& r9 ?$ Y9 J
6 O2 Z; e. x0 L# c4 Y1 o& d金钱地址是0x80097C00
& J& u, W# Y0 R5 _$ ?
0 e/ _4 c) K7 }& ~( B+ J) S/ l3.运行pSX 1.13,“文件”->“插入CD镜像”,加载“Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin”镜像;. Z. z2 a, Y) g+ p0 g1 E( u
* u* x% x- L8 i
(要设置pSX 1.13手柄键位请选择“文件”->“设置”->“控制器”)3 ~) _, W6 C% v, `$ m* t
2 f: `, k) h0 W, f" X7 m, v3 {5 B4 N
4.游戏进行到藏书库的老爷爷处,进入“宝石壳却”界面,前提有一个宝石戒指;
' _1 f2 J% j8 @; J. O" l/ T7 @% B4 r; w4 x% x0 J+ z! B

4 C( y) H. a2 J/ [. _. n2 {! h+ {( U7 q' J
5.选择“调试”->“监视器”->“r3000”,在“中断点”窗口点击右键,选择“添加 Ins”添加断点;0 |7 G- C$ J2 z; a7 A
, U2 E9 R& a* Y9 U

! f8 i# a) C& _! L1 c' h! _7 e: T- d8 y
6.在“中断点”窗口的选择“内存”,去掉“读”打勾,只保留“写”打勾,“地址”填0x80097C00,“大小”是字节长度,填0x4,“条件”和“数量”留空暂时不管,再点击“确定”,断点添加完成;
7 F) }6 P# Q  p$ j: B0 B$ ?- @$ u; P$ j1 k" I. H2 l$ G( j7 e, h6 R1 a

' _$ I+ ?% S  c( G, D4 S
3 ^) _3 @% P) X0 j7.回到游戏中,把宝石戒指卖掉后,程序发生中断,程序停在1bb31f0:slt r2,r5,r2一行;
" ^+ ~- K# ^9 `! I' R$ o9 [, @
4 P: Z1 r! O/ d6 D! n) [4 T/ m2 w- G3 d8 R
, T& G" g/ h0 M1 |
8.点击“文件”->“反汇编”,“地址”填0x1b31d0,“大小”填0x100,点击“确定”,另存为一个扩展名为txt的文件;
& \- n" B6 B; S/ |. p* t5 v3 o0 \7 U7 M, N

0 z/ l6 F- o1 X2 u* P
, x, V2 h) \7 I& b9.用记事本之类文本编辑工具打开刚刚另存为的txt文件,接下来开始分析汇编代码;
* `: ~% R) n+ j6 c. g0 V( e( ^
  O7 P2 E4 j* v001b31d0: 3c05000f lui r5,0x000f                        ->把0x000f载入r5寄存器高位,r5=0x000f0000
  E% A9 c- G0 B$ O/ w001b31d4: 34a5423f ori r5,r5,0x423f                ->把r5寄存器的值和立即数0x423f进行逻辑“或”运算,结果存入r5寄存器,r5=0x000f423f
, ^$ M; A+ k- x' a001b31d8: 3c048009 lui r4,0x8009                        ->把0x8009载入r4寄存器高位,r4=0x800900003 ^( z0 G0 q* w8 ?. K- @
001b31dc: 24847c00 addiu r4,r4,0x7c00                ->把r4寄存器数据和立即数0x7c00相加,结果存入r4寄存器,r4=0x80097c00" S/ V& I0 J2 _) F
001b31e0: 8c830000 lw r3,0x0000(r4)                ->以0x0000为偏移量,把r4寄存器数据和0x0000相加得到地址的数据载入到r3寄存器
# r8 z0 z5 @7 U, d0 C001b31e4: 00001012 mflo r2                                ->把lo寄存器的值传递到r2寄存器3 I- L, I5 M/ ]9 h' }
001b31e8: 00431021 addu r2,r2,r3                        ->把r2寄存器的值和r3寄存器的值相加,结果存入r2寄存器
$ Y. P: q) [! S- x/ k001b31ec: ac820000 sw r2,0x0000(r4)                ->以0x0000为偏移量,把r2寄存器的值写入到r4寄存器数据和0x0000相加得到地址" n, f: q1 x: X# w5 F% L+ x  @
001b31f0: 00a2102a slt r2,r5,r2                        ->把r5寄存器的值和r2寄存器的值比较,当r5寄存器的值小于r2寄存器的值时,r2寄存器的值设置为0,否则设置为18 S% y9 k" L+ S6 m2 X& I$ `
001b31f4: 10400002 beq r2,r0,0x001b3200        ->当r2寄存器的值和r0寄存器的值相等时跳转到0x001b3200地址继续执行,否则继续
3 a% A- v. O( y5 z" T% F6 u001b31f8: 00000000 nop                                ->空指令
& {. O2 W, x( [4 K1 y' P& I001b31fc: ac850000 sw r5,0x0000(r4)                ->以0x0000为偏移量,把r5寄存器的值写入到r4寄存器数据和0x0000相加得到地址
( _: d0 d  c* \
& n; X) _& ^! A  r) M4 o10.根据分析,接下来只要把001b31f4地址的10400002 beq r2,r0,0x001b3200指令nop掉,就可以得到金钱最大,nop指令机械码是00000000。
: ]1 h( \- @3 O5 @6 p  n
0 `# c1 Z' l; i为什么要这样改呢?
8 ]. T& u# U9 T- V4 h6 O5 I( f1 c
001b31d0: 3c05000f lui r5,0x000f
- Z( B1 Q& S" z3 T7 W9 C1 {' Q001b31d4: 34a5423f ori r5,r5,0x423f
$ a, N! _! J$ ~0 h
& w" d# w( B) w. T. y这两条是给r5寄存器赋值,0x000f423f换算成十进制是999999,刚好游戏金钱最大值是999999;/ w7 r3 B$ D) A9 X2 n3 [: y, o& N

( O0 i8 M5 U. S' d3 U( Y/ O001b31d8: 3c048009 lui r4,0x8009
8 Y# M7 L  J, V" |8 ~8 X: u- _001b31dc: 24847c00 addiu r4,r4,0x7c007 J  H2 G- I7 K& y/ G8 k8 s& Y6 }
- F7 {: x3 g! c" {& N8 Z
这两条是给r4寄存器赋值,0x80097c00刚好是金钱存放地址;2 X% h* Q8 c1 u, `

% _: R; N  C5 h, l" `& z! ^001b31ec: ac820000 sw r2,0x0000(r4)# R7 c* l8 Z: O  j, b. ]
0 d( O, x8 }1 j5 p- A& t! t
这一条是把得到金钱数值写入金钱存放地址去,r4寄存器的数值就是金钱地址0x80097c00;
* S7 ~% z7 S8 h* G. Z7 L
8 B) T  ?$ {2 E/ B$ l6 E* N001b31f0: 00a2102a slt r2,r5,r2
( a7 X9 E9 ?3 T! t001b31f4: 10400002 beq r2,r0,0x001b32007 D! s4 }) y$ e# p
: N9 B9 s$ v( M. k& w- B9 p
这两条指令是现在得到的金钱数值和最大金钱数值999999比较,当小于999999时就跳转到0x001b3200地址继续执行,否则继续执行;2 m/ U9 @  h* T! ~. [5 O7 W

% v3 h2 g' M5 D001b31fc: ac850000 sw r5,0x0000(r4)# L% a0 `6 H5 d
3 f; D  O/ ^* [+ d& ]5 t, q! X
这一条指令是把金钱最大数值写入到金钱存放地址去;: s( E- h1 F+ ~' G" m3 {

' o: Z  t4 U* y# i6 k把001b31f4: 10400002 beq r2,r0,0x001b3200这一条指令nop掉的话,无论卖掉宝石戒指多少钱,都会得到金钱最大值999999。

( f' @6 {9 [4 f* G$ I) o! Y, q
6 l0 }4 X1 J) z11.用16进制编辑器打开Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1).bin
, N5 W# Q" k2 ]# }' Q$ N* E: u+ m; ]) f) P
12.查找16进制数值,先查找0f00053c3f42a5340980043c,再查找0200401000000000000085ac/ ~- v" T/ e3 t

1 U6 k" u4 J, d; T: I2 F13.在0f00053c3f42a5340980043c下面的0200401000000000000085ac就是我要找的汇编指令机械码;
% P; s* o  G, O- `! j6 R
' h" i, u8 w- t4 x0 F" l* Q14.把02004010修改为00000000,另存为Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin文件
2 C' K4 ]3 O5 l& k: M* h# ~$ Z  W7 Y( O6 x% X. t

& W+ f) c4 }7 L+ R) _0 `
& Z* F8 \4 Y" A# n; G0 \+ t( N) _3 P15.用模拟器加载Akumajou Dracula X - Gekka no Yasoukyoku (Japan) (Rev 2) (Track 1)HACK.bin,测试结果:卖宝石戒指得到金钱999999,修改成功。
" Y5 `( V3 l; S1 H# ~# J# W/ ~" z' R' v, |9 g8 k, D, h* L

. L1 x2 j9 K& u  m9 u8 j$ x6 E$ i" ]( {1 H" u
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,再刻盘用实体机玩吧。
) n- D$ X$ ]1 w3 n2 v
) L8 r0 e# G" N* X" ~
疾风之狼
# z$ \8 b) t' g9 [7 a& {& ~2 E6 M  R2025.10.11首发+ X% d' g, [! f. O7 n" R
2025.10.17更新

6 w' ]2 D2 t9 X; ]# x" B1 E; m

本帖子中包含更多资源

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

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

使用道具 举报

签到天数: 1208 天

[LV.10]以坛为家III

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

使用道具 举报

签到天数: 1681 天

[LV.Master]伴坛终老

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

使用道具 举报

签到天数: 2146 天

[LV.Master]伴坛终老

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

使用道具 举报

该用户从未签到

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 01:44 , Processed in 1.079102 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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