Страница: 1 |
Вот задача: Есть exe читаем его, и пишем в переменную через base64, ну и сразу функцию для перевода назад c base64. Только ненадо указывать на ссылки, чтоб я скачал примеры. Я их уже скачал, некоторые работают, но такие СЛОЖНЫЕ что приям запускать их страшно, а некоторые просто неработают.
Судя по многочисленным последним постам, в секретной лаборатории 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 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 Если же я не прав и твои цели исключительно мирные, тогда рекомендую все-таки разобраться с примерами, сложнее чем есть обычно не пишут. Не лучше бы использовать массив типа Byte? Проще работать, сохранять и нет жестких ограничений длины (в string это имеет место, что для большинства экзешников недопустимо). А не наоборот? Размер string ограничен памятью, которую можно выделить, а Byte, если объявлен - размером массива. Если же не объявлен, надо геморроиться с ReDim... Хотя массив байт, конечно, логичнее, чем string А чего гемориться? Узнаешь размер файла и ReDim'ишь на него. Все просто. А со стрингами всегда была муть - в одной платформе одна максимальная длина, в другой - другая. Кроме того, и строки могут быть разные. Unicode использует два байта на символ, что уже напрягает. В общем, резона нет, если только ты этот файл на экран выводить не собираешься. Да и, честно говоря, VB не особо шустро работает со строками... P.S. С массивом работать придется немного по другому. Т.е. открывать файл как Binary и использовать Put и Get вместо Print и Input. Да все прекрасно работает и со стринг и с байт... Лично я всегда открываю файл как бинари, и считываю в переменную типа стринг... большой разницы нет работать ли со строкой или байтовым массивом, только в первом случае намного удобнее передавать строку (ByRef) еще-ли массив байт, в процедуру... Да конечно, все работать будет. И кому как удобнее. Я, например, массив не передаю в функцию, а объявляю его на уровне контейнера. И, как я уже сказал, все-таки мне удобнее скажем, обратиться к 50-му байту файла как к 50-му элементу массива типа bData(50), чем как к символу строки Mid(sData,50,1), тем более это и в скорости выигрывает. Строки - довольно слабое место VB в плане скорости. За-то, никогда не будет ошибки Out of range... В общем это дело не столько технической стороны дела, сколько привычки и желаемого результата... о, вроде чёт то помогли, надо будет похимичить. P/S/ Вообщето троян пока (временно) отложен, т.к. занят другой прогой, но просто эта фишка будет нужна для многих случаев (да и для трояна тоже), вот и решил спросить. а кстати Sharp, а если я открою в binarry файл и буду читать Get, то точто считается кидать в Str2Hex и унто уже писать в файл? Назад получается аналогично, через binarry, PUT итп... так? Hacker, а зачем такие сложности !? Что-то преобразовывать, чтобы писать ??? Я тут в суть вопроса не вникал, но: >Ну где вы еще видели чтобы в заранее не объявленной длинны строку можно было "засунуть" пару десятков, а может даже сотен, Мб? - В PB тоже можно. CyRax, я имел в виду, различные С, С++, Pascal, Delphi, и т.д. Basic в этом плане рулит Так возьми и каждый байт запиши как hex код (00-FF) никуда пересылать это не нужно, размер строки сущзественной роли не играет (если записать в VB, то можно в несколько строк), и алгоритм сохранения получается простым... Страница: 1 |
Вопрос: Файл в переменную запхнуть
Добавлено: 22.04.04 00:07
Автор вопроса:
HACKER
Ответы
Всего ответов: 14
Номер ответа: 1
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 22.04.04 07:15
,"0") & a
Номер ответа: 2
Автор ответа: LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #2
Добавлено: 22.04.04 17:18
Номер ответа: 3
Автор ответа: Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 23.04.04 05:40
Номер ответа: 4
Автор ответа: LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 23.04.04 08:59
Номер ответа: 5
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 23.04.04 12:54
Номер ответа: 6
Автор ответа: LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 23.04.04 14:36
Номер ответа: 7
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 23.04.04 18:53
> Строки - довольно слабое место VB в плане скорости.
За-то строки - довольно сильное место VB в плане удобства )) Ну где вы еще видели чтобы в заранее не объявленной длинны строку можно было "засунуть" пару десятков, а может даже сотен, Мб?
Номер ответа: 8
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 23.04.04 19:20
Номер ответа: 9
Автор ответа: HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 23.04.04 23:22
Номер ответа: 10
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 24.04.04 00:21
Dim nf As Integer, i As Long: nf = FreeFile
sFileData = String$(LOF(nf), &H0)
Get nf, 1, sFileData
Close nf
Put nf, , sFileData
Close nf
Номер ответа: 11
Автор ответа: @CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #11
Добавлено: 24.04.04 04:44
Номер ответа: 12
Автор ответа: sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 24.04.04 10:49
И 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-сайт:
Профиль | | #14
Добавлено: 24.04.04 18:15