Win32ASM Консольный ввод, томограф IDA и скальпель SoftICE

  d8ef8794     

Выбираем "s", то бишь "переопределить


Обратите внимание вот на что:
  Когда переменные были помечены как unk_403000, unk_403011 и unk_40301D, то обращение к ним осуществлялось следующим образом: ... .text:00401009 push offset unk_40301D ; lpConsoleTitle ... .text:0040102B push offset unk_403000 ; lpBuffer ... .text:0040106D push offset unk_403011 ; lpBuffer ...

  Когда мы переопределили данные из байтовых в строковые, то Ида переобозвала переменные в aTypeSomething, aYouTyped и aInputOutput, а обращение стало производиться уже к совершенно другим "именам собственным".
  А вот если бы мы переопределили данные начиная не с последней метки, а с первой, то получилась бы строка: .data:00403000 aTypeSomethingY db 'Type something > You typed > Input & Output',0

  А обращение к ней осуществлялось бы вот как: ... .text:00401009 push (offset aTypeSomethingY+1Dh) ; lpConsoleTitle ... .text:0040102B push offset aTypeSomethingY ; lpBuffer ... .text:0040106D push (offset aTypeSomethingY+11h) ; lpBuffer ...

  Как я уже говорил, на сегодняшний день не существует ни одного полностью автоматического дизассемблера, способного генерировать безупречно работоспособный листинг (вырожденые примеры наподобие нашего - не в счет), поэтому в той или иной мере, но доводить его готовности приходится человеку. Что мы помаленьку и будем учиться делать.

  За сим будем считать что первое знакомство с Идой состоялось, а в качестве домашнего задания - попробуйте диассемблировать нашу программу Sourcer'ом и WinDASM'ом, чтобы, как говориться, почувствовать разницу ;)
  Медитируйте!



Содержание раздела