Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Вниз

Как сделать чтобы один exe-шник мог создавать другой exe   Найти похожие ветки 

 
Serega_spb   (2002-09-02 10:07) [0]

Как сделать чтобы один exe-шник мог создавать и редактировать
другой exe-шник.
Объясняю на примерах:
Наверное все видели программы-склеиватели
(джойнеры),такая программа запихивает несколько файлов в себя и делает новый exe-файл,при запуске этого нового exe запускаются и те файлы,которые были в него засунуты.
Тоже самое с троянскими прграммами, у которых есть редактор сервера(Можно создать новый или отредактировать exe-файл сервера)
Та же история с архиваторами(создание sfx-архивов)

Надеюсь вы поняли ,что я имею в виду...
Надеюсь получить ответ,желательно с примерами,возможно он займет
много места,тогда отсылайте: Seregaspb@yandex.ru


 
alena.svt   (2002-09-02 11:06) [1]

Ну и че?
Создай exe запакуй в ресурсы еще один ехе При запуске вытаскивай его из ресурсов и работай с ним как душе угодно можно даже как с библиотекой.


 
Serega_spb   (2002-09-02 20:36) [2]

Я еще начинающий(совсем начинающий),можно поподробнее.


 
Anatoly Podgoretsky   (2002-09-02 21:05) [3]

А может тогда не надо с этого, лучше для начало что нибудь попроще


 
Alessio18   (2002-09-02 21:14) [4]

Это проблема, кстати, давно набила многим программистам оскомину. Так что, пожалуйста, сделайте доброе дело и ответьте на вопрос! Мне, к примеру, нужно создавать отдельные exe"шники с установленными пользователем свойствами (не троян).


 
Jeer   (2002-09-02 21:15) [5]

>Надеюсь получить ответ,желательно с примерами,возможно он займет
>много места,тогда отсылайте: Seregaspb@yandex.ru

Конечно, сейчас все тебе сразу и отошлют и исходники и bin-файлы, да еще для разных платформ.

P.S.
Если ты совсем начинающий - от Подгорецкого верный совет дан.
Когда станешь не совсем начинающим, поймешь, что тебе это совсем не надо.


 
Jeer   (2002-09-02 21:36) [6]

>Мне, к примеру, нужно создавать отдельные exe"шники с >установленными пользователем

Это как это ?
Нажал пимпочку - создалась Бухгалтерия, нажал другую - Склад, третью - Торговля, а вот еще галочку поставил - так в SQL-варианте.
Так примерно ?


 
Alessio18   (2002-09-02 22:23) [7]

>Это как это ?
>Нажал пимпочку - создалась Бухгалтерия, нажал другую - Склад, >третью - Торговля, а вот еще галочку поставил - так в SQL->варианте.
>Так примерно ?

Что за примитивизм! Просто в программе пользователь устанавливает или убирает какие-нибудь определённые свойства и нужно создать exe"шник с этими включёнными свойствами.


 
ЮЮ   (2002-09-03 04:19) [8]

>Просто в программе пользователь устанавливает или убирает какие-нибудь определённые свойства и нужно создать exe"шник с этими включёнными свойствами.

А кроме как в exe-шнике их и сохранить негде?


 
alena.svt   (2002-09-03 05:19) [9]

Если очень надо то можно и в Exe"шнике.
Запаковываете его в ресурсы. Теперь допустим он у вас будет
File>New юзер указывает место на диске туда вы его и распаковываете. Далее работаете с ним как с обыкновенной dll.
Начните изучение с Rexplore.exe в Demos. А потом поищите инфу как писать в PE файлы как читать c них. Инфы по этому поводу море.
Где то даже помойму в кладовке была демка WriteToDll на ее очень легком примере(а там код в три строчки)можно построить даже своего рода базу данных для хранения любой инфы в любых форматах(но для этого почитать надо и поискать много). Так как не для кого не секрет что Dll позволяет хранить все что душе угодно.
С Ехе работа ничем не отличается лишьбы он не был сжат чем то вроде AsPack"a или Upx"a.
Я делала своего рода миниБД из Exe"шника. Работа его была похожа на что то вроде TheBat"овской персональной книги данных. И честно говоря давольно таки интересно получилось. Никакой BDE. Хранил все и картинки и пароли и адреса, плюс всегда можно было удалить ресурс и записать. Только чтоб по нему не прыгали я его сначала компрессом сжимала, при начале работы разжимала в System32 чтоб не видно было работы.,а по завершению в обратном порядке. К сожалению я его не сохранила. Так бы с удовольствием поделилась. Ну удачи.


 
alena.svt   (2002-09-03 05:50) [10]

Вот он простенький пример
Записывает число в DLL а по следущему запуску его показывает.
Далее его можно переписать по новой.

unit Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;

type
TForm1 = class(TForm)
Edit1: TEdit;
StaticText1: TStaticText;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
NDLL:integer;
function WriteToResource(N:integer):boolean;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.WriteToResource(N:integer):boolean;
var
hLib:THandle;
begin
hLib:=BeginUpdateResource("MyDLL.dll",false);
Result:=UpdateResource(hLib,RT_RCDATA,"MYFILE",0,@N,4);
EndUpdateResource(hLib,false);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
hLib:HINST;
hFile,hN:THandle;
p:pointer;
begin
//грузим либу:
hLib:=LoadLibrary("MyDLL.dll");
if hLib<>0 then
begin
//находим pесурс в ней
hFile:=FindResource(hLib,"MYFILE",RT_RCDATA);
if hFile<>0 then
begin
//загружаем его
try
hN:=LoadResource(hLib,hFile);
//вытаскиваем из него число
p:=LockResource(hN);
CopyMemory(@NDLL,p,4);
Edit1.Text:=IntToStr(NDLL);
except
ShowMessage("Библиотека повреждена!!!")
end;
end else
begin
ShowMessage("Не найден ресурс. Будет записано значение 0.");
NDLL:=0;
if not WriteToResource(NDLL) then ShowMessage("Не удаётся записать число в библиотеку.");;
end;
//выгружаем либу, чтобы можно было в неё писать
FreeLibrary(hLib);
end else ShowMessage("Библиотека не найдена!!!");
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
try
NDLL:=StrToInt(Edit1.Text);
except
ShowMessage("Введённая строка не является целым числом. Запись невозможна");
Exit;
end;
if not WriteToResource(NDLL) then ShowMessage("Не удалось записать данные!!!");
end;

end.

Это и есть пример той WriteToDll.
Естественно MyDll.dll пусть у вас будет MyExe.exe
Ну а дальше Help + Поиски и сразу говорю путь не легкий.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.007 c
3-35568
i
2002-08-21 15:27
2002.09.12
Значение поля, полученное генератором


6-35833
Monak
2002-07-06 09:51
2002.09.12
Статьи


1-35702
MikeFW
2002-09-02 10:40
2002.09.12
Как скопировать папку?


4-35951
MJH
2002-07-19 19:24
2002.09.12
Хинты Win2k из трея


1-35730
Юрий Федоров
2002-08-30 10:39
2002.09.12
Аттрибут свойства





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский