SlideShare uma empresa Scribd logo
1 de 47
Baixar para ler offline
Function Argument
Detection And Type
Matching In Radare2
Oddcoder (@anoddcoder)
Xvilka (@akochkov)
R2Con 2016
1
GSoC
● Improving and fixing current types support
● Providing an uniform way to work with local variables
● Providing an uniform way to define argument types
● Very complex task involving a code refactoring
● http://radare.org/gsoc/2016/ideas.html#title_3
Task implications
● It required a change of the way to handle syscalls.
● Changing the ‘t*’ commands syntax and set.
● Changing the ‘af*’ commands syntax and set.
● It was required to simplify fetching types information to radeco.
Future directions
● It’s planned to add integration with signatures mechanisms.
● Supporting object-oriented programming data structures.
● Integration with demangling.
● Integration with DWARF/PDB/etc debug information.
$ whoami
● Computer and communication engineering student.
● Hobbyist system software developer, exploitation, etc..
● Active developer at Radare2 project.
● Participant in Google Summer Of Code 2016.
A word of gratitude
Problems I was trying to solve
● Auto detect formal arguments and local variables.
● Gather type information about them.
Rules of the game
No constraint solvers
No debugging.
Architecture independent
Modular and easy to extend.
Challenges
● A bit of everything is implemented.
● That was my first time to work on large code bases.
● I had to learn a lot on the fly.
Function Arguments/Locals
● Worked on x86 only.
● No 2 variables with same name in the whole binary.
● Only [ebp + stuff] could be manipulated.
● No stack based, or register based args/locals.
● It is arch independent.
● variables are local to their function.
● Adding support for stack based, or register based args/ locals.
Function Arguments/Locals
Old R2
New R2
How does Automatic detection work ?
It is all strings matching on ESIL.
How does Automatic detection work ?
1. Locate candidate var.
How does Automatic detection work ?
1. Locate candidate var.
NUMBER,SP, +
NUMBER,BP, +
NUMBER,BP, -
How does Automatic detection work ?
1. Locate candidate var.
2. Identify type of candidate var.
How does Automatic detection work ?
1. Locate candidate var.
2. Identify type of candidate var.
NUMBER,BP, + (arg)
NUMBER,BP, - (local)
NUMBER,SP, + (?)
How does Automatic detection work ?
1. Locate candidate var.
2. Identify type of candidate var.
3. Naming and registering var.
How does Automatic detection work ?
1. Locate candidate var.
2. Identify type of candidate var.
3. Naming and registering var.
local_(Number)h [_counter]
var_(Number)h [_counter]
Type Matching
● Implementing type hints for standard function.
● Depends on calling convention of that function.
● Needs emulation to avoid confusion with stack & registers tracing.
What is Calling Convention?
● It is the way functions call another another function.
● How arguments are arranged in the stack ?
● Who cleans the callee stack ?
● Where is the return value placed ?
Cdecl
● Most common calling convention in linux i386.
● Arguments are pushed right to left on the stack.
● Return value is put in eax.
● The caller is the one who cleans the stack.
Cdecl
memset (0xffff2048, ‘A’, 0x100);
Cdecl
memset (0xffff2048, ‘A’, 0x100);
push 0x100
push 0x41
push 0xffff2048
call memset
Stdcall
● Popular on i386 windows machines.
● Arguments pushed left to right on the stack.
● Return value is also put in eax.
● Callee cleans its own stack frame.
Stdcall
memset (0xffff2048, ‘A’, 0x100);
Stdcall
memset (0xffff2048, ‘A’, 0x100);
push 0xffff2048
push 0x41
push 0x100
call memset
X64 Windows ABI
● Arguments passed into RCX, RDX, R8, R9, then the remaining arguments are put on
stack right to left.
● Return value is put into rax
And much more
● And there are lots of other calling conventions.
● Calling conventions for each architecture, and for each Operating system.
● Even some programming languages and some compilers got their own calling
conventions (ABI)
Why would we care ?
We already had this.
And we turned it into that
And this is our final goal
Implementation details
1. Read next instruction.
Implementation details
1. Read next instruction.
2. Record that instruction for traceback.
Implementation details
1. Read next instruction.
2. Record that instruction for traceback.
3. Record stack and register accesses.
Implementation details
1. Read next instruction.
2. Record that instruction for traceback.
3. Record stack and register accesses.
4. Go to step 1 .
Implementation details
1. Read next instruction.
2. Record that instruction for traceback.
3. Record stack and register accesses.
4. Go to step 1 .
→ This loop is interrupted when we find a call instruction
Implementation details
Interesting stuff starts when we catch a call instruction.
Implementation details
1- Grab function’s definition from types database.
Implementation details
1- Grab function’s definition from types database.
2- Do the math to calculate the location of all arguments.
Implementation details
1- Grab function’s definition from types database.
2- Do the math to calculate the location of all arguments.
3- Search the trace log for writing to these locations.
Implementation details
Now it is up to us what to do with all that information.
SHOW TIME
Let's add types SDB(s)
See also
GitHub issue https://github.com/radare/radare2/issues/3655
RT (Radare Today) article http://radare.today/posts/GSOC-The-last-commit-213c6f/
Calling convention db docs:
https://github.com/radare/radare2/blob/master/doc/calling-conventions.md
Types db docs: https://github.com/radare/radare2/blob/master/doc/types.md

