Ранг: 46.9 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 20 июля 2008 10:05 · Личное сообщение · #1
Думаю,что ошибка вся из за пролога хотя cdecl; когда вставляю вроде не видно push ebp; mov ebp,esp
include 'include\win32ax.inc'
.data
Buf db 10000 dup ('-')
.code
REG_EAX equ 00000001h
REG_ECX equ 00000002h
REG_EDX equ 00000004h
REG_EBX equ 00000008h
REG_ESP equ 00000010h
REG_EBP equ 00000020h
REG_ESI equ 00000040h
REG_EDI equ 00000080h
;
CMD_SIMPLE equ 00000001h
CMD_INC_DEC equ 00000002h
CMD_MOV equ 00000004h
CMD_XCHG equ 00000008h
CMD_MATH equ 00000010h
CMD_LOGIC equ 00000020h
CMD_SHXX equ 00000040h
CMD_SHIFT equ 00000080h
CMD_NOT_NEG equ 00000100h
CMD_MOVSXZX equ 00000200h
CMD_LEA equ 00000400h
CMD_BSWAP equ 00000800h
CMD_REP equ 00001000h
CMD_MATH_IMM equ 00002000h
CMD_LOGIC_IMM equ 00004000h
CMD_BSX equ 00008000h
CMD_BTXX equ 00010000h
CMD_CMP_TEST_REG equ 00020000h
CMD_CMP_TEST_REG_IMM equ 00040000h
CMD_JMPS equ 00080000h
CMD_FLAGS equ 00100000h
CMD_ALL equ 00FFFFFFh
;
;ENGINE_NUMBER_OF_CMDS equ 20+1
;ENGINE_MAX_JMP_SIZE equ 65
start:
push my_rnd
push REG_EAX+REG_ECX+REG_EDX
push CMD_INC_DEC+CMD_JMPS+CMD_MATH
push 999
push Buf
mov eax,Zpe_Bin
call eax
invoke MessageBoxA,0,Buf,0,0
invoke ExitProcess,0
Zpe_Bin:
db 96,137,229,139,125,36,139,77,40,232,5,0,0,0,233,167
db 0,0,0,9,201,15,132,158,0,0,0,232,16,4,0,0
db 9,192,15,132,164,0,0,0,72,15,132,177,0,0,0,72
db 15,132,206,0,0,0,72,15,132,203,0,0,0,72,15,132
db 236,0,0,0,72,15,132,14,1,0,0,72,15,132,44,1
db 0,0,72,15,132,41,1,0,0,72,15,132,86,1,0,0
db 72,15,132,119,1,0,0,72,15,132,156,1,0,0,72,15
db 132,187,1,0,0,72,15,132,207,1,0,0,72,15,132,225
db 1,0,0,72,15,132,25,2,0,0,72,15,132,77,2,0
db 0,72,15,132,100,2,0,0,72,15,132,186,2,0,0,72
db 15,132,210,2,0,0,72,15,132,3,3,0,0,72,15,132
db 45,3,0,0,233,90,255,255,255,195,97,195,91,90,80,69
db 32,66,121,32,90,108,111,89,93,255,255,255,131,249,1,15
db 140,62,255,255,255,49,192,176,144,170,73,233,51,255,255,255
db 131,249,1,15,140,42,255,255,255,49,192,176,2,255,85,52
db 193,224,3,147,232,69,3,0,0,1,216,4,64,170,73,233
db 15,255,255,255,176,137,235,4,176,135,235,0,131,249,2,15
db 140,254,254,255,255,170,232,35,3,0,0,193,224,3,147,232
db 26,3,0,0,0,216,4,192,170,73,73,233,227,254,255,255
db 131,249,2,15,140,218,254,255,255,49,192,176,2,255,85,52
db 193,224,4,64,147,176,2,255,85,52,9,192,116,3,128,195
db 24,147,170,73,233,190,2,0,0,131,249,2,15,140,177,254
db 255,255,49,192,176,3,255,85,52,131,248,2,116,7,193,224
db 4,4,33,235,2,176,9,170,73,233,153,2,0,0,179,224
db 235,4,179,192,235,0,131,249,3,15,140,132,254,255,255,49
db 192,176,193,170,176,4,255,85,52,193,224,3,0,216,147,232
db 154,2,0,0,0,216,170,176,31,255,85,52,64,170,131,233
db 3,233,93,254,255,255,131,249,2,15,140,84,254,255,255,49
db 192,176,247,170,176,2,255,85,52,193,224,3,147,232,108,2
db 0,0,0,216,4,208,170,73,73,233,53,254,255,255,131,249
db 3,15,140,44,254,255,255,49,192,176,15,170,176,2,255,85
db 52,4,182,147,176,2,255,85,52,193,224,3,0,216,170,73
db 73,176,192,170,73,233,9,254,255,255,131,249,6,15,140,0
db 254,255,255,176,141,170,232,35,2,0,0,193,224,3,4,5
db 170,49,192,72,255,85,52,171,131,233,6,233,227,253,255,255
db 131,249,2,15,140,218,253,255,255,176,15,170,232,253,1,0
db 0,4,200,170,73,73,233,200,253,255,255,131,249,1,15,140
db 191,253,255,255,49,192,176,2,255,85,52,4,242,170,73,233
db 175,253,255,255,131,249,6,15,140,166,253,255,255,49,192,176
db 129,170,176,2,255,85,52,193,224,4,64,147,176,2,255,85
db 52,9,192,116,3,128,195,24,147,4,192,147,232,173,1,0
db 0,0,216,170,49,192,72,255,85,52,171,131,233,6,233,112
db 253,255,255,131,249,6,15,140,103,253,255,255,49,192,176,129
db 170,176,3,255,85,52,131,248,2,116,7,193,224,4,4,33
db 235,2,176,9,4,192,147,232,114,1,0,0,0,216,170,49
db 192,72,255,85,52,171,131,233,6,233,53,253,255,255,131,249
db 3,15,140,44,253,255,255,49,192,176,2,255,85,52,13,15
db 188,0,0,102,171,73,73,233,27,1,0,0,131,249,3,15
db 140,14,253,255,255,49,192,176,2,255,85,52,9,192,116,21
db 176,15,170,176,4,255,85,52,193,224,3,4,163,170,73,73
db 233,242,0,0,0,131,249,4,15,140,229,252,255,255,49,192
db 102,5,15,186,102,171,49,192,176,4,255,85,52,193,224,3
db 4,224,147,232,246,0,0,0,0,216,170,176,32,255,85,52
db 170,131,233,4,233,186,252,255,255,131,249,2,15,140,177,252
db 255,255,49,192,176,2,255,85,52,9,192,116,2,176,76,4
db 57,170,73,233,159,0,0,0,131,249,6,15,140,146,252,255
db 255,49,192,176,2,255,85,52,9,192,116,8,176,247,170,176
db 192,170,235,6,176,129,170,176,248,170,232,159,0,0,0,0
db 7,49,192,72,255,85,52,171,131,233,6,233,99,252,255,255
db 184,65,0,0,0,255,85,52,131,192,2,57,193,15,140,80
db 252,255,255,80,176,235,170,88,131,232,2,170,80,81,137,193
db 232,62,252,255,255,89,131,233,2,88,41,193,233,50,252,255
db 255,184,65,0,0,0,255,85,52,131,192,2,57,193,15,140
db 31,252,255,255,80,176,16,255,85,52,4,112,170,88,131,232
db 2,170,80,81,137,193,232,8,252,255,255,89,131,233,2,88
db 41,193,233,252,251,255,255,232,34,0,0,0,193,224,3,147
db 232,25,0,0,0,0,216,4,192,170,73,233,227,251,255,255
db 49,192,176,21,255,85,52,15,163,69,44,115,245,195,49,192
db 176,8,255,85,52,15,163,69,48,115,245,195
my_rnd:
pushad
test eax,eax
jz @Random_Exit
mov ecx,eax
rdtsc
imul eax, 214013
add eax, 2531011
shr eax, 16
imul eax,edx
shr eax, 16
xor edx,edx
div ecx
mov [esp+28],edx
@Random_Exit:
popad
ret
.end start
Вобщем есть генератор мусора написанный мною на ассемблере,там же он отрабатывает нормально,все попытки портировать это в фунцию на delphi приводят к аварийному завершению программы.
Делаю так:
procedure GenerateRubbish(Where: Pointer; Size,offst,WrkMem: dword); stdcall;
asm
///////////////
push offset @my_rnd
push 3
push $FFF
push 2
mov eax,Where
add eax,Offst
push eax
call @Zpe_Bin
jmp @Exitt
//////////
@Zpe_Bin:
не помогает  может кто покажет как правильно сделать вызов с последующим корректным завершением
| Сообщение посчитали полезным: |
Ранг: 46.9 (посетитель) Активность: 0.02↘0 Статус: Участник
|
Создано: 20 июля 2008 11:48 · Личное сообщение · #3
Вопрос решен,готовый код если кому нужно
program trash;
uses windows;
var
Buf : Pointer;
const
REG_EAX = $00000001;
REG_ECX = $00000002;
REG_EDX = $00000004;
REG_EBX = $00000008;
REG_ESP = $00000010;
REG_EBP = $00000020;
REG_ESI = $00000040;
REG_EDI = $00000080;
//Commands
CMD_SIMPLE = $00000001;
CMD_INC_DEC = $00000002;
CMD_MOV = $00000004;
CMD_XCHG = $00000008;
CMD_MATH = $00000010;
CMD_LOGIC = $00000020;
CMD_SHXX = $00000040;
CMD_SHIFT = $00000080;
CMD_NOT_NEG = $00000100;
CMD_MOVSXZX = $00000200;
CMD_LEA = $00000400;
CMD_BSWAP = $00000800;
CMD_REP = $00001000;
CMD_MATH_IMM = $00002000;
CMD_LOGIC_IMM = $00004000;
CMD_BSX = $00008000;
CMD_BTXX = $00010000;
CMD_CMP_TEST_REG = $00020000;
CMD_CMP_TEST_REG_IMM = $00040000;
CMD_JMPS = $00080000;
CMD_FLAGS = $00100000;
CMD_ALL = $00FFFFFF;
asm
push PAGE_EXECUTE_READWRITE
push MEM_RESERVE+MEM_COMMIT
push 010000 //Size
push 0 //Start Addr
call VirtualAlloc
mov Buf,eax
//
push offset @my_rnd
push REG_EAX+REG_ECX+REG_EDX
push CMD_INC_DEC+CMD_JMPS+CMD_MATH
push 999
push Buf
mov eax,offset @Zpe_Bin
call eax
//
jmp @Exit_Test
@Zpe_Bin:
db 96,137,229,139,125,36,139,77,40,232,5,0,0,0,233,167
db 0,0,0,9,201,15,132,158,0,0,0,232,16,4,0,0
db 9,192,15,132,164,0,0,0,72,15,132,177,0,0,0,72
db 15,132,206,0,0,0,72,15,132,203,0,0,0,72,15,132
db 236,0,0,0,72,15,132,14,1,0,0,72,15,132,44,1
db 0,0,72,15,132,41,1,0,0,72,15,132,86,1,0,0
db 72,15,132,119,1,0,0,72,15,132,156,1,0,0,72,15
db 132,187,1,0,0,72,15,132,207,1,0,0,72,15,132,225
db 1,0,0,72,15,132,25,2,0,0,72,15,132,77,2,0
db 0,72,15,132,100,2,0,0,72,15,132,186,2,0,0,72
db 15,132,210,2,0,0,72,15,132,3,3,0,0,72,15,132
db 45,3,0,0,233,90,255,255,255,195,97,195,91,90,80,69
db 32,66,121,32,90,108,111,89,93,255,255,255,131,249,1,15
db 140,62,255,255,255,49,192,176,144,170,73,233,51,255,255,255
db 131,249,1,15,140,42,255,255,255,49,192,176,2,255,85,52
db 193,224,3,147,232,69,3,0,0,1,216,4,64,170,73,233
db 15,255,255,255,176,137,235,4,176,135,235,0,131,249,2,15
db 140,254,254,255,255,170,232,35,3,0,0,193,224,3,147,232
db 26,3,0,0,0,216,4,192,170,73,73,233,227,254,255,255
db 131,249,2,15,140,218,254,255,255,49,192,176,2,255,85,52
db 193,224,4,64,147,176,2,255,85,52,9,192,116,3,128,195
db 24,147,170,73,233,190,2,0,0,131,249,2,15,140,177,254
db 255,255,49,192,176,3,255,85,52,131,248,2,116,7,193,224
db 4,4,33,235,2,176,9,170,73,233,153,2,0,0,179,224
db 235,4,179,192,235,0,131,249,3,15,140,132,254,255,255,49
db 192,176,193,170,176,4,255,85,52,193,224,3,0,216,147,232
db 154,2,0,0,0,216,170,176,31,255,85,52,64,170,131,233
db 3,233,93,254,255,255,131,249,2,15,140,84,254,255,255,49
db 192,176,247,170,176,2,255,85,52,193,224,3,147,232,108,2
db 0,0,0,216,4,208,170,73,73,233,53,254,255,255,131,249
db 3,15,140,44,254,255,255,49,192,176,15,170,176,2,255,85
db 52,4,182,147,176,2,255,85,52,193,224,3,0,216,170,73
db 73,176,192,170,73,233,9,254,255,255,131,249,6,15,140,0
db 254,255,255,176,141,170,232,35,2,0,0,193,224,3,4,5
db 170,49,192,72,255,85,52,171,131,233,6,233,227,253,255,255
db 131,249,2,15,140,218,253,255,255,176,15,170,232,253,1,0
db 0,4,200,170,73,73,233,200,253,255,255,131,249,1,15,140
db 191,253,255,255,49,192,176,2,255,85,52,4,242,170,73,233
db 175,253,255,255,131,249,6,15,140,166,253,255,255,49,192,176
db 129,170,176,2,255,85,52,193,224,4,64,147,176,2,255,85
db 52,9,192,116,3,128,195,24,147,4,192,147,232,173,1,0
db 0,0,216,170,49,192,72,255,85,52,171,131,233,6,233,112
db 253,255,255,131,249,6,15,140,103,253,255,255,49,192,176,129
db 170,176,3,255,85,52,131,248,2,116,7,193,224,4,4,33
db 235,2,176,9,4,192,147,232,114,1,0,0,0,216,170,49
db 192,72,255,85,52,171,131,233,6,233,53,253,255,255,131,249
db 3,15,140,44,253,255,255,49,192,176,2,255,85,52,13,15
db 188,0,0,102,171,73,73,233,27,1,0,0,131,249,3,15
db 140,14,253,255,255,49,192,176,2,255,85,52,9,192,116,21
db 176,15,170,176,4,255,85,52,193,224,3,4,163,170,73,73
db 233,242,0,0,0,131,249,4,15,140,229,252,255,255,49,192
db 102,5,15,186,102,171,49,192,176,4,255,85,52,193,224,3
db 4,224,147,232,246,0,0,0,0,216,170,176,32,255,85,52
db 170,131,233,4,233,186,252,255,255,131,249,2,15,140,177,252
db 255,255,49,192,176,2,255,85,52,9,192,116,2,176,76,4
db 57,170,73,233,159,0,0,0,131,249,6,15,140,146,252,255
db 255,49,192,176,2,255,85,52,9,192,116,8,176,247,170,176
db 192,170,235,6,176,129,170,176,248,170,232,159,0,0,0,0
db 7,49,192,72,255,85,52,171,131,233,6,233,99,252,255,255
db 184,65,0,0,0,255,85,52,131,192,2,57,193,15,140,80
db 252,255,255,80,176,235,170,88,131,232,2,170,80,81,137,193
db 232,62,252,255,255,89,131,233,2,88,41,193,233,50,252,255
db 255,184,65,0,0,0,255,85,52,131,192,2,57,193,15,140
db 31,252,255,255,80,176,16,255,85,52,4,112,170,88,131,232
db 2,170,80,81,137,193,232,8,252,255,255,89,131,233,2,88
db 41,193,233,252,251,255,255,232,34,0,0,0,193,224,3,147
db 232,25,0,0,0,0,216,4,192,170,73,233,227,251,255,255
db 49,192,176,21,255,85,52,15,163,69,44,115,245,195,49,192
db 176,8,255,85,52,15,163,69,48,115,245,195
@my_rnd:
pushad
test eax,eax
jz @Random_Exit
mov ecx,eax
rdtsc
imul eax, 214013
add eax, 2531011
shr eax, 16
imul eax,edx
shr eax, 16
xor edx,edx
div ecx
mov [esp+28],edx
@Random_Exit:
popad
ret
@Exit_Test:
push 0
push 0
push Buf
push 0
call MessageBoxA
end.
Арчер закрой топег
| Сообщение посчитали полезным: |