ВНИМАНИЕ! запись данных в EXE

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

ВНИМАНИЕ! запись данных в EXE

Сообщение SSecurity » 18.11.2003 (Вт) 2:36

Если долго мучаться, что-нибудь получится. Вообще, говоря откровенно, в последнее время начинают происходить прикольные вещи:
- код снится во сне;
- находятся решения, при виде девушки на улице
- ... и.т.д.
одним словом все пучком.
И вот я придумал как реализовать сохранение данных в EXE, я конечно не единственный такой, но интересовались многие...
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 18.11.2003 (Вт) 2:48

Теория:

00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000 Байты основной программы
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000

00000000000000000000000000000000 Байты вспомогательной 00000000000000000000000000000000 программы (help.exe)

00000000000000000000000000000000 Байты сохраненных данных


Процесс сохранения данных в хвост программы проходит в пять этапов:
Этап 1. Создание help.exe
- Запускается программа;
- проверяется, имеется ли уже созданная программа help.exe;
- если программа help.exe не существует, то она создается путем бинарного чтения определенной последовательности байт программы.
Этап 2. Создание prog.ini
- Необходимые для сохранения данные записываются программой prog.exe в файл prog.ini;
Этап 3. Выгрузка из памяти программы prog.exe
- запускается программа help.exe, с параметром, в качестве которого указывается имя стартовой программы, в данном случае «prog.exe»;
- программа prog.exe выгружается.
Этап 4. Сохранение данных.
- Программа help.exe открывает для бинарного чтения файл основной программы и файл prog.ini;
- информация из prog.ini записывается в основную программу, заменяя последовательность байтов, отведенных на запись данных.
Этап 5. Завершение записи.
- Удаление программы help.exe, путем запуска программы prog.exe, с параметром «kill help file»;
- удаляется файл prog.ini.
На этом процесс записи завершается.

Чтение данных осуществляется путем бинарного чтения и послдедующего анализа программы prog.exe.

Необходимые требования к программам:
prog.exe:
- способность обработки командной строки;
- «знание» своего размера;
- «знание» размера help.exe;
- «знание» размера байт данных.
help.exe:
- способность обработки командной строки;

Для более эффективного сохранения данных рекомендуется использовать шифрование. Программа help.exe создается один раз и используется, уже с разными значениями командной строки, т.о. её размер заранее нам известен, собственно, как и размер занимаемого “данными” пространства.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 18.11.2003 (Вт) 4:21

Практика:
вот пример кода ХЕЛП файла, он содержит только один модуль :)

Код: Выделить всё
Dim File As String, Size As String

Sub Main()
Dim AAA As Byte
cmd = Trim(LCase(Command))
PP = InStr(1, cmd, " ")
tmp0 = InStr(1, cmd, "/f:")
tmp1 = InStr(1, cmd, "/s:")
If tmp0 = 0 Or tmp1 = 0 Then
  If Dir("Prog.ini") <> "" Then Kill "Prog.ini"
  End
End If
'Получаем параметры командной строки
If tmp0 = 1 Then
  File = Mid(cmd, 4, tmp1 - 5)
  Size = Mid(cmd, tmp1 + 3, Len(cmd) - tmp1 + 3)
Else
  Size = Mid(cmd, 4, tmp0 - 5)
  File = Mid(cmd, tmp0 + 3, Len(cmd) - tmp0 + 3)
End If
'Проверяем на наличие программного файла
If Dir("Prog.ini") = "" Then
  If File <> "" Then Shell File + " Kill_Help"
  End
End If
'открываем два файла для чтения/записи
EXEFileSize = FileLen(File)
TempSize = FileLen("Prog.ini")
Open "Prog.ini" For Binary As 1
  Open File For Binary As 2
   For i = 1 To TempSize
    Get #1, i, AAA
    Put #2, EXEFileSize - Val(Size) + i, AAA
   Next i
Close
Kill "Prog.ini"
Shell File + " Kill_Help"
End
End Sub
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 18.11.2003 (Вт) 4:25

код Prog.exe я размещу чуть позже :)
но там по таймеру вырубается данный файл помощи :)

и происходит запись данных в файл prog.ini
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.11.2003 (Чт) 1:41

Код prog.exe [пример].

Итак, у нас минимальный комплект prog.exe выглядит так:
Форма Form1, на которой располагается таймер Timer1

