Навесная защита 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'а. |