Mais conteúdo relacionado

Mais procurados

Site visit presentation 2012 12 14
Site visit presentation 2012 12 14Site visit presentation 2012 12 14
Site visit presentation 2012 12 14Mitchell Wand
 
Convention-Based Syntactic Descriptions
Convention-Based Syntactic DescriptionsConvention-Based Syntactic Descriptions
Convention-Based Syntactic DescriptionsRay Toal
 
20130329 introduction to linq
20130329 introduction to linq20130329 introduction to linq
20130329 introduction to linqLearningTech
 
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)Binary Studio
 
New c sharp4_features_part_ii
New c sharp4_features_part_iiNew c sharp4_features_part_ii
New c sharp4_features_part_iiNico Ludwig
 
Lifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CLifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CFederico Tomassetti
 
C++ to java
C++ to javaC++ to java
C++ to javaAjmal Ak
 
Keywords in python
Keywords in pythonKeywords in python
Keywords in pythonPushpakBhoge
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsEng Teong Cheah
 
Antlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaAntlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaMorteza Zakeri
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Alexey Diyan
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLRMorteza Zakeri
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testingKnoldus Inc.
 
(2) cpp imperative programming
(2) cpp imperative programming(2) cpp imperative programming
(2) cpp imperative programmingNico Ludwig
 

Mais procurados (18)

C++
C++C++
C++
 
Site visit presentation 2012 12 14
Site visit presentation 2012 12 14Site visit presentation 2012 12 14
Site visit presentation 2012 12 14
 
Convention-Based Syntactic Descriptions
Convention-Based Syntactic DescriptionsConvention-Based Syntactic Descriptions
Convention-Based Syntactic Descriptions
 
20130329 introduction to linq
20130329 introduction to linq20130329 introduction to linq
20130329 introduction to linq
 
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)
Binary Studio Academy PRO: ANTLR course by Alexander Vasiltsov (lesson 1)
 
New c sharp4_features_part_ii
New c sharp4_features_part_iiNew c sharp4_features_part_ii
New c sharp4_features_part_ii
 
Lifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CLifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-C
 
C++ to java
C++ to javaC++ to java
C++ to java
 
C# note
C# noteC# note
C# note
 
Keywords in python
Keywords in pythonKeywords in python
Keywords in python
 
Hd2
Hd2Hd2
Hd2
 
Learn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & LoopsLearn C# Programming - Decision Making & Loops
Learn C# Programming - Decision Making & Loops
 
Antlr part2 getting_started_in_java
Antlr part2 getting_started_in_javaAntlr part2 getting_started_in_java
Antlr part2 getting_started_in_java
 
Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...Using ANTLR on real example - convert "string combined" queries into paramete...
Using ANTLR on real example - convert "string combined" queries into paramete...
 
An Introduction to ANTLR
An Introduction to ANTLRAn Introduction to ANTLR
An Introduction to ANTLR
 
ANTLR4 and its testing
ANTLR4 and its testingANTLR4 and its testing
ANTLR4 and its testing
 
(2) cpp imperative programming
(2) cpp imperative programming(2) cpp imperative programming
(2) cpp imperative programming
 
Embedded C - Optimization techniques
Embedded C - Optimization techniquesEmbedded C - Optimization techniques
Embedded C - Optimization techniques
 

Destaque

Inauguracion Beijing 2008
Inauguracion Beijing 2008Inauguracion Beijing 2008
Inauguracion Beijing 2008vianblanca
 
L'esperienza della citta metropolitana di Bari
L'esperienza della citta metropolitana di BariL'esperienza della citta metropolitana di Bari
L'esperienza della citta metropolitana di Baricittametro
 
