Update to 3.13 (#1751146)
Drop upstreamed patches Drop static library Add compel man-page
This commit is contained in:
parent
bc42b792e0
commit
2faadce5a6
373
compel.1
Normal file
373
compel.1
Normal file
@ -0,0 +1,373 @@
|
||||
'\" t
|
||||
.\" Title: compel
|
||||
.\" Author: [see the "AUTHOR" section]
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 09/12/2019
|
||||
.\" Manual: CRIU Manual
|
||||
.\" Source: criu 3.13
|
||||
.\" Language: English
|
||||
.\"
|
||||
.TH "COMPEL" "1" "09/12/2019" "criu 3\&.13" "CRIU Manual"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" http://bugs.debian.org/507673
|
||||
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.ie \n(.g .ds Aq \(aq
|
||||
.el .ds Aq '
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * (re)Define some macros
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" toupper - uppercase a string (locale-aware)
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de toupper
|
||||
.tr aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
|
||||
\\$*
|
||||
.tr aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz
|
||||
..
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" SH-xref - format a cross-reference to an SH section
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de SH-xref
|
||||
.ie n \{\
|
||||
.\}
|
||||
.toupper \\$*
|
||||
.el \{\
|
||||
\\$*
|
||||
.\}
|
||||
..
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" SH - level-one heading that works better for non-TTY output
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de1 SH
|
||||
.\" put an extra blank line of space above the head in non-TTY output
|
||||
.if t \{\
|
||||
.sp 1
|
||||
.\}
|
||||
.sp \\n[PD]u
|
||||
.nr an-level 1
|
||||
.set-an-margin
|
||||
.nr an-prevailing-indent \\n[IN]
|
||||
.fi
|
||||
.in \\n[an-margin]u
|
||||
.ti 0
|
||||
.HTML-TAG ".NH \\n[an-level]"
|
||||
.it 1 an-trap
|
||||
.nr an-no-space-flag 1
|
||||
.nr an-break-flag 1
|
||||
\." make the size of the head bigger
|
||||
.ps +3
|
||||
.ft B
|
||||
.ne (2v + 1u)
|
||||
.ie n \{\
|
||||
.\" if n (TTY output), use uppercase
|
||||
.toupper \\$*
|
||||
.\}
|
||||
.el \{\
|
||||
.nr an-break-flag 0
|
||||
.\" if not n (not TTY), use normal case (not uppercase)
|
||||
\\$1
|
||||
.in \\n[an-margin]u
|
||||
.ti 0
|
||||
.\" if not n (not TTY), put a border/line under subheading
|
||||
.sp -.6
|
||||
\l'\n(.lu'
|
||||
.\}
|
||||
..
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" SS - level-two heading that works better for non-TTY output
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de1 SS
|
||||
.sp \\n[PD]u
|
||||
.nr an-level 1
|
||||
.set-an-margin
|
||||
.nr an-prevailing-indent \\n[IN]
|
||||
.fi
|
||||
.in \\n[IN]u
|
||||
.ti \\n[SN]u
|
||||
.it 1 an-trap
|
||||
.nr an-no-space-flag 1
|
||||
.nr an-break-flag 1
|
||||
.ps \\n[PS-SS]u
|
||||
\." make the size of the head bigger
|
||||
.ps +2
|
||||
.ft B
|
||||
.ne (2v + 1u)
|
||||
.if \\n[.$] \&\\$*
|
||||
..
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" BB/EB - put background/screen (filled box) around block of text
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de BB
|
||||
.if t \{\
|
||||
.sp -.5
|
||||
.br
|
||||
.in +2n
|
||||
.ll -2n
|
||||
.gcolor red
|
||||
.di BX
|
||||
.\}
|
||||
..
|
||||
.de EB
|
||||
.if t \{\
|
||||
.if "\\$2"adjust-for-leading-newline" \{\
|
||||
.sp -1
|
||||
.\}
|
||||
.br
|
||||
.di
|
||||
.in
|
||||
.ll
|
||||
.gcolor
|
||||
.nr BW \\n(.lu-\\n(.i
|
||||
.nr BH \\n(dn+.5v
|
||||
.ne \\n(BHu+.5v
|
||||
.ie "\\$2"adjust-for-leading-newline" \{\
|
||||
\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
|
||||
.\}
|
||||
.el \{\
|
||||
\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[]
|
||||
.\}
|
||||
.in 0
|
||||
.sp -.5v
|
||||
.nf
|
||||
.BX
|
||||
.in
|
||||
.sp .5v
|
||||
.fi
|
||||
.\}
|
||||
..
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.\" BM/EM - put colored marker in margin next to block of text
|
||||
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
.de BM
|
||||
.if t \{\
|
||||
.br
|
||||
.ll -2n
|
||||
.gcolor red
|
||||
.di BX
|
||||
.\}
|
||||
..
|
||||
.de EM
|
||||
.if t \{\
|
||||
.br
|
||||
.di
|
||||
.ll
|
||||
.gcolor
|
||||
.nr BH \\n(dn
|
||||
.ne \\n(BHu
|
||||
\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[]
|
||||
.in 0
|
||||
.nf
|
||||
.BX
|
||||
.in
|
||||
.fi
|
||||
.\}
|
||||
..
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * set default formatting
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * MAIN CONTENT STARTS HERE *
|
||||
.\" -----------------------------------------------------------------
|
||||
.SH "Name"
|
||||
compel \- Execute parasitic code within another process\&.
|
||||
.SH "Synopsis"
|
||||
.sp
|
||||
\fBcompel\fR \fIhgen\fR [\fIoption\fR \&...]
|
||||
.sp
|
||||
\fBcompel\fR \fIplugins\fR [\fIPLUGIN_NAME\fR \&...]
|
||||
.sp
|
||||
\fBcompel\fR [\fI\-\-compat\fR] \fIincludes\fR | \fIcflags\fR | \fIldflags\fR
|
||||
.sp
|
||||
\fBcompel\fR [\fI\-\-compat\fR] [\fI\-\-static\fR] \fIlibs\fR
|
||||
.SH "DESCRIPTION"
|
||||
.sp
|
||||
\fBcompel\fR is a utility to execute arbitrary code, also called parasite code, in the context of a foreign process\&. The parasitic code, once compiled with compel flags and packed, can be executed in the context of other tasks\&. Currently there is only one way to load the parasitic blob into victim task using libcompel\&.a, called c\-header\&.
|
||||
.SH "ARGUMENTS"
|
||||
.SS "Positional Arguments"
|
||||
.PP
|
||||
\fBhgen\fR
|
||||
.RS 4
|
||||
create a header from the \&.po file, which is the parasite binary\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBplugins\fR
|
||||
.RS 4
|
||||
prints the plugins available\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBldflags\fR
|
||||
.RS 4
|
||||
prints the ldflags available to compel during linking of parasite code\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBcflags\fR
|
||||
.RS 4
|
||||
prints the compel cflags to be used during compilation of parasitic code\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBincludes\fR
|
||||
.RS 4
|
||||
prints list of standard include directories\&.
|
||||
.RE
|
||||
.PP
|
||||
\fBlibs\fR
|
||||
.RS 4
|
||||
prints list of static or dynamic libraries that compel can link with\&.
|
||||
.RE
|
||||
.SH "OPTIONS"
|
||||
.PP
|
||||
\fB\-f\fR, \fB\-\-file\fR \fIFILE\fR
|
||||
.RS 4
|
||||
Path to the binary file,
|
||||
\fIFILE\fR, which
|
||||
\fBcompel\fR
|
||||
must turn into a header
|
||||
.RE
|
||||
.PP
|
||||
\fB\-o\fR, \fB\-\-output\fR \fIFILE\fR
|
||||
.RS 4
|
||||
Path to the header file,
|
||||
\fIFILE\fR, where compel must write the resulting header\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB\-p\fR, \fB\-\-prefix\fR \fINAME\fR
|
||||
.RS 4
|
||||
Specify prefix for var names
|
||||
.RE
|
||||
.PP
|
||||
\fB\-l\fR, \fB\-\-log\-level\fR \fINUM\fR
|
||||
.RS 4
|
||||
Default log level of compel\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
.RS 4
|
||||
Prints usage and exits\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB\-V\fR, \fB\-\-version\fR
|
||||
.RS 4
|
||||
Prints version number of compel\&.
|
||||
.RE
|
||||
.SH "SOURCE EXAMPLES"
|
||||
.SS "Parasitic Code"
|
||||
.sp
|
||||
\fB#include <compel/plugins/std\&.h>\fR
|
||||
.sp
|
||||
\fBint parasite_trap_cmd(int cmd, void *args);\fR //gets called by compel_run_in_thread()
|
||||
.sp
|
||||
\fBint parasite_daemon_cmd(int cmd, void *arg);\fR // gets called by compel_rpc_call() and compel_rpc_call_sync()
|
||||
.sp
|
||||
\fBvoid parasite_cleanup(void);\fR //gets called on parasite unload by compel_cure()
|
||||
.SS "Infecting code"
|
||||
.sp
|
||||
The parasitic code is compiled and converted to a header using \fBcompel\fR, and included here\&.
|
||||
.sp
|
||||
\fB#include <compel/compel\&.h>\fR
|
||||
.sp
|
||||
\fB#include "parasite\&.h"\fR
|
||||
.sp
|
||||
Following steps are perfomed to infect the victim process:
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
stop the task:
|
||||
\fBint compel_stop_task(int pid);\fR
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
prepare infection handler:
|
||||
\fBstruct parasite_ctl *compel_prepare(int pid);\fR
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
execute system call:
|
||||
\fBint compel_syscall(ctl, int syscall_nr, long *ret, int arg \&...);\fR
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
infect victim:
|
||||
\fBint compel_infect(ctl, nr_thread, size_of_args_area);\fR
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
cure the victim:
|
||||
\fBint compel_cure(ctl);\fR
|
||||
//ctl pointer is freed by this call
|
||||
.RE
|
||||
.sp
|
||||
.RS 4
|
||||
.ie n \{\
|
||||
\h'-04'\(bu\h'+03'\c
|
||||
.\}
|
||||
.el \{\
|
||||
.sp -1
|
||||
.IP \(bu 2.3
|
||||
.\}
|
||||
Resume victim:
|
||||
\fBint compel_resume_task(pid, orig_state, state);\fR
|
||||
.RE
|
||||
.sp
|
||||
\fBctl\fR must be configured with blob information by calling \fBPREFIX_setup_c_header()\fR, with ctl as its argument\&. \fBPREFIX\fR is the argument given to \fB\-p\fR when calling hgen, else it is deduced from file name\&.
|
||||
.SH "EXAMPLES"
|
||||
.sp
|
||||
To generate a header file(\&.h) from a parasite binary file(\&.po) use:
|
||||
.sp
|
||||
.if n \{\
|
||||
.RS 4
|
||||
.\}
|
||||
.fam C
|
||||
.ps -1
|
||||
.nf
|
||||
.BB lightgray
|
||||
compel hgen \-f parasite\&.po \-o parasite\&.h
|
||||
.EB lightgray
|
||||
.fi
|
||||
.fam
|
||||
.ps +1
|
||||
.if n \{\
|
||||
.RE
|
||||
.\}
|
||||
.sp
|
||||
\fIparasite\&.po\fR file is obtained by compiling the parasite source with compel flags and linking it with the compel plugins\&.
|
||||
.SH "AUTHOR"
|
||||
.sp
|
||||
The CRIU team\&.
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
Name: criu
|
||||
Version: 3.13
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Provides: crtools = %{version}-%{release}
|
||||
Obsoletes: crtools <= 1.0-2
|
||||
Summary: Tool for Checkpoint/Restore in User-space
|
||||
@ -26,6 +26,7 @@ BuildRequires: perl
|
||||
# zcat /usr/share/man/man8/criu.8.gz > criu.8
|
||||
Source1: criu.8
|
||||
Source2: crit.1
|
||||
Source2: compel.1
|
||||
# The patch aio-fix.patch is needed as RHEL7
|
||||
# doesn't do "nr_events *= 2" in ioctx_alloc().
|
||||
Patch100: aio-fix.patch
|
||||
@ -123,6 +124,7 @@ make install-man DESTDIR=$RPM_BUILD_ROOT PREFIX=%{_prefix} LIBDIR=%{_libdir}
|
||||
%else
|
||||
install -p -m 644 -D %{SOURCE1} $RPM_BUILD_ROOT%{_mandir}/man8/%{name}.8
|
||||
install -p -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/man1/crit.1
|
||||
install -p -m 644 -D %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/compel.1
|
||||
%endif
|
||||
|
||||
mkdir -p %{buildroot}%{_tmpfilesdir}
|
||||
@ -176,7 +178,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libcriu.a
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Sep 16 2019 Adrian Reber <adrian@lisas.de> - 3.13-1
|
||||
* Mon Sep 16 2019 Adrian Reber <adrian@lisas.de> - 3.13-3
|
||||
- Update to 3.13 (#1751146)
|
||||
- Drop upstreamed patches
|
||||
- Drop static library
|
||||
|
||||
Loading…
Reference in New Issue
Block a user