-
Notifications
You must be signed in to change notification settings - Fork 1
/
常用地址(ROP).txt
53 lines (48 loc) · 2.93 KB
/
常用地址(ROP).txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#说明:
地址:代表该部分程序在rom中(_disas.txt)的地址
字符:在计算器中需要打出的字符
注意: (E) : 这个字符属于·工程符号·
(x) : 这个字符是任意的单字节字符
(S) : 这个字符在科学常数中
e : 自然常数e
+-*/: 加减乘除符号
(@) : 这个字符为特殊字符,必须通过@=..方法刷
(R) : 这个字符表示计算器中的变量符号
i : 虚数i符号(ENG键)
C/P : 排列组合符号(SHIFT,÷/SHIFT,*)
# 首先,对于寄存器操作的地址优化:
* 这里列举的所有地址都是无需@=刷出的字符
地址 字符 操作
1:30E2 K(E)0e(x) pop QR0
1:21A8 *ee(x) pop er0
* 从这里开始,这些地址含有特殊字符,需要用@=刷出
1:6134 4(@:61)e(x) pop xr0
2:21C4 (@:C4)e2(x) 等待按键SHIFT按下
! 以上地址可以满足大部分的寄存器操作
!如果你要让er2为某个数值,请尽量使用pop QR0
! 因为单独pop er2的地址包含特殊符号,需要@=刷出
! 而程序代码中尽量减少特殊字符的使用(因为能刷出的有限!)
#以下地址是一些常用功能的地址
包含特殊字符? 地址 字符 操作
(*) 2:21BE (@:BE)e2(x) 填充条纹屏幕,等待按键SHIFT
(*) 2:21C0 (@:C0)e2(x) 填充条纹屏幕,样式为r1的值,等待按键SHIFT
(*) 2:21C4 (@:c4)e2(x) 等待SHIFT键按下
( ) 2:2042 A(R)i2(x) 显示调试诊断界面
(*) 0:7EAE C(@:7E)0(x) 单独填充屏幕,样式为r1
#以下整理了gadgets和labels中的常用地址
!由user202729发现 !
包含特殊字符? 地址 字符 操作
( ) 2:21AE C(SHIFT+÷)e2(x) 将er2寄存器中存放的地址打印在屏幕的第r0行,然后会返回
!例:E2 30 21 20 // 30 00 80 D1 00 00 00 00
! pop qr0 --> r0:30 r1:00 er2:D180(输入缓冲区起始地址) XR4:00
! 效果: 将D180地址处的内容,以二级字符表解析,打印到第四行(0~3,3表示第四行)
( ) 2:20FE (SHIFT,8,下,2,6)2(x) 将er2打印在第3行,第四行处显示 PRESS AC,按下任意键白屏死机
(?) 2:205C (SHIFT,7,3,x)i2(x) 调用2:21AE显示字符,然后(似乎)冻结,不会返回(待确认)
! 注意,此函数‘字符’部分实际输入了7个字节,所以使用时
! 必须连接在另一个地址结尾!!!
!如 C e 2 (SHIFT,7,3,X) i 2 0
! AE 21 32 FE 5C 20 32 30
#常用地址
! 使用时请转换为小端字节序:
!例:80D1 --> D1 80
80D1: 输入缓冲区开始位置