Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Задача с двумя *.exe!


Автор: dnska 1.3.2006, 22:07
Есть задача, а с её решением туговато (даже формулировки для поиска чего-то подобного придумать не могу) smile

Условие такое:
Есть proga1.exe в которой реализована функция бегущей строки
Необходимо:
Создать proga2.exe которая бы могла вытащить строку из proga1.exe, и после редактирования загнать новую строку обратно в proga1.exe!

У меня стопор и никаких идей!
Буду благодарен за любую информацию или совет!

А может у кого есть пример? smile

Автор: _hunter 2.3.2006, 11:28
для начала:
http://www.codenet.ru/progr/formt/elf_pe.php

Автор: adonin 2.3.2006, 12:38
Цитата(dnska @ 1.3.2006, 22:07 Найти цитируемый пост)
Создать proga2.exe которая бы могла вытащить строку из proga1.exe, и после редактирования загнать новую строку обратно в proga1.exe!


Уточните пожалуйста, под proga1.exe понимается exe файл или процесс, в котором исполняется proga1.exe?

Если нужно изменить exe файл, смотрите пост _hunter.
Если нужно изменить строку в памяти процесса: делайте инъекцию dll в этот процесс и в главной функции библиотеки напишите код, изменяющий эту строку.

Автор: dnska 2.3.2006, 20:42
Цитата

Уточните пожалуйста, под proga1.exe понимается exe файл или процесс, в котором исполняется proga1.exe?

Именно *.exe файл! Но теперь уж буду разбираться и со вторым вариантом(интересно ведь smile )
,а
Цитата

для начала:
http://www.codenet.ru/progr/formt/elf_pe.php


Вещь конечно интересная, но уж больно заумная(на данный момент /*пока что*/ для меня)!
А что за ELF и PE форматы, т.е. какое они имеют отношение к моей *.exe?

Хотелось бы понять принцип как будет осуществляться "поиск" строки.

Прошу прощения если спрашиваю очевидные вещи. Просто сталкиваюсь с таким впервые!

Автор: Fixin 2.3.2006, 21:31
тут нужно уточнить: поменять в файле раз и навсегда, или поменять во время исполнения.

Автор: dnska 2.3.2006, 22:33
Раз и на всегда!

Автор: Fixin 2.3.2006, 22:47
Ну тогда тебе правильно дали ссылку на осисание структуры исполняемого файла. Самый лучший вариант, если строка записана в ресурсах. Тогда можно воспользоваться программой вроеде ResHacker. Иначе - туева хуча вариантов, как хранится эта строка.

Автор: dnska 3.3.2006, 14:31
Начинаю въезжать в тему!
Все более менее понятно.

Вот нарыл исходничек VC++ 6.0(PETools)
/*52.8 kb*/



Автор: oleg1973 3.3.2006, 16:14
берем HEX EDITOR и ищем в нем нашу строку, там же и меняем
если конешно наш файл не пакован/криптован или сторка в юникоде )

Автор: dnska 3.3.2006, 22:48
Хе-хе! При чем здесь ASM smile
С помощью WinHEX, IDA PRO, .и т п я могу все это сделать!
smile Задача стоит написать на VC++ для конкретного случая smile

Автор: oleg1973 3.3.2006, 22:56
ну и че сложного?
написать поиск строки в файле? и замена на другую?

Автор: dnska 4.3.2006, 00:29
Файл ведь *.EXE, а не ТЕКСТОВЫЙ!

Если организовать поиск строки и замене в EXE-шнике как в TXT, все ли будет фунциклировать после замены строки?
А как же контрольная сумма exe?!

Автор: Fixin 4.3.2006, 11:28
Цитата(dnska @ 4.3.2006, 00:29 Найти цитируемый пост)
фунциклировать после  замены
Или "перекомпилируй" файл (хе-хе), или заменяй с учетом длины строки (не длиннее).

Автор: oleg1973 5.3.2006, 14:23
dnska,
грузи ехе с текстром в память или мапь как тебе удобней и ищи строку
а crc тут не причем

Автор: dnska 6.3.2006, 11:59
Пасиба всем!

Все оказалось очень просто!
Надо же, проблемы сам себе создаю!!! smile

Тему можно закрывать!

Автор: Fixin 6.3.2006, 14:21
Есть такая ссылка над формой быстрого ответа "Пометить как решенный".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)