author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 14 Jun 2016 22:40:22 +0100 | |
changeset 21 | 7d99b51b4784 |
parent 0 | e4a716697bef |
permissions | -rw-r--r-- |
0
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
Getting Started |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
=============== |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
Building and Installing udis86 |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
------------------------------ |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
udis86 is developed for unix-like environments, and like most software, |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
the basic steps towards building and installing it are as follows. |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
.. code:: |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
$ ./configure |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
$ make |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
$ make install |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
Depending on your choice of install location, you may need to have root |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
privileges to do an install. The install scripts copy the necessary header |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
and library files to appropriate locations in your system. |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
Interfacing with libudis86: A Quick Example |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
------------------------------------------- |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
The following is an example of a program that interfaces with libudis86 |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
and uses the API to generate assembly language output for 64-bit code, |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
input from STDIN. |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
.. code-block:: c |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
#include <stdio.h> |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
#include <udis86.h> |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
int main() |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
{ |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
ud_t ud_obj; |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
ud_init(&ud_obj); |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
ud_set_input_file(&ud_obj, stdin); |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
ud_set_mode(&ud_obj, 64); |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
ud_set_syntax(&ud_obj, UD_SYN_INTEL); |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
while (ud_disassemble(&ud_obj)) { |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
printf("\t%s\n", ud_insn_asm(&ud_obj)); |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
} |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
return 0; |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
} |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
To compile the program (using gcc): |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
.. code:: |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
$ gcc -ludis86 example.c -o example |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
|
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
This example should give you an idea of how this library can be used. The |
e4a716697bef
Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
following sections describe, in detail, the complete API of libudis86. |