rizin/test/db/cmd/project
wargio fbad0b4859 Remove agd and add rz_analysis_similarity/match + refactoring
- Introduce the following new methods:
  * `rz_analysis_similarity_basic_block()`
  * `rz_analysis_similarity_function()`
  * `rz_analysis_similarity_basic_block_2()`
  * `rz_analysis_similarity_function_2()`
  * `rz_analysis_match_basic_blocks()`
  * `rz_analysis_match_functions()`
  * `rz_analysis_match_basic_blocks_2()`
  * `rz_analysis_match_functions_2()`
- Remove `RzAnalysisDiff` and its usages
- Remove `librz/analysis/diff.c` entirely to and adds `librz/analysis/similarity.c`
- Remove a lot of unused structures and simplified the code by a lot
- Fix typo in levenshtein
- Remove `librz/core/gdiff.c` and `gdiff` functions since they were unused or only used in rz-diff
- Remove `difftype` (or "color") from `RzANode` which lead to dead code
- Decrease serialized data in projects.
- Add `RzAnalysisVarKind` and `RzAnalysisVarType` and replaces all the hardcoded values
- Remove command `agd`
- Remove all `rz_core_gdiff` usages from `rz_core.h`
- Refactor `rz_analysis_var_list` and `rz_analysis_var_count` due unused argument (`RzAnalysis` was not used)
- Add new method `rz_analysis_var_count_total` to simplify some usages
- Remove `rz_core_graph_diff`
- Add `typedef RzAnalysisFcnType` on `enum``used for function types
- Remove unused `RZ_ANALYSIS_FCN_VARKIND_LOCAL`
- Remove from `RzAnalysisFunction` the following variables:
  * `fingerprint`
  * `fingerprint_size`
  * `diff`
  * `diff_ops`
  * `diff_thbb`
  * `diff_thfcn`
- Remove from `RzAnalysisBlock` the following variables:
  * `fingerprint`
  * `diff`
- Remove `RZ_ANALYSIS_THRESHOLDBB` and `RZ_ANALYSIS_THRESHOLDFCN`
- Remove the following callbacks from `RzAnalysisPlugin`
  * `RzAnalysisDiffBBCallback`
  * `RzAnalysisDiffFcnCallback`
  * `RzAnalysisDiffEvalCallback`
- Fix fancy table columns/rows when a color string is in a cell
- Bumped project version to 9
2022-10-04 20:02:35 +02:00

404 lines
11 KiB
Text

NAME=load with file without moving anything
FILE=bins/elf/crackme0x05
CMDS=<<EOF
e asm.bytes=true
f i_do_hope_that_no_entity_knocks_over_my_beverage @ 0x080483d8
Ps .tmp_load_no_move.rzdb
o--
Po .tmp_load_no_move.rzdb
rm .tmp_load_no_move.rzdb
pdq 3 @ 0x080483d8
EOF
EXPECT=<<EOF
0x080483d8 i_do_hope_that_no_entity_knocks_over_my_beverage:
0x080483d8 50 push eax
0x080483d9 54 push esp
0x080483da 52 push edx
EOF
RUN
NAME=load with file using saved absolute file path after project file was moved
FILE=bins/elf/crackme0x05
CMDS=<<EOF
e asm.bytes=true
f i_do_hope_that_no_entity_knocks_over_my_beverage @ 0x080483d8
Ps .tmp_load_move_project.rzdb
o--
mkdir -p .tmp_load_move_project
mv .tmp_load_move_project.rzdb .tmp_load_move_project/
cd .tmp_load_move_project
Po .tmp_load_move_project.rzdb
rm .tmp_load_move_project.rzdb
cd ..
rm .tmp_load_move_project
pdq 3 @ 0x080483d8
EOF
EXPECT=<<EOF
0x080483d8 i_do_hope_that_no_entity_knocks_over_my_beverage:
0x080483d8 50 push eax
0x080483d9 54 push esp
0x080483da 52 push edx
EOF
RUN
NAME=load with file using saved relative file path after project file and binary were moved together
FILE=--
CMDS=<<EOF
e asm.bytes=true
cp bins/elf/crackme0x05 .tmp_load_move_both.bin
o .tmp_load_move_both.bin
f i_do_hope_that_no_entity_knocks_over_my_beverage @ 0x080483d8
Ps .tmp_load_move_both.rzdb
o--
mkdir -p .tmp_load_move_both
mv .tmp_load_move_both.rzdb .tmp_load_move_both/
mv .tmp_load_move_both.bin .tmp_load_move_both/
Po .tmp_load_move_both/.tmp_load_move_both.rzdb
pdq 3 @ 0x080483d8
o--
rm .tmp_load_move_both/.tmp_load_move_both.rzdb
rm .tmp_load_move_both/.tmp_load_move_both.bin
rm .tmp_load_move_both
EOF
EXPECT=<<EOF
0x080483d8 i_do_hope_that_no_entity_knocks_over_my_beverage:
0x080483d8 50 push eax
0x080483d9 54 push esp
0x080483da 52 push edx
EOF
RUN
NAME=load with file using saved relative file path after project file and binary were moved together with different relation
FILE=--
CMDS=<<EOF
e asm.bytes=true
mkdir -p .tmp_load_move_both2/.tmp_load_move_both2
cp bins/elf/crackme0x05 .tmp_load_move_both2/somebin
o .tmp_load_move_both2/somebin
f i_do_hope_that_no_entity_knocks_over_my_beverage @ 0x080483d8
Ps .tmp_load_move_both2.rzdb
o--
mv .tmp_load_move_both2.rzdb .tmp_load_move_both2/
mv .tmp_load_move_both2/somebin .tmp_load_move_both2/.tmp_load_move_both2/somebin
Po .tmp_load_move_both2/.tmp_load_move_both2.rzdb
pdq 3 @ 0x080483d8
o--
rm .tmp_load_move_both2/.tmp_load_move_both2.rzdb
rm .tmp_load_move_both2/.tmp_load_move_both2/somebin
rm .tmp_load_move_both2/.tmp_load_move_both2
rm .tmp_load_move_both2
EOF
EXPECT=<<EOF
0x080483d8 i_do_hope_that_no_entity_knocks_over_my_beverage:
0x080483d8 50 push eax
0x080483d9 54 push esp
0x080483da 52 push edx
EOF
RUN
NAME=load with file using saved raw file path after everything has been messed up, but binary is in cwd
FILE=--
CMDS=<<EOF
e asm.bytes=true
mkdir -p .tmp_load_move_bin
cp bins/elf/crackme0x05 .tmp_load_move_bin.bin
o .tmp_load_move_bin.bin
f i_do_hope_that_no_entity_knocks_over_my_beverage @ 0x080483d8
Ps .tmp_load_move_bin.rzdb
o--
mv .tmp_load_move_bin.bin .tmp_load_move_bin/.tmp_load_move_bin.bin
cd .tmp_load_move_bin
Po ../.tmp_load_move_bin.rzdb
pdq 3 @ 0x080483d8
o--
cd ..
rm .tmp_load_move_bin/.tmp_load_move_bin.bin
rm .tmp_load_move_bin
rm .tmp_load_move_bin.rzdb
EOF
EXPECT=<<EOF
0x080483d8 i_do_hope_that_no_entity_knocks_over_my_beverage:
0x080483d8 50 push eax
0x080483d9 54 push esp
0x080483da 52 push edx
EOF
RUN
NAME=load without file
FILE=bins/elf/crackme0x05
CMDS=<<EOF
e asm.bytes=true
f a_nice_refreshing_un-moisten @ 0x080483d8
Ps .tmp_load_without_file.rzdb
ol
?e --
o--
ol
pdq 3 @ 0x080483d8
?e --
Poo .tmp_load_without_file.rzdb
rm .tmp_load_without_file.rzdb
ol
?e --
pdq 3 @ 0x080483d8
EOF
EXPECT=<<EOF
3 * r-x 0x00001de8 bins/elf/crackme0x05
4 - r-x 0x0000001c vfile://0/reloc-targets
5 - rw- 0x00000004 null://4
--
0x080483d8 ff invalid
0x080483d9 ff invalid
0x080483da ff invalid
--
--
0x080483d8 a_nice_refreshing_un_moisten:
0x080483d8 ff invalid
0x080483d9 ff invalid
0x080483da ff invalid
EOF
RUN
NAME=load on top of file
FILE=bins/elf/crackme0x05
CMDS=<<EOF
e asm.bytes=true
f a_nice_refreshing_un-moisten @ 0x080483d8
Ps .tmp_load_on_top_of_file.rzdb
ol
?e --
o--
ol
pdq 3 @ 0x080483d8
?e --
o bins/elf/crackme0x00b
Poo .tmp_load_on_top_of_file.rzdb
rm .tmp_load_on_top_of_file.rzdb
?e --
pdq 3 @ 0x080483d8
EOF
EXPECT=<<EOF
3 * r-x 0x00001de8 bins/elf/crackme0x05
4 - r-x 0x0000001c vfile://0/reloc-targets
5 - rw- 0x00000004 null://4
--
0x080483d8 ff invalid
0x080483d9 ff invalid
0x080483da ff invalid
--
--
0x080483d8 a_nice_refreshing_un_moisten:
0x080483d8 0000 add byte [eax], al
0x080483da 00e9 add cl, ch
0x080483dc 90 nop
EOF
RUN
NAME=flags
FILE=bins/elf/crackme0x05
CMDS=<<EOF
fr sym.main sym.renamedmain
fl~?
fl~main
Ps .tmp_flags.rzdb
?e --
o--
fl
?e --
Poo .tmp_flags.rzdb
rm .tmp_flags.rzdb
fl~?
fl~main
EOF
EXPECT=<<EOF
111
0x08048364 16 sym.imp.__libc_start_main
0x08048540 256 main
0x08048540 92 sym.renamedmain
0x0804a000 4 reloc.__libc_start_main
--
--
111
0x08048364 16 sym.imp.__libc_start_main
0x08048540 92 sym.renamedmain
0x08048540 256 main
0x0804a000 4 reloc.__libc_start_main
EOF
RUN
NAME=config
FILE==
CMDS=<<EOF
e asm.describe=1
e asm.describe
e asm.indentspace=8
e asm.indentspace
e analysis.fcnprefix=myfunctions
e analysis.fcnprefix
Ps .tmp_config.rzdb
?e --
e asm.describe=0
e asm.describe
e asm.indentspace=0
e asm.indentspace
e analysis.fcnprefix=fcn
e analysis.fcnprefix
?e --
Poo .tmp_config.rzdb
rm .tmp_config.rzdb
e asm.describe
e asm.indentspace
e analysis.fcnprefix
EOF
EXPECT=<<EOF
true
8
myfunctions
--
false
0
fcn
--
true
8
myfunctions
EOF
RUN
NAME=seek
FILE==
CMDS=<<EOF
s 0x1337
s
Ps .tmp_seek.rzdb
o--
s 0
Poo .tmp_seek.rzdb
rm .tmp_seek.rzdb
s
EOF
EXPECT=<<EOF
0x1337
0x1337
EOF
RUN
NAME=analysis
FILE==
CMDS=<<EOF
af+ windowpane @ 0x100
afb+ windowpane 0x100 0x30
afl
Ps .tmp_analysis.rzdb
?e --
o--
afl
?e --
Poo .tmp_analysis.rzdb
rm .tmp_analysis.rzdb
afl
EOF
EXPECT=<<EOF
0x00000100 1 48 windowpane
--
--
0x00000100 1 48 windowpane
EOF
RUN
NAME=remember saved project file during session
FILE=bins/elf/crackme0x05
CMDS=<<EOF
e asm.bytes=true
Ps .tmp_remember.rzdb
e prj.file
f cashews @ 0x080483d8
Ps
o--
e prj.file=
e prj.file
Po .tmp_remember.rzdb
e prj.file
rm .tmp_remember.rzdb
pdq 1 @ 0x080483d8
EOF
EXPECT=<<EOF
.tmp_remember.rzdb
.tmp_remember.rzdb
0x080483d8 cashews:
0x080483d8 50 push eax
EOF
RUN
NAME=raw file permissions after reload
FILE=bins/other/0x3
CMDS=<<EOF
oml
Ps .tmp_perms.rzdb
o--
?e --
oml
?e --
Po .tmp_perms.rzdb
oml
rm .tmp_perms.rzdb
EOF
EXPECT=<<EOF
1 fd: 3 +0x00000000 0x00000000 * 0x00000002 r-x
--
--
1 fd: 3 +0x00000000 0x00000000 * 0x00000002 r-x
EOF
RUN
NAME=migrate info
FILE=--
CMDS=<<EOF
Po prj/v1-noreturn.rzdb
EOF
EXPECT=<<EOF
Detailed project load info:
project migrated from version 1 to 2.
project migrated from version 2 to 3.
project migrated from version 3 to 4.
project migrated from version 4 to 5.
project migrated from version 5 to 6.
project migrated from version 6 to 7.
project migrated from version 7 to 8.
project migrated from version 8 to 9.
EOF
RUN
NAME=longkeys (> 256)
FILE=bins/elf/crackme0x00b
CMDS=<<EOF
s 0x08048464
af Loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongname
ac Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
acm Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss Meeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeethod 0x100
Ps .tmp_longkeys.rzdb
?e --
o--
ol
?e --
Po .tmp_longkeys.rzdb
rm .tmp_longkeys.rzdb
?e --
afl
acll
EOF
EXPECT=<<EOF
--
--
--
0x08048464 1 1 Loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongname
[Claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]
nth name addr vt_offset type
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 Meeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeethod 0x100 -1 DEFAULT
EOF
EXPECT_ERR=<<EOF
EOF
RUN