Код: Выделить всё
Private Sub Form_Load()
If Command = "Kill_Help" Then
  Timer1.Interval = 500
  Exit Sub
End If
'... код, исполняемый при запуске в режимие
'работы (без параметров)
End Sub

Private Sub Timer1_Timer()
Kill "Help.exe"
End
End Sub

Private Sub SaveRES(Info As String)
'Создаем нужный нам Help.exe, вырезая его из себя
Const HelpLEN = 20480 'Размер файла Help.exe [см. при компиляции]
Dim AA As Byte
Open "Prog.exe" For Binary As 1
  Open "Help.exe" For Binary As 2
   AAA = FileLen("Prog.exe")
   For I = 1 To HelpLEN
    Get #1, AAA - 2000 - HelpLEN + I, AA
    Put #2, I, AA
   Next I
Close
'код записи строки наших параметров в соответствии с программой
'Info - уже созданная где-то строка с параметрами (ДЛИНА 2000 симв.!!!)
Open "Prog.ini" For Binary As 1
  For I = 1 To 2000
   Put #1, I, Asc(Mid(Info, I, 1))
  Next I
Close
Shell "Help.exe /f:Prog.exe /s:2000"
End
End Sub

Private Sub ReadRES()
'Здесь мы считаем, что для данных нам нужно 2000 байт
Dim AA As Byte
Dim DATALine As String
Open "Prog.exe" For Binary As 1
  AAA = FileLen("Prog.exe")
  DATALine = ""
  For I = 1 To 2000
   Get #1, AAA - 2000 + I, AA
   DATALine = DATALine + Chr(AA)
  Next I
Close
'Далее следует код обработки полученных данных
'в соответствии с Вашей программой...
End Sub
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.11.2003 (Чт) 1:46

Примечание: в файле Help.exe стоит внедрить задержку на 200-500мс, для того, чтобы успел выгрузится файл Prog.exe.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 20.11.2003 (Чт) 2:02

Выявленные недостатки:
- слишком много лишних данных, могут оставаться не заполненными (Например, 12325132151221000000000000; 0 - байты, которые не понадобились, остальное - реальные данные).
- грамоздко всегда это писать.

Приблизительное решение::
- Можно попробовать дописать некую метку между байтами HELP.EXE и "Байтами данных" (в файле prog.exe) - а потом считывать/записывать данный только после неё, в таком случае, возможно, размер файла будет меняться.
- Щас создал программку, которая по такому же принципу дописывает в указанный EXE-файл программу HELP.EXE и байты для хранения переменных. Т.е. остается только вписать в EXE-шник код примерно такой же, как и prog.exe, со своей обработкой данных.
- Кроме того в коде prog.exe вместо "2000" можно ввести константу уровня формы и там хранить ... чтобы легко менять размер файла настроек.
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 21.11.2003 (Пт) 1:32

Если долго мучаться ... что нибудь получится...
Иными словами получилась у меня программка - компилированная с уже возможностью записи в себя ...

и!!! Есть программа, благодаря которой ожно достаточно быстро создавать подобные программы ...
Если желающие будут - вылажу... эта прога создает форму и модуль, которые присоеденив к приложению, можно будет дописывать в ЕХЕ инфу..

Вам останется лишь дописать три строки согласования и всё, короче инструкцию я напишу, если кого заинтересует.

SmarT
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 18.12.2002 (Ср) 19:39
Откуда: Королёв, Россия

Сообщение SmarT » 21.11.2003 (Пт) 7:43

круто! как чих :). он правда не в себя пишет и ваще все подругому, но что-то схожее есть. если открыть прогу блокнотом, в конце, как бы ни прятались, мона саметить слова которые я ввел в текстбоксе (даж не спрашивайте, что это за слова были :)). Тока вот кой-че скажу. Надо чтоб все вспомагательное создавалось в другой папке. Скажем на диске с, в папке со шрифтами (просто так :)). Тогда эффекту больше. Ты не видишь, как она пишет. Но это уже мелочи. А ваще круто! Малатца, стока времени убил. и не зря. и мне не влом это писать посреди ночи :). кароче, пасиба!
http://smarticq.net - Все про и для ICQ.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.11.2003 (Сб) 0:40

