имею код
собственно логика понятна, выделяем кусок памяти, делаем PAGE_GUARD и вызываем его, делая исключение. Вопрос: как попасть на обработчик прерывания, который устанавливается программой? я делал так: ставлю аппаратную точку останова на обработчик (00404B00), затем в ольке отключаю обработку всех исключений, F9 и олька все равно стопорится на вызове CALL DWORD PTR SS:[LOCAL.8]. Не вопрос, думаю я, затем иду на обработчик и New origin here, но какаказалось на стеке нет информации об исключении и все уходит в небытие... Как побороть? скрин настроек олиCode:CPU Disasm Address Hex dump Command Comments 0040B960 /$ 55 PUSH EBP ; Abduction_Crackme_new.0040B960(guessed void) 0040B961 |. 8BEC MOV EBP,ESP 0040B963 |. 6A FE PUSH -2 0040B965 |. 68 60F94000 PUSH OFFSET 0040F960 0040B96A |. 68 004B4000 PUSH 00404B00 0040B96F |. 64:A1 0000000 MOV EAX,DWORD PTR FS:[0] 0040B975 |. 50 PUSH EAX 0040B976 |. 83C4 EC ADD ESP,-14 ; тут еще немного всякой чепухи 0040B9AE |. 6A 04 PUSH 4 ; /Protect = PAGE_READWRITE 0040B9B0 |. 68 00100000 PUSH 1000 ; |AllocType = MEM_COMMIT 0040B9B5 |. 68 00000100 PUSH 10000 ; |Size = 65536. 0040B9BA |. 6A 00 PUSH 0 ; |Address = NULL 0040B9BC |. 8B35 30E04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.Virtual ; | 0040B9C2 |. FFD6 CALL ESI ; \KERNEL32.VirtualAlloc 0040B9C4 |. 8945 E0 MOV DWORD PTR SS:[LOCAL.8],EAX 0040B9C7 |. C600 C3 MOV BYTE PTR DS:[EAX],0C3 0040B9CA |. 8945 E0 MOV DWORD PTR SS:[LOCAL.8],EAX 0040B9CD |. FF75 DC PUSH DWORD PTR SS:[LOCAL.9] ; /pOldProtect => [LOCAL.9] 0040B9D0 |. 68 20010000 PUSH 120 ; |NewProtect = PAGE_EXECUTE_READ|PAGE_GUARD 0040B9D5 |. 6A 10 PUSH 10 ; |Size = 16. 0040B9D7 |. 50 PUSH EAX ; |Address 0040B9D8 |. 8B35 3CE04000 MOV ESI,DWORD PTR DS:[<&KERNEL32.Virtual ; | 0040B9DE |. FFD6 CALL ESI ; \KERNEL32.VirtualProtect 0040B9E0 |. FF55 E0 CALL DWORD PTR SS:[LOCAL.8]
![]()



Reply With Quote
Thanks