Здравствуйте.
Пытаюсь собрать 2nd-init из git https://github.com/a853/a853_2nd_init
Наложил следующие изменения:--- 2nd-init.orig.c 2012-12-24 10:01:18.919125141 +0400
+++ 2nd-init.c 2012-12-24 10:04:52.284183159 +0400
@@ -22,7 +22,7 @@
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
-#include <linux/user.h>
+#include <sys/user.h>
#include <stdio.h>
#include <string.h>
@@ -153,7 +153,7 @@
/* Main */
int main(int argc, char** argv)
{
- struct pt_regs regs;
+ struct pt_regs *regs;
char buff[512];
char init_env[512];
@@ -307,10 +307,10 @@
ptrace(PTRACE_GETREGS, 1, NULL, ®s);
- regs.ARM_r0 = injected_data_address + 0x0100; /* char* filename */
- regs.ARM_r1 = injected_data_address + 0x0000; /* char** argp */
- regs.ARM_r2 = injected_data_address + 0x0008; /* char** envp */
- regs.ARM_pc = execve_address;
+ regs->ARM_r0 = injected_data_address + 0x0100; /* char* filename */
+ regs->ARM_r1 = injected_data_address + 0x0000; /* char** argp */
+ regs->ARM_r2 = injected_data_address + 0x0008; /* char** envp */
+ regs->ARM_pc = execve_address;
printf("Setting /init PC to: 0xlX.\n", execve_address);
Но при этом всё ловлю ошибки:gcc 2nd-init.c -o 2nd-init
2nd-init.c: В функции «get_free_address»:
2nd-init.c:111:6: предупреждение: подавление присваивания и модификатор размера использованы вместе в формате gnu_scanf [-Wformat] // Ворнинг - фиг бы с ним, но можно тоже пофиксить если не трудно
2nd-init.c: В функции «main»:
2nd-init.c:310:6: ошибка: доступ по указателю на неполный тип
2nd-init.c:311:6: ошибка: доступ по указателю на неполный тип
2nd-init.c:312:6: ошибка: доступ по указателю на неполный тип
2nd-init.c:313:6: ошибка: доступ по указателю на неполный тип
Заранее спасибо за любые идеи как можно поправить эти ошибки.
> Заранее спасибо за любые идеи как можно поправить эти ошибки.
>> Заранее спасибо за любые идеи как можно поправить эти ошибки.
> http://www.realcoding.net/article/view/1095Огромное спасибо за наставление к изучению этой книги!
На деле всё оказалось куда как проще:--- a/2nd-init/2nd-init.c
+++ b/2nd-init/2nd-init.c
@@ -17,12 +17,12 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/-#include <sys/ptrace.h>
+#include <linux/ptrace.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
-#include <linux/user.h>
+#include <sys/user.h>
#include <stdio.h>
#include <string.h>
Оно просто не тот инклюд для ptrace брало =_="
>>> Заранее спасибо за любые идеи как можно поправить эти ошибки.
>> http://www.realcoding.net/article/view/1095
> Огромное спасибо за наставление к изучению этой книги!
> На деле всё оказалось куда как проще:
> Оно просто не тот инклюд для ptrace брало =_="А в первом сообщении о <sys/ptrace.h> не сказано =)
>>>> Заранее спасибо за любые идеи как можно поправить эти ошибки.
>>> http://www.realcoding.net/article/view/1095
>> Огромное спасибо за наставление к изучению этой книги!
>> На деле всё оказалось куда как проще:
>> Оно просто не тот инклюд для ptrace брало =_="
> А в первом сообщении о <sys/ptrace.h> не сказано =)Так вот то то и оно, что я только потом догадался проверить этот инклюд, а то оно совсем не на него ругалось, вот я и подумал что изменилось апи с версии ядра 2.6 к третьей.
А их таких в системе аж 3 штуки, в разных местах было.