читаю "Введение в крэкинг с нуля, используя OllyDbg - (глава 14)", есть некоторые нипонятки. 1)Почему программы всегда должны загружаться с 0040100. 2)В чем разница между тем когда не запустив программу ставишь точку останова, и когда программа уже запущена?(именно глава 14).
1) не все. Другое дело компиляторы делают именно так, но можно поменять. смотри структуру PE 2) А разница есть? не замечал.
Логика программы может не предусматривать цикличное выполнение участка кода, внутри которого брэкпоинт. А значит останова может никогда не произойти
1)PE ??? хоть я его в олли видел но не знаю... a зачем он нужен? 2)установив до запуска программы брекпоинт программа запустившись останавливается именно на 00401000, а запустив программу и установив брекпоинт программа останавливается в другом месте в чем именно и понятно, но там(в уроке надо было установить брек на вход на сегмент кода),отсюда и вопрос почему мы установили брек после запуска программы если нам нужнен был брек на вход сегмента кода.
1) http://wasm.ru/article.php?article=1002001 2) При загрузке программы мы и так оказываемся на точке входа (EP). Если во время выполнения программы поставить бряк на секцию кода то ты окажешся где угодно либо в WindowProc либо msg_loop своей программы.
тханх, не заметил... буду читать... А как быть насчет 20 главы, не понятны такие понятия как логические адреса, хандлы и ПИД`ы (Хоть я знаю что-такое хандлы и пиды но не знаю отличия между ними).
Europa PID - process ID Это число и используется только в определенных местах. Handle у процесса тоже есть, это тоже число, но скорее все-таки указатель и чаще применяется для окон и прочего...
valterg Число e - это тоже число, и тоже используется в определенных местах. И Ваш рост - тоже число, и как ни странно, есть определенные места, где оно используется. Вывод: PID, e, и Ваш рост согласно вышеприведенным определениям - одно и то же. Europa Я знаю, что такое стул и что такое яблоко, но вот разницы между ними не вижу. А если серьезно, то PID - идентификатор процесса, a) действительный в контексте всей операционной системы. b) Присваивается каждому процессу в момент создания и валиден до момента уничтожения процесса. c) Единственный для данного процесса в контексте всей операционной системы. Один процесс - один PID (взаимнооднозначное соответствие). Хэндл процесса (например, процесса A) - идентификатор, a) действительный только в контексте конкретного процесса (например, процесса B) и определяющий права доступа (и некоторые другие характеристики: например, наследуемость хэндла другими процессами) процесса B по отношению к процессу A при использовании процессом B хэндла процесса A. A и B могут быть одним и тем же процессом. b) Хэндл процесса A создается только по запросу процесса B (DuplicateHandle, используемый другим процессом по отношению к процессу B или наследование хэндла процессом B в момент его создания от родительского процесса - исключения из данного правила) и закрывается в момент уничтожения процесса B или по запросу процесса B. c) Процесс B может иметь множество хэндлов процесса A с одинаковыми или различными правами доступа.
Идентефицировать процесс по имени так же трудно, как идентефицировать людей по именам. PID - это отпечаток пальца процесса, он унекален. PID - Process Identeficator. Handle - это описатель какого либо открытого объекта в ОС.