Deploying a UDX written in C++
Upload, compile, link, and promote the UDX files, and register the UDX or UDXs that use those files.
To deploy a UDX that is written in C++, issue the IDA
DEPLOYUDX command to carry out the following steps:
- Upload, from your client system to the Dynamite environment, the files needed to create the
UDX. The files are uploaded to the specified project. If the project does not already exist, it is
created. For example, you might upload the following files to a new project with the name
proj1:
The files are placed into the following directory structure:
File Description x1.cpp x2.cpp
C++ source files. x1.h
A header file required by x1.cpp. d7.a
A static library file required by the UDX. common.so
A shared library file required by the UDX. ab.xml r52.dat
Other files required by the UDX. <home> projects proj1: x1.cpp x2.cpp x1.h d7.a common.so ab.xml r52.dat
- Compile the source files (for C++ , these are .cpp and .h files) to generate object files (for
C++ , these are .o files).
The generated object files are put into a target
directory (the default is
bin
), for example:<home> projects proj1 bin: x1.o x2.o
- Link the object files and any required static library files (for C++ , these are .a files) to
produce a single library file (for C++ , this is a .so file). The generated shared object file is
put into the project's
bin
subdirectory. For example, link the filesx1.o
,x2.o
, andd7.a
to create a single shared object file:<home> projects proj1 bin: proj1.so
- Promote the library file and any other required files to the project's release subdirectory, for
example:
<home> projects proj1 bin release: proj1.so common.so ab.xml r52.dat
- Register the UDX. The registration step:
- Assigns a name to the UDX. (This is where the UDX begins to exist for the first time)
- Specifies the name of the project to which the UDX belongs. This determines where in the file system the corresponding library file can be found.
- Specifies the entry point of the UDX in its library file. (Several UDXs can share the same library file.)