как изменить exe-файл с помощью другой программы.

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

как изменить exe-файл с помощью другой программы.

Сообщение Захарик » 31.08.2006 (Чт) 22:15

Помогите в такой проблеме?
Имеется созданная в visual basic программа (скажем электронная книга). Как при помощи другой программы можно поменять в ней какой-нибудь параменр, например ссылку. Может быть можно поменять какой-нибудь параметр в форме (например, что-нибудь из параметров label или textbox)
Спасибо

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 31.08.2006 (Чт) 22:24

1. HexEditer
2. Блокнот

ЗЫ. А если программа не твоя, и ты хочешь поменять в ней что-то (например, строчку об авторских правах в меню "О программе"), то руки поотрывать мало..

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 31.08.2006 (Чт) 23:55

Блокнот сохраняя переврет минимум половину. Записывает он не то что считал, а то в какой символ интерпритировал.
Так что HEXedit или какой-нибудь наворочанный блокнот.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 01.09.2006 (Пт) 1:04

В качестве навороченного блокнота - bred2r.

Он не навороченый. Быстрый и удобный. С поддержой больших файлов. С перекодировками.

А вообще автор хочет менять содержое Лэйблов, методом правки exeшника.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 01.09.2006 (Пт) 12:11

А еще хорошая вешь - ResHacker, если надо что-то поменять в ресурсах.

AjaxVS писал(а):1. HexEditer
2. Блокнот

ЗЫ. А если программа не твоя, и ты хочешь поменять в ней что-то (например, строчку об авторских правах в меню "О программе"), то руки поотрывать мало..


И это тоже меняет. И руки не отрывает. :)

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 01.09.2006 (Пт) 13:17

Или "Ресторатор 2006". Тоже обладенная программа.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 01.09.2006 (Пт) 15:19

А в курсе что речь идёт о программной модификации, а не о модификации с юзанием тулз.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Захарик
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 10.07.2006 (Пн) 22:44
Откуда: Россия

Вы не правильно меня поняли.

Сообщение Захарик » 01.09.2006 (Пт) 22:08

Вы не поняли меня. Я не хочу взламывать и изменять чужие программы.
Мне нужно создать две программы. Скажем Программа А - электронная книга, в которой имеется ссылка, которую будущий пользователь программы сможет менять по своему усмотрению при помощи Программы В. Программа В, соответственно, та программа, которая может поменять эту ссылку.

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 01.09.2006 (Пт) 23:03

Можбыть криво, но я делал так.
Если параметр фиксированный и его надо изменить.
Я создавал на форме некий объект, например, Text1.text
Записывал туда особое значение, например, "#VAR#" и если надо несколько пробелов.
Внутри программы делал обработку этого содержимого, например, A = text1...
Компилировал.

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

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 01.09.2006 (Пт) 23:24

Захарик, для этого совсем необязательно изменять внутренности exe-файла. Есть такое понятие как запись в файлы (рекомендую ini) и в реестр (очень не рекомендую) и занесение информации в базу данных (рекомендую, если нужно работать с большими объемами текста), где ты можешь хранить текстовые значения, чтобы потом их считывать и использовать в программе.

Так, например, если тебе нужно предоставить возможность пользователю изменить надпись на Label1, то:
1. при загрузке (в Form_Load()) пропиши что-то типа:
Код: Выделить всё
Private Sub Form_Load()
On Error GoTo HErr
Dim i As Integer
Dim s As String
s = App.Path
If Right$(s, 1) <> "\" Then s = s & "\"
s = s & "config.txt"
i = FreeFile
Open s For Input As #i
Line Input #i, s
Close #i
HErr:
End Sub

2. А изменить надпись ты можешь по нажатии какой нибудь кнопки Command1
Код: Выделить всё
Private Sub Command1_Click()
On Error GoTo HErr
Dim i As Integer
Dim s As String
Dim s1 As String
s = App.Path
If Right$(s, 1) <> "\" Then s = s & "\"
s = s & "config.txt"
s1 = InputBox("введите новое значение лэйбла")
Open s For Output As #i
Print #i, s1
Close #i
Label1.Caption = s1
HErr:
End Sub

Это самый простой пример.. По аналогии ты можешь хранить значения нескольких лэйблов на каждой строчке в одном файле.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 02.09.2006 (Сб) 4:59

Особист
И что, ты действительно находил в EXE комбинацию #VAR# ? :shock:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 02.09.2006 (Сб) 11:54

Хакер
Конечно!
Если задавать её как переменную, то не найдёшь, а если создать объект (например, Text или Label) и забить её туда - всё легко находится. И даже работает :)

Я так свой self-extractor реализовывал, да и много чего ещё...

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 02.09.2006 (Сб) 13:16

а у мя находится, но не работает..

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 02.09.2006 (Сб) 17:18

Создаём форму, на неё кладём Text1.text. Записываем в его свойство Text через редактор (в смысле не программно) значение #VAR# и 11 пробелов после.

Добавляем код:
Код: Выделить всё
Private Sub Form_Load()
a = Text1
MsgBox "A = " & a
End Sub


Компилим, создаём exe: c:\varsample\test.exe

