ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
19 мая
213657
++ (01.10.2010 12:07, просмотров: 690)
IDA. x86.  Как переместить (не копировать) сегмент данных. Загрузил файл. Создал сегмент 0xf000 Запустил макрос Код:
// Listing 2.2. IDA Pro Code Relocation Script 
#include <idc.idc> 
// Relocate one segment 
static relocate_seg(src, dest) 
{ 
      auto ea_src, ea_dest, hi_limit; 

      hi_limit = src + 0x10000; 
      ea_dest = dest; 
      for(ea_src = src; ea_src < hi_limit ; ea_src = ea_src + 4 ) 
      {PatchDword( ea_dest, Dword(ea_src)); 
       ea_dest = ea_dest + 4; 
      } 
 Message("segment relocation finished(inside relocate_seg function)...\n"); 
} 

static main() 
{Message("creating target segment(inside entry point function main)...\n"); 
 AddSeg([0xF000, 0], [0x10000, 0], 0xF000, 0, 0, 0); 
 RenameSeg([0xF000, 0], "_F000"); // Give a new name to the segment. 
 relocate_seg([0x0000, 0x00000], [0xF000, 0]); 
} 
- Копировал сегмент 0 в 0xf000. Из выпадающего меню view->segments удалил сегмент 0. Данные из сегмента осались и видны серым в окне IDA (слева адрес без указания сегмента). Как удалить данные, что были в сегменте 0, чтобы они остались в сегменте f000?
++