Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

VB to Delphi   Найти похожие ветки 

 
Neiron   (2004-11-16 20:19) [0]

Уважаемые мастера,у меня к вам вопрос, как можно перевести следующий код с VB в Pascal:

Public Type pe_section_header
   section_name As String * 8 " Имя секции [8 байт]
   section_size As Long       " Размер секции в памяти
   section_rva As Long        " Адрес загрузки секции в памяти
   section_size2 As Long      " Размер секции в файле
   section_start As Long      " Смещение начала секции в файле
   reserved As String * 12
   section_flags As Long      " Флаги секции
End Type

Public Type UPX_STRUCT
   upxMagic As String * 4     " Символы "UPX!"
   upxVersion As Byte         " Версия UPX"а (например: 0C значит 1.24, 0D - 1.90)
   upxFormat As Byte          " Определяет формат файла (PE, ELF, DOS и т.д.) PE - 09
   upxMethod As Byte          " Метод сжатия (если NRV или UCL, то 02)
   upxLevel As Byte           " Степень сжатия (от 0 до 10)
   upxU_adler As Long         " CRC части экзешника в распакованном виде
   upxC_adler As Long         " CRC части экзешника в запакованном виде
   upxU_len As Long           " Размер части экзешника в распакованном виде
   upxC_len As Long           " Размер части экзешника в запакованном виде
   upxU_file_size As Long     " Размер распакованного экзешника.
   upxFilter As Integer       " Метод распаковки
   upxCRC As Byte             " CRC сигнатуры
End Type

"глобальный массив секций
Public sSections() As pe_section_header

Private Sub Main()
"считываем данные из командной строки
sFileName = Command$
"если программа была запущена без параметров - выводим сообщение
"об ошибке и выходим
If sFileName = "" Then MsgBox "Вы не передали имя файла в командной строке", _
vbCritical, "Ошибка": Exit Sub
"удаляем лишние кавычки
If Left$(sFileName, 1) = Chr(34) Then sFileName = Mid$(sFileName, 2, _
Len(sFileName) - 2)
"объявляем переменные
Dim sPeOffset As Long, sFindUPX As String * 5000, sUPX As UPX_STRUCT, _
sNumberSections As Integer
"создадим резервную копию
FileCopy sFileName, Left$(sFileName, Len(sFileName) - 3) & "bak"
"откроем файл
sFile = FreeFile
Open sFileName For Binary As #sFile
"считаем адрес PE заголовка
Get #sFile, &H3C + 1, sPeOffset
"определим число секций
Get #sFile, sPeOffset + 7, sNumberSections
"найдем адрес начала описания секций
sSectionsStart = sPeOffset + &HF9
"ищем сигнатуру UPX в первых 5000 байт программы
Get #sFile, 1, sFindUPX
sFind = InStr(1, sFindUPX, "UPX!")
"если нашли - грузим
If sFind > 0 Then
 Get #sFile, sFind, sUPX
 "заполняем все поля ерундой
 sUPX.upxMagic = "GPcH": sUPX.upxVersion = 0
 sUPX.upxC_adler = 0: sUPX.upxC_len = 0
 sUPX.upxCRC = &HFF: sUPX.upxFilter = 0
 sUPX.upxFormat = 0: sUPX.upxMethod = 0
 sUPX.upxU_adler = 0: sUPX.upxU_file_size = 0
 sUPX.upxU_len = 0: sUPX.upxVersion = 11
 "сохраняем изменения
 Put #sFile, sFind, sUPX
"если не нашли - выводим сообщение об ошибке и выходим
Else
 MsgBox "Ошибка: файл "" & sFileName & "" не содержит сигнатуру UPX", _
 vbCritical, "Скрамблер UPX": Close #sFile: Exit Sub
End If
"создаем массив секций
ReDim sSections(sNumberSections - 1)
Get #sFile, sSectionsStart, sSections
"установим новое имя секций
For i = 0 To sNumberSections - 1
 sSections(i).section_name = ".sux"
Next
"сохраним измененные данные
Put #sFile, sSectionsStart, sSections
"закроем файл
Close #sFile
"сообщим, что операция прошла успешно
MsgBox "Файл "" & sFileName & "" успешно обработан", vbInformation, "Скрамблер UPX"
End Sub


Или если кто знает,где можно достать материал для Delphi.


 
KilkennyCat ©   (2004-11-16 20:53) [1]

100 баксов.


 
novice_man ©   (2004-11-16 20:56) [2]

Гражданин в третьем ряду слева от блондинки 100 баксов раз!


 
KilkennyCat ©   (2004-11-16 20:58) [3]

а в какую сторону будет меняться?


 
begin...end ©   (2004-11-16 20:59) [4]

Апчх**! (Аллергия на Бейсик)


 
novice_man ©   (2004-11-16 21:01) [5]

Гражданин в третьем ряду слева от блондинки 100 баксов два!


 
KilkennyCat ©   (2004-11-16 21:02) [6]

110 баксов, я не заметил:


> "заполняем все поля ерундой


 
novice_man ©   (2004-11-16 21:07) [7]

А если найдут - "если нашли - грузим" :)


 
KilkennyCat ©   (2004-11-16 21:08) [8]


> в первых 5000 байт


тоже прикольно.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
1-1100527259
aap
2004-11-15 17:00
2004.11.28
Cоздание Hint-а как в Win XP.


14-1100100839
}|{yk
2004-11-10 18:33
2004.11.28
Наконец-то вышел Firefox 1.0


3-1099023202
sanek
2004-10-29 08:13
2004.11.28
как сложить цифровые данный из разных ячеяк таблици


6-1096011322
Alexander_PK
2004-09-24 11:35
2004.11.28
Как програмно открыть досупт на папку в сети


14-1100268960
Kerk
2004-11-12 17:16
2004.11.28
каллосокер go home!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский