Команды SoftIce

Материал из Справочник исследователя программ
Перейти к навигацииПерейти к поиску

Не могли бы вы написать команды SoftIce'а, необходимые при исследовании программ?

Вот те команды, которые вам понадобятся:

1) "bpx function_name" или "bpx address" - установка <a href="#bpx">брейкпоинта</a> на вызов определенной функции или выполнения команды по определенному адресу. Примеры: "bpx MessageBoxA", "bpx 401000". (Здесь и далее двойные кавычки при вводе команд в SoftIce писать не надо).

2) "bpm address x" - аналогично первому пункту. Примеры: "bpm 401000 x", "bpm MessageBoxA x".

3) "bpm address" - установка брейкпоинта на запись или чтение данных с определенного адреса. Пример: "bpm 450768".

4) "bl" - показать список установленных брейкпоинтов

5) "bc nomer_breakpointa_v spiske" - удалить брейкпоинт. Примеры: "bc 0", "bc 2 4 6", "bc *" (удалить все).

6) "bd nomer_breakpointa_v spiske" - выключить брейкпоинт, не удаляя его.

7) "be nomer_breakpointa_v spiske" - включить брейкпоинт

8) "db address", "dw address", "dd address" - показать участок памяти начиная с указанного адреса и отделять участки памяти друг от друга соответственно по байту, двум байтам, четырем байтам. Примеры: "dd 450000", "dd esp", "db 401000", "dw ebx".

9) "eb (ew или ed) address newbytes" - изменить значение в памяти по указанному адресу. Примеры: "eb eip 55" - записать байт 55 по адресу хранящемуся в регистре eip, "eb MessageBoxA c3" - записать байт C3 по адресу первого байта функции MessageBoxA, "eb MessageBox+5 c3" - записать байт C3 по адресу функции MessageBoxA+5, "ed 412345 AABBCCDD" - записать 4 байта DDCCBBAA по адресу 412345 (запишутся в обратном порядке, т.е. по адресу 412345 окажется DDCCBBAA. Аналогично байты запишутся в обратном порядке при использовании ew например).

10) "u address" или "u function_name" - показать ассемблерный листинг программы начиная с адреса "address" или адреса функции "function_name". Примеры: "u 401000", "u MessageBoxA".

11) "r register newbytes" - записать новое значение в регистр. Примеры: "r al 1", "r eax 12FF", "r eip 494EA6".

12) "r fl flagname" - инвертировать значение <a href="#flag">флага</a>. Пример: "r fl z" - изменить значение флага нуля на противоположное.

13) "addr PID" или "addr process_name" - сделать адресное пространство указанного процесса текущим. Чтобы узнать ID процесса (PID) или имя процесса, наберите просто команду "addr" и смотрите в списке. Примеры: "addr 130", "addr blueface". Данная команда используется когда нужно установить брейкпоинт на определенный адрес в программе или посмотреть определенный участок памяти программы (т.е. сначала делаем адресное пространство нужного процесса текущим, а потом делаем что хотим).


А почему в SoftIce так надо писать - s 0 l -1 "что_найти" ?

 s - означает поиск, от слова search.
 0 - c какого адреса в памяти искать
 l - сокращение от слова length (длина)
-1 - размер области памяти в которой искать (-1 = FFFFFFFF)

А если существует несколько искомых строк, как продолжить поиск, что-то типа "найти далее"?

После того, как нашли первый раз, вводите просто "s" для продолжения поиска.