Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Файл в переменную запхнуть Добавлено: 22.04.04 00:07  

Автор вопроса:  HACKER

Вот задача: Есть exe читаем его, и пишем в переменную через base64, ну и сразу функцию для перевода назад c base64. Только ненадо указывать на ссылки, чтоб я скачал примеры. Я их уже скачал, некоторые работают, но такие СЛОЖНЫЕ что приям запускать их страшно, а некоторые просто неработают.

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 22.04.04 07:15

Судя по многочисленным последним постам, в секретной лаборатории HACKER выращивает супермегатрояна? Если да и ты хочешь сделать пересылку ехешника врагу, то не парься с BASE64, вполне подойдет банальный HEX, т.е.:

private function Str2Hex(s) as string

for i=1 to len(s)

a=hex(mid(s,i,1))

str2hex = str2hex & string(2-len(a),"0") & a

next

end function

и обратно

private function Hex2Str(s) as string

for i=1 to len(s)\2

a1=asc(mid(s,i*2-1,1))

a2=asc(mid(s,i*2,1))

a1n=iif(a1>=asc("A"),a1-asc("A")+10,a1-asc("0"))

a2n=iif(a2>=asc("A"),a2-asc("A")+10,a2-asc("0"))

hex2str=hex2str & chr(a1*16+a2)

next

end function

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

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 22.04.04 17:18

Не лучше бы использовать массив типа Byte? Проще работать, сохранять и нет жестких ограничений длины (в string это имеет место, что для большинства экзешников недопустимо).

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 23.04.04 05:40

А не наоборот? Размер string ограничен памятью, которую можно выделить, а Byte, если объявлен - размером массива. Если же не объявлен, надо геморроиться с ReDim... Хотя массив байт, конечно, логичнее, чем string

Ответить

Номер ответа: 4
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #4 Добавлено: 23.04.04 08:59

А чего гемориться? Узнаешь размер файла и ReDim'ишь на него. Все просто. А со стрингами всегда была муть - в одной платформе одна максимальная длина, в другой - другая. Кроме того, и строки могут быть разные. Unicode использует два байта на символ, что уже напрягает. В общем, резона нет, если только ты этот файл на экран выводить не собираешься. Да и, честно говоря, VB не особо шустро работает со строками...

P.S. С массивом работать придется немного по другому. Т.е. открывать файл как Binary и использовать Put и Get вместо Print и Input.

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 23.04.04 12:54

Да все прекрасно работает и со стринг и с байт... Лично я всегда открываю файл как бинари, и считываю в переменную типа стринг... большой разницы нет работать ли со строкой или байтовым массивом, только в первом случае намного удобнее передавать строку (ByRef) еще-ли массив байт, в процедуру...

Ответить

Номер ответа: 6
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #6 Добавлено: 23.04.04 14:36

Да конечно, все работать будет. И кому как удобнее. Я, например, массив не передаю в функцию, а объявляю его на уровне контейнера. И, как я уже сказал, все-таки мне удобнее скажем, обратиться к 50-му байту файла как к 50-му элементу массива типа bData(50), чем как к символу строки Mid(sData,50,1), тем более это и в скорости выигрывает. Строки - довольно слабое место VB в плане скорости.

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 23.04.04 18:53

За-то, никогда не будет ошибки Out of range... В общем это дело не столько технической стороны дела, сколько привычки и желаемого результата...

> Строки - довольно слабое место VB в плане скорости.
За-то строки - довольно сильное место VB в плане удобства :))) Ну где вы еще видели чтобы в заранее не объявленной длинны строку можно было "засунуть" пару десятков, а может даже сотен, Мб?

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 23.04.04 19:20

о, вроде чёт то помогли, надо будет похимичить.

P/S/ Вообщето троян пока (временно) отложен, т.к. занят другой прогой, но просто эта фишка будет нужна для многих случаев (да и для трояна тоже), вот и решил спросить.

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 23.04.04 23:22

а кстати Sharp, а если я открою в binarry файл и буду читать Get, то точто считается кидать в Str2Hex и унто уже писать в файл? Назад получается аналогично, через binarry, PUT итп... так?

Ответить

Номер ответа: 10
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 24.04.04 00:21

Hacker, а зачем такие сложности !? Что-то преобразовывать, чтобы писать ??? Я тут в суть вопроса не вникал, но:

Dim nf As Integer, i As Long: nf = FreeFile

 

Open lpFilename For Binary Access Read As nf
sFileData = String$(LOF(nf), &H0)
Get nf, 1, sFileData
Close nf

 

Open lpFilename For Binary Access Write As nf
Put nf, , sFileData
Close nf

 

В качестве аргументов в обоих случаях используется строка...

Ответить

Номер ответа: 11
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #11
Добавлено: 24.04.04 04:44

>Ну где вы еще видели чтобы в заранее не объявленной длинны строку можно было "засунуть" пару десятков, а может даже сотен, Мб?

- В PB тоже можно.

Ответить

Номер ответа: 12
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #12
Добавлено: 24.04.04 10:49

CyRax, я имел в виду, различные С, С++, Pascal, Delphi, и т.д. Basic в этом плане рулит :) И PB в том числе :)

Ответить

Номер ответа: 13
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 24.04.04 16:15
ладно, объясняю ситуацию. Запускается моя прога, а в коде этой проги (моей) в переменной сидит ещё одна прога, моя из этой переменной делает рабочую программу и запускает её. Это конечно тупо, но надо именно так! Поэтому нужно зделать так чтоб был обычный ASCII текст, т.е. чтоб даже в блоконотике можно было пересахронить, потом через прогу разшифровать и оно работало! Вот и думаю толи с base64 делать, или вот HEX подсказали.

Ответить

Номер ответа: 14
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #14
Добавлено: 24.04.04 18:15

Так возьми и каждый байт запиши как hex код (00-FF) никуда пересылать это не нужно, размер строки сущзественной роли не играет (если записать в VB, то можно в несколько строк), и алгоритм сохранения получается простым...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам