Вопчем при добавлении в код функции GetLastError OllyDbg при дебаге выдает какуюто непонятную дребедень,ассемблерный код,в котором нет никакого намека на те функции которые используются в программе.Если убрать GetLastErro то все дебагится нормально и код овыглядит нормально. В чем фишка?
P,eax Code (Text): invoke CreateFile,FilePathP,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL mov FileHandle,eax invoke GetFileSize,FileHandle,NULL mov FileSize,eax lea eax,NOBR mov NOBRP,eax mov dword ptr IncBuf.StartingVcn,NULL mov ClusterSize,10 mov edx,FileSize shr edx,16 mov eax,FileSize shl eax,16 shr eax,16 mov ebx,ClusterSize div ebx mov edx,sizeof OutBuf.Extents mul edx add eax,sizeof RETRIEVAL_POINTERS_BUFFER mov ebx,eax invoke malloc,ebx mov OutBuf,al mov dword ptr IncBuf.StartingVcn,NULL invoke DeviceIoControl,FileHandle, FSCTL_GET_RETRIEVAL_POINTERS, addr IncBuf,sizeof IncBuf, addr OutBuf,sizeof OutBuf,NOBRP,NULL invoke GetLastError <----- вот ента функция создает неприятности :) .if eax==NULL invoke Beep,4000,100 .endif ret WinMain endp malloc proc dwBytes:DWORD option PROLOGUE:NONE option EPILOGUE:NONE invoke GetProcessHeap invoke HeapAlloc, eax, 0, [esp+4] ret (sizeof DWORD) option PROLOGUE:PROLOGUEDEF option EPILOGUE:EPILOGUEDEF malloc endp end start
весьма занятное у тебя начало по адресу 7c901000. кажется, это начало секции кода ntdll.dll, насколько я помню по памяти
еще когда с GetLastError открываю exe файл,то пишет It looks like you are trying to set breakpoint on the data.