Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #57, АВГУСТ 2005 г.

Навесная защита

Bit-hack (bit-hack@mail.ru)

Спецвыпуск: Хакер, номер #057, стр. 057-088-7


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

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

Вот, собственно, и все. Не удивляйся, что к каждому смещению при считывании прибавляется единица - это особенности Visual Basic'а.

Назад на стр. 057-088-6  Содержание