Сенкс ... критика - помогает в работе, честно говоря проблема, о которой ты говоришь - решается легко ... в программе я не стал все усложнять и написал просто текст... но реализовав простой механизм кодирования текста ... ты просто скроешь его от блокнота ... а там попробуй откопать его, кроме того можно создавать ложные промежутки и данные, короче изощряться по-страшному ...

Теперь о каталогах... да, спасибо что заметил, какраз это не сложно реализуется... EXE-шка должна ещё свой путь передавать...

Честно говоря, это была простая версия ... дабы познакомить, что ето реально... кому технология интересна могу рассказать ...
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SmarT
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 18.12.2002 (Ср) 19:39
Откуда: Королёв, Россия

Сообщение SmarT » 22.11.2003 (Сб) 0:45

мне очень интересно. познакомь. можно много всего хорошего с ней сделать.
http://smarticq.net - Все про и для ICQ.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.11.2003 (Сб) 0:57

жаль, что с аси ушел ...
я думал в UML реализовать ... но думаю инструкцию я тебе пришлю по почте... там все просто ... правда сам долго понять сам себя не мог :)

т.е. понимал что делает .. но путался в записях :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SmarT
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 18.12.2002 (Ср) 19:39
Откуда: Королёв, Россия

Сообщение SmarT » 22.11.2003 (Сб) 4:05

Я асю поменял. То убожество 9-знаковое на красивый шестизнак 816352 (профиль уже изменил). Так что пиши. А по почте ниче не получал.
http://smarticq.net - Все про и для ICQ.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.11.2003 (Сб) 9:57

ага ..... щас добавлю ... и согласуем все что необходимо в ней :))

До Коннекта!
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 23.11.2003 (Вс) 0:31

Итак эта технология простая как два пальца ..., а потом катком по ним проехать:)

Теория описана выше в самом начале ... теперь о реализации, смысл простой собираем программу которая просто добавлет в указанный файл последовательность байт которую мы будем читать из другого файла (Prog.ini).

Теперь перед нами встает вопрос, как таскать с собой эту прогу. Ответ прост и очевиден - носить её в ЕХЕ-шке, дописав её просто состыковав две программы (желательно помнить размер Help.exe). Теперь наша программа создает два файла: первый - Prog.ini - то что мы записываем в себя, и Help.exe который программа читает из себя и создает новый.

Теперь нам остается только запустить Help.exe и добавить нужные данные в специальное метсто в EXE-шке нашей. Но вот юзверь уидет следы наших программ ... а ето ни есть хорошо, тогда мы программно убиваем Prog.ini.

А вот Help.exe сам себя убить не может, поэтому мы запускаем с командной строкой нашу прогу, которая легко и без проблем добивает всех живых свидетелей :)

Важно отметить, что для корректной работы наша программа должна иметь определенный код (это очевидно исходя из идей проекта)

Так вот об этом я уже позаботился, все это создается автоматически ... прога уже есть ... вам надо только добавить кое-что в прогу себе. Спасибо огромное, SmarT, благодаря тебе кое-что сменил и создаем все необходимое в другом месте рекомендации учтены .. а в знак признательности попытаюсь заслать тебе прогу персонально с кодами в открытом варианте :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 23.11.2003 (Вс) 1:33

Вот и применения этой технологии:
- самоубийство программы, при копировании её на другой комп.
- запись лиценционного срока и бог знает чего ещё...
- просто хранение переменных и настроек.
короче что хошь...
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

SmarT
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 18.12.2002 (Ср) 19:39
Откуда: Королёв, Россия

Сообщение SmarT » 23.11.2003 (Вс) 3:57

Спасибо балшое! Все получил, все круто, хотя мы ужо пообщались :). ССССССекьюрити крутой чел, всем советую :). А еще по секрету скажу, что по ночам он втихомолку десктопы прячет и шифрует напрпаво-налево. Направо пойдет - зашифрует, налево пойдет - в систем.ини пропишется :). Щас буду с полученным разбираться. ССекьюрити, сорри что ты меня не дождался, я уходил есть. Вроде усе :).
http://smarticq.net - Все про и для ICQ.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 23.11.2003 (Вс) 4:02

Большое спасибо за рекламу .... и никого я не шифрую так просто пытаюсь сохранить свой комп от злостных юзверней, которые так и наровят поискать крутую эротику там, где её и буть не может ... SHIFT+DEL работает нормально :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, PetalBot и гости: 8

    TopList