как в Сисере ставить условные бряки? я так поставил: >bpx SendMessageA IF *(esp+8)==WM_GETTEXT то а он пишет: Error : Invalid condition string ! и еще вопрос: в Оле невозможно ставить условные бряки на процессы в стандартном Вин калькуляторе, антиотладка? пишет, что невозможно читать память отлаживаемого процесса. бряк на такой-то адресс удален. помогите разобраться
с олей кое-что прояснилось - процесс (все процы) находятся вне секции кода(такое возможнл? если допустим происходит динамическая загрузка библиотек?). я ламер - не пинать!)
n0name точно! установил бряк с числовыми индентификаторами. Установил... но нажимаю F5, ввожу в editbox: число(n) знак(*/+-) число(m) и нажимаю =... бряк не сработал ни разу, следовательно считывание осуществляется без мессаг, А с помощью апи. там используется интересная функция: GetWindowTextW, но Оля не может поставить на неё брикпоинт. Щас Сисером попробую. Кстати, чтоб к Оле постоянно не обращаться, как в сисере просматривать таблицу импорта, просматривать и ставить точки останова на текущие процессы? Syser Command Reference умалчивает об этом. все команды кратко объясняются если перейти по одноименной ссылке, ссылка на PROC не работает! другой документации нет(
ёп! getwindowtextw тоже не дает результатов. зато без всяких бряков отладчик сплывает когда делишь на нуль! Код (Text): 7C812A29 > 8BFF MOV EDI,EDI 7C812A2B 55 PUSH EBP 7C812A2C 8BEC MOV EBP,ESP 7C812A2E 83EC 50 SUB ESP,50 7C812A31 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8] 7C812A34 8365 B8 00 AND DWORD PTR SS:[EBP-48],0 7C812A38 8945 B0 MOV DWORD PTR SS:[EBP-50],EAX 7C812A3B 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C] 7C812A3E 56 PUSH ESI 7C812A3F 8B75 14 MOV ESI,DWORD PTR SS:[EBP+14] 7C812A42 83E0 01 AND EAX,1 7C812A45 85F6 TEST ESI,ESI 7C812A47 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX 7C812A4A C745 BC 292A817C MOV DWORD PTR SS:[EBP-44],kernel32.Raise> 7C812A51 0F84 99000000 JE kernel32.7C812AF0 7C812A57 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10] 7C812A5A 83F9 0F CMP ECX,0F 7C812A5D 0F87 9D1D0300 JA kernel32.7C844800 7C812A63 85C9 TEST ECX,ECX 7C812A65 894D C0 MOV DWORD PTR SS:[EBP-40],ECX 7C812A68 74 07 JE SHORT kernel32.7C812A71 7C812A6A 57 PUSH EDI 7C812A6B 8D7D C4 LEA EDI,DWORD PTR SS:[EBP-3C] 7C812A6E F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS> 7C812A70 5F POP EDI 7C812A71 8D45 B0 LEA EAX,DWORD PTR SS:[EBP-50] 7C812A74 50 PUSH EAX 7C812A75 FF15 0815807C CALL DWORD PTR DS:[<&ntdll.RtlRaiseExcep>; ntdll.RtlRaiseException 7C812A7B 5E POP ESI ; msvcrt.77C014BC 7C812A7C C9 LEAVE 7C812A7D C2 1000 RETN 10 но где функция проверки, вычисления, отображения чисел и выражений???
#но где функция проверки, вычисления, отображения чисел и выражений??, та процедура, на которой всплывает отладчик, является вложенной в другую, та, в свою очередь, вложена в третью. Нужно развернуть эти две функции, чтобы попасть в основную, производящую расчеты и определяющую действие(деление) функцию. Дальше - смотря что нужно. Довольно просто обмануть его с делением на ноль. Немного выше (после развертки двух функций) - два теста(TEST param1, param2). Если поменять под ним условный переход на безусловный, то калькулятор будет проглатывать нули как остальные числа