rizin/test/db/analysis/luajit
Arya H R b09bdf2242
librz/arch: add LuaJIT 2.1 bytecode support (#5961)
* Add LuaJIT binary loader
* Add LuaJIT analysis and disassembly plugin
* New CPU format `luajit` for luac plugin
2026-05-12 23:37:10 +08:00

265 lines
No EOL
13 KiB
Text

NAME=LUAJIT: Disassembly
FILE=bins/luaJIT/bin/big_2.1.ljbc
CMDS=<<EOF
aa
afl
agf ascii
pd 10
s entry8
agf ascii
axl
pdf
EOF
EXPECT=<<EOF
0x0000001e 4 44 entry9
0x000000b1 2 16 entry8
0x000000f3 5 128 entry7
0x000001e6 1 64 entry6
0x000002aa 9 108 -> 100 entry5
0x000003b6 13 92 -> 80 entry4
0x00000441 1 12 entry3
0x00000468 4 52 entry2
0x000004e0 1 80 entry1
0x000005e5 2 124 entry0
.---------------------------------------------------.
| 0x5e5 |
| ; [02] -r-x section size 124 named fcn.0x5d7.code |
| ;-- section.fcn.0x5d7.code: |
| entry0(); |
| gget r0 0 |
| knum r1 0 |
| tsets r1 0 1 |
| gget r0 0 |
| kpri r1 2 |
| tsets r1 0 2 |
| knil r0...r3 |
| tdup r4 3 |
| fnew r5 4 |
| mov r6 r5 |
| knum r8 1 |
| call r6 2 2 |
| mov r7 r6 |
| kshort r9 45 |
| kpri r10 1 |
| call r7 3 3 |
| mov r9 r6 |
| kshort r11 50 |
| kpri r12 2 |
| call r9 3 3 |
| fnew r11 5 |
| fnew r12 6 |
| fnew r13 7 |
| fnew r14 8 |
| fnew r15 9 |
| fnew r16 10 |
| fnew r17 11 |
| mov r18 r17 |
| call r18 1 1 |
| uclo r0 32768 |
`---------------------------------------------------'
v
|
'--------.
|
.---------------------------------.
| 0x65d |
| ; CODE XREF from entry0 @ 0x659 |
| ret0 r0 1 |
`---------------------------------'
;-- section.fcn.0x5d7.code:
/ entry0();
| 0x000005e5 gget r0 0 ; [02] -r-x section size 124 named fcn.0x5d7.code
| 0x000005e9 knum r1 0
| 0x000005ed tsets r1 0 1
| 0x000005f1 gget r0 0
| 0x000005f5 kpri r1 2
| 0x000005f9 tsets r1 0 2
| 0x000005fd knil r0...r3
| 0x00000601 tdup r4 3
| 0x00000605 fnew r5 4
| 0x00000609 mov r6 r5
.-------------------------------------------------.
| 0xb1 |
| ; [58] -r-x section size 16 named fcn.0xa6.code |
| ;-- section.fcn.0xa6.code: |
| entry8(); |
| kshort r1 0 |
| fnew r2 0 |
| uclo r0 32768 |
`-------------------------------------------------'
v
|
'-------.
|
.--------------------------------.
| 0xbd |
| ; CODE XREF from entry8 @ 0xb9 |
| ret1 r2 2 |
`--------------------------------'
entry9+24 0x36 -> CODE -> 0x3e entry9+32
entry8+8 0xb9 -> CODE -> 0xbd entry8+12
entry7+64 0x133 -> CODE -> 0x13f entry7+76
entry7+72 0x13b -> CODE -> 0x143 entry7+80
entry5+88 0x302 -> CODE -> 0x312 entry5+104
entry4+8 0x3be -> CODE -> 0x3ce entry4+24
entry4+32 0x3d6 -> CODE -> 0x3e6 entry4+48
entry4+52 0x3ea -> CODE -> 0x3fa entry4+68
entry4+72 0x3fe -> CODE -> 0x40a entry4+84
entry2+24 0x480 -> CODE -> 0x488 entry2+32
entry0+116 0x659 -> CODE -> 0x65d entry0+120
;-- section.fcn.0xa6.code:
/ entry8();
| 0x000000b1 kshort r1 0 ; [58] -r-x section size 16 named fcn.0xa6.code
| 0x000000b5 fnew r2 0
| ,=< 0x000000b9 uclo r0 32768
| | ; CODE XREF from entry8 @ 0xb9
\ `-> 0x000000bd ret1 r2 2
EOF
RUN
NAME=LUAJIT: Function boundary small file
FILE=bins/luaJIT/bin/find_string_2.1.ljbc
CMDS=<<EOF
aa
pd 10
afl
axl
pdf
EOF
EXPECT=<<EOF
;-- section.fcn.0x1a.code:
/ entry0();
| 0x00000026 gget r0 0 ; [02] -r-x section size 140 named fcn.0x1a.code
| 0x0000002a tgets r0 0 1
| 0x0000002e gget r2 2
| 0x00000032 kstr r3 3
| 0x00000036 call r0 3 3
| 0x0000003a gget r2 4
| 0x0000003e kstr r4 5
| 0x00000042 gget r5 0
| 0x00000046 tgets r5 5 6
| 0x0000004a gget r7 2
0x00000026 7 140 entry0
entry0+80 0x76 -> CODE -> 0x86 entry0+96
entry0+120 0x9e -> CODE -> 0xae entry0+136
;-- section.fcn.0x1a.code:
/ entry0();
| 0x00000026 gget r0 0 ; [02] -r-x section size 140 named fcn.0x1a.code
| 0x0000002a tgets r0 0 1
| 0x0000002e gget r2 2
| 0x00000032 kstr r3 3
| 0x00000036 call r0 3 3
| 0x0000003a gget r2 4
| 0x0000003e kstr r4 5
| 0x00000042 gget r5 0
| 0x00000046 tgets r5 5 6
| 0x0000004a gget r7 2
| 0x0000004e mov r8 r0
| 0x00000052 mov r9 r1
| 0x00000056 call r5 0 4
| 0x0000005a callm r2 1 1
| 0x0000005e gget r2 0
| 0x00000062 tgets r2 2 1
| 0x00000066 gget r4 2
| 0x0000006a kstr r5 7
| 0x0000006e call r2 3 3
| ,=< 0x00000072 isf r0 r2
| ,==< 0x00000076 jmp r4 3
| |`-> 0x0000007a gget r4 4
| | 0x0000007e kstr r6 8
| | 0x00000082 call r4 1 2
| | ; CODE XREF from entry0 @ 0x76
| `--> 0x00000086 gget r4 0
| 0x0000008a tgets r4 4 1
| 0x0000008e gget r6 2
| 0x00000092 kstr r7 9
| 0x00000096 call r4 3 3
| ,=< 0x0000009a ist r0 r4
| ,==< 0x0000009e jmp r6 3
| |`-> 0x000000a2 gget r6 4
| | 0x000000a6 kstr r8 10
| | 0x000000aa call r6 1 2
| | ; CODE XREF from entry0 @ 0x9e
\ `--> 0x000000ae ret0 r0 1
EOF
RUN
NAME=LUAJIT: Register Profile
FILE=bins/luaJIT/bin/dumb_code_2.1.ljbc
CMDS=<<EOF
ar pc=0x1337
ar r0=0x42
ar pc
ar r0
ar=
EOF
EXPECT=<<EOF
pc = 0x00001337
r0 = 0x00000042
pc 0x00001337 sp 0x00000000 r0 0x00000042 r1 0x00000000
r2 0x00000000 r3 0x00000000 r4 0x00000000 r5 0x00000000
r6 0x00000000 r7 0x00000000 r8 0x00000000 r9 0x00000000
r10 0x00000000 r11 0x00000000 r12 0x00000000 r13 0x00000000
r14 0x00000000 r15 0x00000000 r16 0x00000000 r17 0x00000000
r18 0x00000000 r19 0x00000000 r20 0x00000000 r21 0x00000000
r22 0x00000000 r23 0x00000000 r24 0x00000000 r25 0x00000000
r26 0x00000000 r27 0x00000000 r28 0x00000000 r29 0x00000000
r30 0x00000000 r31 0x00000000 r32 0x00000000 r33 0x00000000
r34 0x00000000 r35 0x00000000 r36 0x00000000 r37 0x00000000
r38 0x00000000 r39 0x00000000 r40 0x00000000 r41 0x00000000
r42 0x00000000 r43 0x00000000 r44 0x00000000 r45 0x00000000
r46 0x00000000 r47 0x00000000 r48 0x00000000 r49 0x00000000
r50 0x00000000 r51 0x00000000 r52 0x00000000 r53 0x00000000
r54 0x00000000 r55 0x00000000 r56 0x00000000 r57 0x00000000
r58 0x00000000 r59 0x00000000 r60 0x00000000 r61 0x00000000
r62 0x00000000 r63 0x00000000 r64 0x00000000 r65 0x00000000
r66 0x00000000 r67 0x00000000 r68 0x00000000 r69 0x00000000
r70 0x00000000 r71 0x00000000 r72 0x00000000 r73 0x00000000
r74 0x00000000 r75 0x00000000 r76 0x00000000 r77 0x00000000
r78 0x00000000 r79 0x00000000 r80 0x00000000 r81 0x00000000
r82 0x00000000 r83 0x00000000 r84 0x00000000 r85 0x00000000
r86 0x00000000 r87 0x00000000 r88 0x00000000 r89 0x00000000
r90 0x00000000 r91 0x00000000 r92 0x00000000 r93 0x00000000
r94 0x00000000 r95 0x00000000 r96 0x00000000 r97 0x00000000
r98 0x00000000 r99 0x00000000 r100 0x00000000 r101 0x00000000
r102 0x00000000 r103 0x00000000 r104 0x00000000 r105 0x00000000
r106 0x00000000 r107 0x00000000 r108 0x00000000 r109 0x00000000
r110 0x00000000 r111 0x00000000 r112 0x00000000 r113 0x00000000
r114 0x00000000 r115 0x00000000 r116 0x00000000 r117 0x00000000
r118 0x00000000 r119 0x00000000 r120 0x00000000 r121 0x00000000
r122 0x00000000 r123 0x00000000 r124 0x00000000 r125 0x00000000
r126 0x00000000 r127 0x00000000 r128 0x00000000 r129 0x00000000
r130 0x00000000 r131 0x00000000 r132 0x00000000 r133 0x00000000
r134 0x00000000 r135 0x00000000 r136 0x00000000 r137 0x00000000
r138 0x00000000 r139 0x00000000 r140 0x00000000 r141 0x00000000
r142 0x00000000 r143 0x00000000 r144 0x00000000 r145 0x00000000
r146 0x00000000 r147 0x00000000 r148 0x00000000 r149 0x00000000
r150 0x00000000 r151 0x00000000 r152 0x00000000 r153 0x00000000
r154 0x00000000 r155 0x00000000 r156 0x00000000 r157 0x00000000
r158 0x00000000 r159 0x00000000 r160 0x00000000 r161 0x00000000
r162 0x00000000 r163 0x00000000 r164 0x00000000 r165 0x00000000
r166 0x00000000 r167 0x00000000 r168 0x00000000 r169 0x00000000
r170 0x00000000 r171 0x00000000 r172 0x00000000 r173 0x00000000
r174 0x00000000 r175 0x00000000 r176 0x00000000 r177 0x00000000
r178 0x00000000 r179 0x00000000 r180 0x00000000 r181 0x00000000
r182 0x00000000 r183 0x00000000 r184 0x00000000 r185 0x00000000
r186 0x00000000 r187 0x00000000 r188 0x00000000 r189 0x00000000
r190 0x00000000 r191 0x00000000 r192 0x00000000 r193 0x00000000
r194 0x00000000 r195 0x00000000 r196 0x00000000 r197 0x00000000
r198 0x00000000 r199 0x00000000 r200 0x00000000 r201 0x00000000
r202 0x00000000 r203 0x00000000 r204 0x00000000 r205 0x00000000
r206 0x00000000 r207 0x00000000 r208 0x00000000 r209 0x00000000
r210 0x00000000 r211 0x00000000 r212 0x00000000 r213 0x00000000
r214 0x00000000 r215 0x00000000 r216 0x00000000 r217 0x00000000
r218 0x00000000 r219 0x00000000 r220 0x00000000 r221 0x00000000
r222 0x00000000 r223 0x00000000 r224 0x00000000 r225 0x00000000
r226 0x00000000 r227 0x00000000 r228 0x00000000 r229 0x00000000
r230 0x00000000 r231 0x00000000 r232 0x00000000 r233 0x00000000
r234 0x00000000 r235 0x00000000 r236 0x00000000 r237 0x00000000
r238 0x00000000 r239 0x00000000 r240 0x00000000 r241 0x00000000
r242 0x00000000 r243 0x00000000 r244 0x00000000 r245 0x00000000
r246 0x00000000 r247 0x00000000 r248 0x00000000 r249 0x00000000
r250 0x00000000 r251 0x00000000 r252 0x00000000 r253 0x00000000
r254 0x00000000 r255 0x00000000
EOF
RUN