Missione Istituzionale e cambiamento organizzativo degli Enti di Area Vasta
Missione Istituzionale e cambiamento organizzativo degli Enti di Area VastaMissione Istituzionale e cambiamento organizzativo degli Enti di Area Vasta
Missione Istituzionale e cambiamento organizzativo degli Enti di Area Vastacittametro
 
Acordo ponto 21
Acordo ponto 21Acordo ponto 21
Acordo ponto 21tarapeulta
 
Eido Khater Moamen Hemaida
Eido Khater Moamen HemaidaEido Khater Moamen Hemaida
Eido Khater Moamen Hemaidaeido khater
 
Seminario 8 Síntesis de polimetacrilato de metilo
Seminario 8 Síntesis de polimetacrilato de metiloSeminario 8 Síntesis de polimetacrilato de metilo
Seminario 8 Síntesis de polimetacrilato de metilo IPN
 
JIJO RESUME Catering Manager
JIJO RESUME Catering ManagerJIJO RESUME Catering Manager
JIJO RESUME Catering ManagerJijo Thankachan
 
Альона Тудан “World of bugs: let’s find together”
Альона Тудан “World of bugs: let’s find together”Альона Тудан “World of bugs: let’s find together”
Альона Тудан “World of bugs: let’s find together”Dakiry
 
SOAL TRY OUT FISIKA SMP
SOAL TRY OUT FISIKA SMPSOAL TRY OUT FISIKA SMP
SOAL TRY OUT FISIKA SMPwuryantopss
 
Soal psikotes beserta jawabannya
Soal psikotes beserta jawabannyaSoal psikotes beserta jawabannya
Soal psikotes beserta jawabannyaMohammad Handika
 

Destaque (12)

A. Ciammola - L’esercizio per l’industria
A. Ciammola - L’esercizio per l’industriaA. Ciammola - L’esercizio per l’industria
A. Ciammola - L’esercizio per l’industria
 
Inauguracion Beijing 2008
Inauguracion Beijing 2008Inauguracion Beijing 2008
Inauguracion Beijing 2008
 
L'esperienza della citta metropolitana di Bari
L'esperienza della citta metropolitana di BariL'esperienza della citta metropolitana di Bari
L'esperienza della citta metropolitana di Bari
 
Missione Istituzionale e cambiamento organizzativo degli Enti di Area Vasta
Missione Istituzionale e cambiamento organizzativo degli Enti di Area VastaMissione Istituzionale e cambiamento organizzativo degli Enti di Area Vasta
Missione Istituzionale e cambiamento organizzativo degli Enti di Area Vasta
 
Acordo ponto 21
Acordo ponto 21Acordo ponto 21
Acordo ponto 21
 
Eido Khater Moamen Hemaida
Eido Khater Moamen HemaidaEido Khater Moamen Hemaida
Eido Khater Moamen Hemaida
 
apb desa
apb desaapb desa
apb desa
 
Seminario 8 Síntesis de polimetacrilato de metilo
Seminario 8 Síntesis de polimetacrilato de metiloSeminario 8 Síntesis de polimetacrilato de metilo
Seminario 8 Síntesis de polimetacrilato de metilo
 
JIJO RESUME Catering Manager
JIJO RESUME Catering ManagerJIJO RESUME Catering Manager
JIJO RESUME Catering Manager
 
Альона Тудан “World of bugs: let’s find together”
Альона Тудан “World of bugs: let’s find together”Альона Тудан “World of bugs: let’s find together”
Альона Тудан “World of bugs: let’s find together”
 
SOAL TRY OUT FISIKA SMP
SOAL TRY OUT FISIKA SMPSOAL TRY OUT FISIKA SMP
SOAL TRY OUT FISIKA SMP
 
Soal psikotes beserta jawabannya
Soal psikotes beserta jawabannyaSoal psikotes beserta jawabannya
Soal psikotes beserta jawabannya
 

Semelhante a args_types

Symbol Table, Error Handler & Code Generation
Symbol Table, Error Handler & Code GenerationSymbol Table, Error Handler & Code Generation
Symbol Table, Error Handler & Code GenerationAkhil Kaushik
 
Towards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportTowards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportConcordia University
 
Survey of Program Transformation Technologies
Survey of Program Transformation TechnologiesSurvey of Program Transformation Technologies
Survey of Program Transformation TechnologiesChunhua Liao
 