Теперь создаём новый VB-проект. Создаём форму, на ней сверху вниз - Label1, Text1 и Command1
Код:
Код: Выделить всё
Private Sub Command1_Click()
If Dir("c:\varsample\test.exe") = "" Then MsgBox "Нету файла :(.": Exit Sub
Dim flen As Currency, b As Byte
Open "c:\varsample\test.exe" For Binary As #1
flen = LOF(1)
ReDim bt(flen) As Byte
Get #1, , bt
st = "#VAR#"
For f = 0 To flen - 4
    For g = 1 To 4
        If bt(f + g - 1) <> Asc(Mid(st, g, 1)) Then GoTo 10
    Next g
   
    For g = 1 To Len(Text1)
        b = Asc(Mid(Text1, g, 1))
        Put #1, f + g, b
    Next g
    Close #1
    MsgBox "Всё окей!"
    End
   
10 Next f
Close #1
MsgBox "Была ошибка!"
End

End Sub

Private Sub Form_Load()
Label1 = "Значение переменной (не более 15 символов!)"
Text1 = ""
Text1.MaxLength = 15
Command1.Caption = "&Внести в exe!"
End Sub


Пример грубый, но всё отлично работает!

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 03.09.2006 (Вс) 0:03

а если надо изменить ресурс?Вот например прога типа Wav в ехе
в си нашел расположение, изменил, ресхакер песню удачно нашел и ресторатор тоже а ехе не запустился!орёт вроде что он не под вин32.
я слышал вроде как там в заголовках есть размер файла может надо изменить:НОВЫЙ Размер=Старый - старый вав + новый вав?

Вобще вроде вы меня поймёте... :roll:

'кстати а в ехе написано:НЕ ПОД ДОС!
может линукс?... :D

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 03.09.2006 (Вс) 10:33

Прога типа WAV в exe - ЖЖош! Пацтулом!

X-hacker
Естественно там где-то указываются еще и параметры файла. Но даже если ты и надёшь, где их менять, вряд ли это поможет. Если ты изменяешь размер вложенного файла, очевидно, должен измениться и размер exe - а тут уж без перекомпиляции сложновато будет.
Вышеописанный пример как раз основывается на том, что длина стороковой переменной не должна меняться... К слову, так же когда-то производилась руссификация программ.
Вот если ты зарезервируешь больше места, скажем, 5 мб на wav,
Начало|............|Конец потом возьмёшь и вставишь в начало этого wav файла свой, не превышающий по объёму, будет
Начало|*****..|Конец,
а оставшееся место до этих 5 mb зальёшь нулями, то вполне возможно что у тебя запустится... Но чисто теоретически...
Последний раз редактировалось Особист 03.09.2006 (Вс) 10:41, всего редактировалось 2 раз(а).

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 03.09.2006 (Вс) 10:36

X-hacker писал(а):а если надо изменить ресурс?Вот например прога 'кстати а в ехе написано:НЕ ПОД ДОС!
может линукс?... :D


Не, только под TR DOS !!! :)
Вообще, балдею с микрофака - нет чтоб написать прямо - "Программа для Виндовс", нет, написали "Не под ДОС" =)
Из серии "Keyboard error or not present -- Press F1 to skip error" :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.09.2006 (Вс) 10:46

Особист писал(а):
X-hacker писал(а):а если надо изменить ресурс?Вот например прога 'кстати а в ехе написано:НЕ ПОД ДОС!
может линукс?... :D


Не, только под TR DOS !!! :)
Вообще, балдею с микрофака - нет чтоб написать прямо - "Программа для Виндовс", нет, написали "Не под ДОС" =)

Вы про что вообще? :-?
Изображение

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 03.09.2006 (Вс) 11:03

tyomitch
Про тескт внутри exe-шника: This program cannot be run in DOS mode.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.09.2006 (Вс) 11:25

Внутри какого ехе-шника?
Изображение

Особист
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 122
Зарегистрирован: 10.05.2006 (Ср) 12:46

Сообщение Особист » 03.09.2006 (Вс) 15:21

Внутри любого Win32 - приложения, откомпилированного с помощью Visual Basic. Ну, которое выводится, если запустить под ДОСом...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.09.2006 (Вс) 15:32

И что в нём смущает?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.09.2006 (Вс) 15:57

Особист писал(а):
X-hacker писал(а):а если надо изменить ресурс?Вот например прога 'кстати а в ехе написано:НЕ ПОД ДОС!
может линукс?... :D


Не, только под TR DOS !!! :)
Вообще, балдею с микрофака - нет чтоб написать прямо - "Программа для Виндовс", нет, написали "Не под ДОС" =)
Из серии "Keyboard error or not present -- Press F1 to skip error" :)

Есть такая категория людей: им палец покажи -- смеются.

По теме: если бы они написали прямо "Программа для Виндовс", сразу же возмутились бы многочисленные любители эмуляторов (в том числе и линуховых). Так что имеющаяся надпись полностью обоснованна.

По-моему, совершённый наезд на MS абсолютно беспочвенный. Не иначе, у Pantalone появились последователи.
Изображение


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList