121112
.pdf
ОТЛАДКА БЕЗ ОТЛАДЧИКА
или
DLL INJECTION FOR FUN AND PROFIT
by domi
ПРОБЛЕМЫ ОТЛАДКИ
 Антиотладочные приемы
 Исключения
 Чувствительность к контексту
 Зависимость от внешнего мира
 Искажение результатов 
 Ошибки
ЗАВИСИМОСТЬ ОТ ВНЕШНЕГО МИРА
 Время
 Сетевое общение 
 Донглы
И ЧТО ЖЕ ДЕЛАТЬ?
 Писать скрипты к отладчику 
 Не использовать отладчик
А ЗАЧЕМ НАМ ВООБЩЕ ОТЛАДЧИК?
40% — понять, как мы попадаем в точку кода 40% — посмотреть на регистры/память 10% — изменить регистры/память 10% — понять, кто использует память
ЖИЗНЬ БЕЗ ОТЛАДЧИКА — PRINTF
40% — понять, как мы попадаем в точку кода 40% — посмотреть на регистры/память 10% — изменить регистры/память 10% — понять, кто использует память
ЖИЗНЬ БЕЗ ОТЛАДЧИКА — PRINTF
PROS
 Наш код становится частью исследуемой программы 
 Мы сохраняем 90% функциональности отладчиков
CONS
 Теряем брейкпойнты на памяти
 Трудоемкость 
 Изменение отладки на ходу невозможно
ВНЕДРЕНИЕ СВОЕГО КОДА
  | 
	
  | 
	
  | 
	Было:  | 
|
  | 
	
  | 
	
  | 
	
  | 
|
00402C9F F6 C4 05  | 
	
  | 
	test  | 
	ah, 5  | 
|
00402CA2 7A 07  | 
	58  | 
	
  | 
	jp  | 
	short 00402CAB --+  | 
00402CA4 DD 05  | 
	04 4A 00 fld  | 
	ds:dbl_4A0458 |  | 
||
00402CAA C3  | 
	24  | 
	0C  | 
	retn  | 
	|  | 
00402CAB DD 44  | 
	fld  | 
	[esp+8+arg_0] <--+  | 
||
  | 
	
  | 
	Стало:  | 
	
  | 
|
  | 
	
  | 
	
  | 
	
  | 
|
00402C9F F6 C4 05  | 
	test  | 
	ah, 5  | 
	
  | 
|
00402CA2 7A  | 
	07  | 
	jp  | 
	short 00402CAB --+  | 
|
00402CA4 DD 05 58 04 4A 00 fld  | 
	ds:dbl_4A0458  | 
	|  | 
||
00402CAA D9 FF  | 
	fcos  | 
	
  | 
	<-+  | 
|
00402CAC C3  | 
	
  | 
	retn  | 
	[esp+8+arg_0]  | 
	
  | 
00402CAD DD 44 24 0C  | 
	fld  | 
	
  | 
||
  | 
	00402CAB FF C3  | 
	inc  | 
	ebx  | 
	
  | 
  | 
	00402CAD DD 44 24 0C  | 
	fld  | 
	[esp+8+arg_0]  | 
	
  | 
  | 
	
  | 
	
  | 
	
  | 
	
  | 
ВНЕДРЕНИЕ СВОЕГО КОДА
 Code squeezing
 Call hijacking 
 Jumps