The 1990s Called. They Want Their Code Back.
The 1990s Called. They Want Their Code Back.The 1990s Called. They Want Their Code Back.
The 1990s Called. They Want Their Code Back.Jonathan Oliver
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler ConstructionAhmed Raza
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler ConstructionSarmad Ali
 
Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review ProcessDr. Syed Hassan Amin
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationTim Burks
 
Top 40 C Programming Interview Questions
Top 40 C Programming Interview QuestionsTop 40 C Programming Interview Questions
Top 40 C Programming Interview QuestionsSimplilearn
 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error predictionNIKHIL NAWATHE
 
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerPragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerMarina Kolpakova
 
Compiler Design Introduction
Compiler Design IntroductionCompiler Design Introduction
Compiler Design IntroductionRicha Sharma
 
Programming in C [Module One]
Programming in C [Module One]Programming in C [Module One]
Programming in C [Module One]Abhishek Sinha
 
Functional Programming - Worth the Effort
Functional Programming - Worth the EffortFunctional Programming - Worth the Effort
Functional Programming - Worth the EffortBoldRadius Solutions
 

Semelhante a args_types (20)

Cpcs302 1
Cpcs302  1Cpcs302  1
Cpcs302 1
 
GooglePropsal
GooglePropsalGooglePropsal
GooglePropsal
 
Handout#10
Handout#10Handout#10
Handout#10
 
Symbol Table, Error Handler & Code Generation
Symbol Table, Error Handler & Code GenerationSymbol Table, Error Handler & Code Generation
Symbol Table, Error Handler & Code Generation
 
Towards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent supportTowards better software quality assurance by providing intelligent support
Towards better software quality assurance by providing intelligent support
 
Survey of Program Transformation Technologies
Survey of Program Transformation TechnologiesSurvey of Program Transformation Technologies
Survey of Program Transformation Technologies
 
The 1990s Called. They Want Their Code Back.
The 1990s Called. They Want Their Code Back.The 1990s Called. They Want Their Code Back.
The 1990s Called. They Want Their Code Back.
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Compiler Construction
Compiler ConstructionCompiler Construction
Compiler Construction
 
Improving Code Quality Through Effective Review Process
Improving Code Quality Through Effective  Review ProcessImproving Code Quality Through Effective  Review Process
Improving Code Quality Through Effective Review Process
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
 
Top 40 C Programming Interview Questions
Top 40 C Programming Interview QuestionsTop 40 C Programming Interview Questions
Top 40 C Programming Interview Questions
 
Code Analysis-run time error prediction
Code Analysis-run time error predictionCode Analysis-run time error prediction
Code Analysis-run time error prediction
 
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the CompilerPragmatic Optimization in Modern Programming - Demystifying the Compiler
Pragmatic Optimization in Modern Programming - Demystifying the Compiler
 
Compiler Design Introduction
Compiler Design IntroductionCompiler Design Introduction
Compiler Design Introduction
 
Programming in C [Module One]
Programming in C [Module One]Programming in C [Module One]
Programming in C [Module One]
 
Compiler Design
Compiler Design Compiler Design
Compiler Design
 
Functional Programming - Worth the Effort
Functional Programming - Worth the EffortFunctional Programming - Worth the Effort
Functional Programming - Worth the Effort
 
Compiler Design Material
Compiler Design MaterialCompiler Design Material
Compiler Design Material
 
Golang online course
Golang online courseGolang online course
Golang online course
 

