2013-11-20 4 views
0

В настоящее время я выполняю курс python через Security Tube. Я в настоящее время застрял в одном модуле, где мне нужно запустить скрипт Python через XP и выполнить его через Immunity Debugger с процессом перед ним.Security Tube Python Scripting Expert

Вот код:

#!/usr/bin/python2.7 

import immlib 

DESC="Find Instructions" 

def main(args) : 

    imm = immlib.Debugger() 

    assembledInstruction = imm.assemble (' ' .join(args)) 

    if not assembledInstruction : 
     return "[-] No Instruction Given!" 

    addressList = imm.search(assembledInstruction) 

    td = imm.createTable("Instruction Locations", ['Module', 'Base Address', 'Instruction Address', 'Instruction'] 

    for address in addressList : 
     # Get module for this address 
     module = imm.findModule(address) 
     if not module: 
      imm.log("Address 0x%08X not in any module" %address) 

    # Get module object by name. Please note we are not checking for page properties. 
    # exercises? :) 

    instruction = '' 

    numArgs = len(' '.join(args).split('\n')) 

    for count in range(0, numArgs) : 
     instruction += imm.disasmForward(address, nlines=count).getDisasm() + '' 

    td.add(0, [ module[0], 
       str('0x%08X'%module[1]) 
       str('0x%08X'%address), 
       instruction 
       ]) 

Я сохранил файл .py как spse-find.py. Оттуда я запишусь на свой XP через Virtual Box, откройте Immunity Debugger, запустите Server-strcpy.exe. В нижней части программы, я печатаю:

!spse-find jmp ecp 

Но при этом выполняется я получаю следующее сообщение об ошибке:

pycommands: error importing module. 

Я поместил это в форумах трубной безопасности, но единственной, мне сказали, что я должен проверить синтаксис кода, чтобы убедиться, что он правильный, и чтобы я правильно следил за видео. Я сделал проверки не менее 4 или 5 раз. С тех пор я не получил от них никаких дальнейших ответов, и поэтому мне было интересно, сможет ли кто-нибудь дать мне какое-либо представление о том, где я ошибся, или куда нужно добавить еще код.

ответ

0

Запуск кода, я получаю SyntaxError:

C:\Users\kevin>test.py 
    File "C:\Users\kevin\test.py", line 20 
    for address in addressList : 
          ^
SyntaxError: invalid syntax 

Это сообщение вводит в заблуждение, потому что строка не содержит ошибок. Но иногда номер строки сообщения отключен на один, поэтому давайте посмотрим на предыдущую строку:

td = imm.createTable("Instruction Locations", ['Module', 'Base Address', 'Instruction Address', 'Instruction'] 

Это синтаксическая ошибка. Вам не хватает закрывающей круглой скобки. Оно должно быть:

td = imm.createTable("Instruction Locations", ['Module', 'Base Address', 'Instruction Address', 'Instruction']) 

снова Запуск программы, мы получаем:

C:\Users\kevin>test.py 
    File "C:\Users\kevin\test.py", line 38 
    str('0x%08X'%address), 
    ^
SyntaxError: invalid syntax 

Это еще одна красная сельдь. Вы забыли запятой в строке 37.

  str('0x%08X'%module[1]) 

Должно быть

  str('0x%08X'%module[1]), 

Это должно исправить все свои ошибки синтаксиса. (Я не могу ручаться за правильность программы во время выполнения, однако, поскольку у меня нет библиотеки immlib.)

+0

Спасибо за помощь.Мне удалось исправить все ошибки синтаксиса, но в нижней части программы, он читает: «Нераспознанный PyCommand» – user3009230

0

Использование отладки иммунитета затруднено для выяснения того, что происходит. Лучший способ - вызвать pycommand без расширения .py. То есть, если ваш pycommand правильно помещен в папку PyCommands и называется «example.py», используя панель команд в нижней части графического интерфейса, вы должны вызвать pycommand следующим образом:! Example -> вместо ! example.py. Второй вариант скомпилирует код и просто скажет вам, что что-то не так, первый проведет анализ содержимого и сообщит вам строку, которая вызывает сбой сценария.

Надеюсь, это поможет.

С уважением.