Сейчас на форуме: rmn, Magister Yoda, vasilevradislav, tyns777, zombi-vadim (+3 невидимых) |
![]() |
eXeL@B —› Программирование —› Несложный вопрос по Delphi |
Посл.ответ | Сообщение |
|
Создано: 13 мая 2008 15:31 · Личное сообщение · #1 Короче, эта функция должна работать на Delphi. Подскажите пожалуйста где ошибка и как её можно исправить. Заранее спасибо. Собственно сам код: //Функция ловит бряку на железяке. function AHBPX: LongBool; stdcall; var OrgEbp: string; OrgEsp: string; SaveEip: string; Title: string; Text: string; begin Result := False; OrgEbp:= 'dd ?'; OrgEsp:= 'dd ?'; SaveEip:= 'dd ?'; Title:= 'Hmmmm....'; Text:= 'Hook detected!'; asm MOV EAX, offset @Exit MOV DWORD PTR[OrgEbp],EAX MOV DWORD PTR[SaveEip],EBP PUSH offset @DetectHardwareBPX PUSH FS:[0] MOV DWORD PTR[OrgEsp],ESP MOV FS:[0], ESP XOR EAX,EAX XCHG DWORD PTR DS:[EAX],EAX @Exit: POP FS:[0] ADD ESP,4 PUSH 0 CALL ExitProcess @DetectHardwareBPX: PUSH EBP MOV EBP,ESP MOV EAX,DWORD PTR SS:[EBP+10h] MOV EBX,DWORD PTR[OrgEbp] MOV DWORD PTR DS:[EAX+0B8h],EBX MOV EBX,DWORD PTR[OrgEsp] MOV DWORD PTR DS:[EAX+0C4h],EBX MOV EBX,DWORD PTR[SaveEip] MOV DWORD PTR DS:[EAX+0B4h],EBX CMP DWORD PTR DS:[EAX+4h],0 JNE @hardware_bpx_found CMP DWORD PTR DS:[EAX+8h],0 JNE @hardware_bpx_found CMP DWORD PTR DS:[EAX+0Ch],0 JNE @hardware_bpx_found CMP DWORD PTR DS:[EAX+10h],0 JNE @hardware_bpx_found JMP @quit @hbpx_exit: MOV EAX,0 LEAVE RET @hardware_bpx_found: PUSH 30h PUSH Title PUSH Text PUSH 0 CALL MessageBoxA JMP @hbpx_exit @quit: // Тут должна возврощаться в программу, но невозвращается. end; end; ![]() |
|
Создано: 13 мая 2008 21:43 · Личное сообщение · #2 |
|
Создано: 14 мая 2008 06:00 · Поправил: PE_Kill · Личное сообщение · #3 |
|
Создано: 14 мая 2008 13:19 · Личное сообщение · #4 |
|
Создано: 14 мая 2008 15:17 · Поправил: drin · Личное сообщение · #5 |
|
Создано: 14 мая 2008 17:12 · Личное сообщение · #6 |
|
Создано: 17 мая 2008 14:13 · Личное сообщение · #7 |
|
Создано: 17 мая 2008 20:58 · Личное сообщение · #8 |
|
Создано: 17 мая 2008 22:22 · Поправил: Hellspawn · Личное сообщение · #9 procedure ExceptionDrx;
----- [nice coder and reverser] ![]() |
|
Создано: 17 мая 2008 23:08 · Личное сообщение · #10 GlOFF пишет: А делфи разве разрешает менять сегментные регистры? В делфи это еще проще сделать, чем например в masm32, где по умолчанию, нельзя использовать регистр fs и gs, так как модель .flat запрещает адресацию с их использованием. Поэтому надо отвязывать соответствующие регистры через: assume fs:nothing. ----- Yann Tiersen best and do not fuck ![]() |
![]() |
eXeL@B —› Программирование —› Несложный вопрос по Delphi |
Эта тема закрыта. Ответы больше не принимаются. |