args_types

  • 1. Function Argument Detection And Type Matching In Radare2 Oddcoder (@anoddcoder) Xvilka (@akochkov) R2Con 2016 1
  • 2. GSoC ● Improving and fixing current types support ● Providing an uniform way to work with local variables ● Providing an uniform way to define argument types ● Very complex task involving a code refactoring ● http://radare.org/gsoc/2016/ideas.html#title_3
  • 3. Task implications ● It required a change of the way to handle syscalls. ● Changing the ‘t*’ commands syntax and set. ● Changing the ‘af*’ commands syntax and set. ● It was required to simplify fetching types information to radeco.
  • 4. Future directions ● It’s planned to add integration with signatures mechanisms. ● Supporting object-oriented programming data structures. ● Integration with demangling. ● Integration with DWARF/PDB/etc debug information.
  • 5. $ whoami ● Computer and communication engineering student. ● Hobbyist system software developer, exploitation, etc.. ● Active developer at Radare2 project. ● Participant in Google Summer Of Code 2016.
  • 6. A word of gratitude
  • 7. Problems I was trying to solve ● Auto detect formal arguments and local variables. ● Gather type information about them.
  • 8. Rules of the game No constraint solvers No debugging. Architecture independent Modular and easy to extend.
  • 9. Challenges ● A bit of everything is implemented. ● That was my first time to work on large code bases. ● I had to learn a lot on the fly.
  • 10. Function Arguments/Locals ● Worked on x86 only. ● No 2 variables with same name in the whole binary. ● Only [ebp + stuff] could be manipulated. ● No stack based, or register based args/locals.
  • 11. ● It is arch independent. ● variables are local to their function. ● Adding support for stack based, or register based args/ locals. Function Arguments/Locals
  • 14. How does Automatic detection work ? It is all strings matching on ESIL.
  • 15. How does Automatic detection work ? 1. Locate candidate var.
  • 16. How does Automatic detection work ? 1. Locate candidate var. NUMBER,SP, + NUMBER,BP, + NUMBER,BP, -
  • 17. How does Automatic detection work ? 1. Locate candidate var. 2. Identify type of candidate var.
  • 18. How does Automatic detection work ? 1. Locate candidate var. 2. Identify type of candidate var. NUMBER,BP, + (arg) NUMBER,BP, - (local) NUMBER,SP, + (?)
  • 19. How does Automatic detection work ? 1. Locate candidate var. 2. Identify type of candidate var. 3. Naming and registering var.
  • 20. How does Automatic detection work ? 1. Locate candidate var. 2. Identify type of candidate var. 3. Naming and registering var. local_(Number)h [_counter] var_(Number)h [_counter]
  • 21. Type Matching ● Implementing type hints for standard function. ● Depends on calling convention of that function. ● Needs emulation to avoid confusion with stack & registers tracing.
  • 22. What is Calling Convention? ● It is the way functions call another another function. ● How arguments are arranged in the stack ? ● Who cleans the callee stack ? ● Where is the return value placed ?
  • 23. Cdecl ● Most common calling convention in linux i386. ● Arguments are pushed right to left on the stack. ● Return value is put in eax. ● The caller is the one who cleans the stack.
  • 25. Cdecl memset (0xffff2048, ‘A’, 0x100); push 0x100 push 0x41 push 0xffff2048 call memset
  • 26. Stdcall ● Popular on i386 windows machines. ● Arguments pushed left to right on the stack. ● Return value is also put in eax. ● Callee cleans its own stack frame.
  • 28. Stdcall memset (0xffff2048, ‘A’, 0x100); push 0xffff2048 push 0x41 push 0x100 call memset
  • 29. X64 Windows ABI ● Arguments passed into RCX, RDX, R8, R9, then the remaining arguments are put on stack right to left. ● Return value is put into rax
  • 30. And much more ● And there are lots of other calling conventions. ● Calling conventions for each architecture, and for each Operating system. ● Even some programming languages and some compilers got their own calling conventions (ABI)
  • 31. Why would we care ?
  • 32. We already had this.
  • 33. And we turned it into that
  • 34. And this is our final goal
  • 35. Implementation details 1. Read next instruction.
  • 36. Implementation details 1. Read next instruction. 2. Record that instruction for traceback.
  • 37. Implementation details 1. Read next instruction. 2. Record that instruction for traceback. 3. Record stack and register accesses.
  • 38. Implementation details 1. Read next instruction. 2. Record that instruction for traceback. 3. Record stack and register accesses. 4. Go to step 1 .
  • 39. Implementation details 1. Read next instruction. 2. Record that instruction for traceback. 3. Record stack and register accesses. 4. Go to step 1 . → This loop is interrupted when we find a call instruction
  • 40. Implementation details Interesting stuff starts when we catch a call instruction.
  • 41. Implementation details 1- Grab function’s definition from types database.
  • 42. Implementation details 1- Grab function’s definition from types database. 2- Do the math to calculate the location of all arguments.
  • 43. Implementation details 1- Grab function’s definition from types database. 2- Do the math to calculate the location of all arguments. 3- Search the trace log for writing to these locations.
  • 44. Implementation details Now it is up to us what to do with all that information.
  • 46. Let's add types SDB(s)
  • 47. See also GitHub issue https://github.com/radare/radare2/issues/3655 RT (Radare Today) article http://radare.today/posts/GSOC-The-last-commit-213c6f/ Calling convention db docs: https://github.com/radare/radare2/blob/master/doc/calling-conventions.md Types db docs: https://github.com/radare/radare2/blob/master/doc/types.md