Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
4-1097740755
Виктор
2004-10-14 11:59
2004.11.28
Нарушение доступа по адресу...


8-1093899182
AlexZ
2004-08-31 00:53
2004.11.28
Где бы почитать про GDI, кроме Win32P sR


11-1083127231
earl Grey
2004-04-28 08:40
2004.11.28
HeapMM, KOl и строки


10-1066726234
zxc
2003-10-21 12:50
2004.11.28
возможно ли работа DCOM через Интернет??


4-1097742124
Slonco
2004-10-14 12:22
2004.11.28
Как издать звук через beeper?