Форум
ПОИСК ПО ФОРУМУ
Портал
ПОИСК ПО ФОРУМУ
Авторы
Что нового
Медиа
Поиск медиа
Архив
Пользователи
Сейчас на форуме
Поиск сообщений в профиле
ПОИСК
Вход
Регистрация
Что нового
ПОИСК ПО ФОРУМУ
Меню
Вход
Регистрация
Установить приложение форума
Установить
Уменьшение отступа
Обратная связь
(info@ru-sfera.pw)
Форум
Программирование
С++
Как преобразовать бинарник программы в сишный код
JavaScript отключён. Для полноценно использования нашего сайта, пожалуйста, включите JavaScript в своём браузере.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать
другой
.
Ответить в теме
Сообщение
<blockquote data-quote="X-Shar" data-source="post: 144150" data-attributes="member: 1"><p><img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQLjpJFsV4wqlU65SRGOP0S9rwgNuC_JX65_qeIBuLSgYWfJcp5QA" alt="" class="fr-fic fr-dii fr-draggable " style="" /></p><p></p><p>Всем привет !</p><p></p><p>Наверное нужно-было разместить это, там где обсуждают низкоуровневое программирование, но всё-же опубликую здесь, может нужно кому будет. Например для встраивания шеллов в своих так-сказать любимцев. :)</p><p></p><p><strong><u>Итак задача:</u></strong></p><p><strong><u></u></strong></p><p>Есть бинарник, неважно что, екзешник, elf - образ или что-ещё. Нужно преобразовать его в си-код, что-бы получить буфер.</p><p></p><p>Пример для понимания, если откроете екзешник, то у вас будет набор байт, например 000300007477e652...., а надо сделать примерно так:</p><p></p><p>0x00, 0x03, 0x00, 0x00, 0x74, 0x77, 0xe6, 0x52</p><p></p><p>Что-бы потом сделать так:</p><p>[PHP]char buffer_shell = {0x00, 0x03, 0x00, 0x00, 0x74, 0x77, 0xe6, 0x52}[/PHP]</p><p></p><p>Далее уже можете работать с этим буфером, например запустить другую программу из своей.</p><p></p><p>Что-то нигде не смог найти решение этой задачи, как видите если например программа более мегабайта, то править так запаришься.</p><p></p><p>Да и вообще стало интересно написать небольшой преобразователь на си. :)</p><p></p><p><strong><u>Вот-что получилось:</u></strong></p><p>[PHP]#include <stdio.h></p><p></p><p>#define PATH_FILE_OPEN "myProga.exe"</p><p>#define PATH_FILE_HEX "hex.txt"</p><p>#define SIZE_FILE 3*1024*1024</p><p></p><p>static unsigned int buffer [SIZE_FILE];</p><p>static unsigned int tmp;</p><p>static int i = 0;</p><p>static int count = 0;</p><p></p><p>int main(void)</p><p>{</p><p> FILE *hFileOpen;</p><p> FILE *hFileHex;</p><p></p><p> hFileOpen = fopen(PATH_FILE_OPEN, "r");</p><p> hFileHex = fopen(PATH_FILE_HEX, "w");</p><p></p><p> if ((hFileOpen == NULL) || (hFileHex == NULL))</p><p> {</p><p> printf("Error open files ");</p><p> return 0;</p><p> }</p><p></p><p> while(!feof(hFileOpen))</p><p> {</p><p> tmp = getc (hFileOpen);</p><p> if (i < SIZE_FILE) buffer [i] = tmp; else printf ("Error file size = %d \n", i);</p><p> i++;</p><p> }</p><p></p><p> printf ("I = %d \n", i);</p><p></p><p> close (hFileOpen);</p><p></p><p> for (int j = 0; j<(i-1); j++)</p><p> {</p><p> count++; </p><p> if ( count == 10 ) </p><p> {</p><p> fprintf (hFileHex, " 0x%02x,\n", (((unsigned int*)buffer)[j]));</p><p> count = 0; </p><p> } else fprintf (hFileHex, " 0x%02x, ", (((unsigned int*)buffer)[j]));</p><p> };</p><p></p><p> close (hFileHex);</p><p></p><p> return(0);</p><p>}</p><p>[/PHP]</p><p></p><p>PATH_FILE_OPEN "myProga.bin" - Указываете имя своей программы (Должна находится в папке с программой)</p><p>PATH_FILE_HEX "hex.txt" - Будет преобразованный файл.</p><p>SIZE_FILE 3*1024*1024 - Размер файла, три мегабайта. Для буфера, если файл больше, то можно увеличить.</p><p></p><p>Можно откомпилировать на любой оси, использовал только библиотеку #include <stdio.h>. :)</p><p></p><p>Ну это так может кому нужно будет. :)</p></blockquote><p></p>
[QUOTE="X-Shar, post: 144150, member: 1"] [IMG]https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQLjpJFsV4wqlU65SRGOP0S9rwgNuC_JX65_qeIBuLSgYWfJcp5QA[/IMG] Всем привет ! Наверное нужно-было разместить это, там где обсуждают низкоуровневое программирование, но всё-же опубликую здесь, может нужно кому будет. Например для встраивания шеллов в своих так-сказать любимцев. :) [B][U]Итак задача: [/U][/B] Есть бинарник, неважно что, екзешник, elf - образ или что-ещё. Нужно преобразовать его в си-код, что-бы получить буфер. Пример для понимания, если откроете екзешник, то у вас будет набор байт, например 000300007477e652...., а надо сделать примерно так: 0x00, 0x03, 0x00, 0x00, 0x74, 0x77, 0xe6, 0x52 Что-бы потом сделать так: [PHP]char buffer_shell = {0x00, 0x03, 0x00, 0x00, 0x74, 0x77, 0xe6, 0x52}[/PHP] Далее уже можете работать с этим буфером, например запустить другую программу из своей. Что-то нигде не смог найти решение этой задачи, как видите если например программа более мегабайта, то править так запаришься. Да и вообще стало интересно написать небольшой преобразователь на си. :) [B][U]Вот-что получилось:[/U][/B] [PHP]#include <stdio.h> #define PATH_FILE_OPEN "myProga.exe" #define PATH_FILE_HEX "hex.txt" #define SIZE_FILE 3*1024*1024 static unsigned int buffer [SIZE_FILE]; static unsigned int tmp; static int i = 0; static int count = 0; int main(void) { FILE *hFileOpen; FILE *hFileHex; hFileOpen = fopen(PATH_FILE_OPEN, "r"); hFileHex = fopen(PATH_FILE_HEX, "w"); if ((hFileOpen == NULL) || (hFileHex == NULL)) { printf("Error open files "); return 0; } while(!feof(hFileOpen)) { tmp = getc (hFileOpen); if (i < SIZE_FILE) buffer [i] = tmp; else printf ("Error file size = %d \n", i); i++; } printf ("I = %d \n", i); close (hFileOpen); for (int j = 0; j<(i-1); j++) { count++; if ( count == 10 ) { fprintf (hFileHex, " 0x%02x,\n", (((unsigned int*)buffer)[j])); count = 0; } else fprintf (hFileHex, " 0x%02x, ", (((unsigned int*)buffer)[j])); }; close (hFileHex); return(0); } [/PHP] PATH_FILE_OPEN "myProga.bin" - Указываете имя своей программы (Должна находится в папке с программой) PATH_FILE_HEX "hex.txt" - Будет преобразованный файл. SIZE_FILE 3*1024*1024 - Размер файла, три мегабайта. Для буфера, если файл больше, то можно увеличить. Можно откомпилировать на любой оси, использовал только библиотеку #include <stdio.h>. :) Ну это так может кому нужно будет. :) [/QUOTE]
Проверка
Ответ
Форум
Программирование
С++
Как преобразовать бинарник программы в сишный код
Верх
Низ