Автор вопроса: JacK | Web-сайт:idiot.ru | ICQ: 9580088
Хочу сделать программу, которая будет пережёвывать бинарники в hex-строку.
Реально ли это?
Нифига не получается))
Моя ахинея:
f = FreeFile
Open "c:\msg.exe" For Binary As f
Data = Input(LOF(f), f)
Close f
Dim HexDat() As Byte
ReDim HexDat(LenB(Data))
For I = 0 To LenB(Data)
HexDat(I) = Hex((MidB(Data, I, 4)))
Next
Оно и не удивительно, что не получается!
1. Походу надо читать не по-байтам а по-битам)) И как получить двухсимвольные коды байтов?
2. Даже если получится считывать по 4-е бита как их конвертировать в hex? Функция hex - работет с десятиричными, следовательно нужно переводить в десятичную а только потом в хекс, или можно миновать эту процедуру?
У Шарпа как раз все правильно было И нафиг тут контроль ошибок? И еще. Не рекомендую использовать переменные типа Variant. Тем более, писать в них то строки, то целые числа
И ещё...
Чё это за бочина такая?
В конец файла добавляется фигова туча нулей, кратных размеру программе, которых там быть не должно!
Например: прога весит 2,5 кб - в хекс должно получится 5 кб а получается 7,5 кб
Причём 2,5 последних кб составляют "00"
Ещё - прога весит 11кб - в хекс должно получится 22кб а получается 33кб - аналогично))
Конвертирует правильно, собирал файл - работает, в самом коде всё впорядке, но дабавляются лишнее нулевые блоки)
Потом, что ты вообще хочешь? Ты читаешь 1 символ, получаешь его ASC-код, берешь эту цифру (цифру ASC_кода) в 16ричной системе и пишешь куда то еще. Это вообще зачем делать-то надо, бред такой? Если ты не знал, то на жестком диске буква "A" занимает 1 байт, ее ASC-код (97 помоему), занимает 1 байт, его 16ричное представление, "61", занимает уже 2 байта, как строка, и ты ее пиешь в файл. Это просто тупо бессмысленно, сначала пойми, что ты вообще хочешь, а так же почитай профайловые системы ><
Га га га))
За лоха меня держишь? Я чё, тупил где-то, или мой вопрос кажется тупым?
Поясняю:
1. Мне часто приходится делать асм-вставки, или просто обьеденять программы.
Hex-код можно сразу в память загнать.
Конечно я пользуюсь хекс-редактором, но в целях самообразования и (в некоторых случаях) упрощения процесса выдирание кода, пишу эту фигню.
2. Делаю примитивный джойнер на VB, который использует эту функцию)
3. Это можно использовать как примитивный вид шифрования. Например, разбить hex на слова, делить каждое слово на F, вычесть что нибудь, умножить и т.д.
4. Это можно использовать в деструктивных целях.
На хекс не кричит антивирус, его легко передать, это ведь не исполняемый файла, его можно запустить.
Спектр применения широк, и ограничивается твоей фантазией.
Dim f As Long
Dim res As String
Dim s As String
Dim d As Long
Dim data As String
Dim i As Long
Private Sub Command1_Click()
f = FreeFile
res = ""
Open "c:\msg12.exe" For Binary As f
data = Input(LOF(f), f)
Close f
For i = 1 To LenB(data)
s = Mid(data, i, 1)
d = Asc(s)
On Error Resume Next
d = Hex(s)
If Len(s) < 2 Then s = "0" & d
res = res & d
Next i
Open "C:\msg12.txt" For Append As #f
Print #f, res
Close #f
End Sub
И чё вы так приколебалиськ переменным?
Да гавно этот код, я же говорю, лишние зеро- блоки впаривает) При сборке программы это сказывается, прога в 1,5 раза тяжелее становится.
Пункт 4 - Имею ввиду передачу данных через интрернет.
Суть: правлю скрипт страницы так, что она сохраняет(с моего сайта) хекс-код вируса. А загрузчик его либо запускает либо ковертит в бинарник и снова таки запускает.
Смысл в том, что закачка текстового файла, через интернет, не является блэкдуром.
Также можно написать скрипт, который будет получать с моего сайта хекс, конвертит в бинарник и запускать.