Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- ' Прочитать файл построчно. Если встретим строку балигн 16, то будем настороже
- ' Читаем следующую строку, если она попадает в список запрещённых слов
- ' то ставим флаг, чтобы строку в файл не писать
- ' далее не пишем строки в файл, пока не встретится ret что?нибудь
- Dim objFSO
- Dim strParam
- Dim objArgs
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- ' Получить параметр программы
- Set objArgs = WScript.Arguments
- For Each strParam In objArgs
- REM WScript.Echo strParam
- ' Открыть файл на чтение, прочитать до конца, закрыть
- Dim objTS
- Set objTS = objFSO.OpenTextFile(strParam)
- Dim strLines
- strLines = objTS.ReadAll
- objTS.Close
- Set objTS = Nothing
- ' Открыть снова на запись
- Set objTS = objFSO.CreateTextFile(strParam)
- ' Разбить строку на массив
- ' Пройтись по массиву
- Dim blnSkipLines
- blnSkipLines = False
- Dim astrLines
- astrLines = Split(strLines, vbCrLf)
- Dim i
- For i = 0 To UBound(astrLines)
- Select Case astrLines(i)
- Case ".balign 16"
- ' Начало, нужно быть готовым
- Select Case astrLines(i + 1)
- Case "_GetCurrentFiber:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_InterlockedCompareExchange64@20:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_IN6_IS_ADDR_UNSPECIFIED:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_IN6_IS_ADDR_LOOPBACK:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_IN6_IS_ADDR_MULTICAST:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_IN6_SET_ADDR_UNSPECIFIED:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case "_IN6_SET_ADDR_LOOPBACK:"
- ' Ставим флаг, что строку нужно пропустить
- blnSkipLines = True
- Case Else
- ' Записываем
- objTS.WriteLine(astrLines(i))
- End Select
- Case "ret", "ret 20"
- If blnSkipLines Then
- ' Снимаем флаг и пропускаем эту строку
- blnSkipLines = False
- Else
- objTS.WriteLine(astrLines(i))
- End If
- Case Else
- ' Пишем строку, только если разрешено
- If Not blnSkipLines Then
- objTS.WriteLine(astrLines(i))
- End If
- End Select
- Next
- ' Закрыть файл
- objTS.Close
- Set objTS = Nothing
- Next
- Set objArgs = Nothing
- Set objFSO = Nothing
Add Comment
Please, Sign In to add comment