69 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			NASM
		
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			NASM
		
	
| .intel_syntax
 | |
| nop #5 nops for instruction thats replaced by call
 | |
| nop
 | |
| nop
 | |
| nop
 | |
| nop
 | |
| pushad
 | |
| pushfd
 | |
| saveplace31:
 | |
| mov [0xDEADBEEF], esp
 | |
| trigercount:
 | |
| mov eax, [0xDEADBEEF] #mov count of triggers.
 | |
| f_loc:
 | |
| mov esi, 0xdeadbeef #mov location of functions.
 | |
| f_data:
 | |
| mov ebx, 0xDEADBEEF #mov a start of function data
 | |
| test eax,eax
 | |
| jz lend
 | |
| lstart:
 | |
| dec eax
 | |
| push ebx
 | |
| push eax
 | |
| 
 | |
| mov eax,[esi+eax*4]
 | |
| saveplace:
 | |
| mov [0xDEADBEEF],eax #save function for later
 | |
| pop eax
 | |
| push eax
 | |
| mov edx,44
 | |
| mul edx
 | |
| add eax,ebx
 | |
| #stack preparation
 | |
| mov ebx,[eax+24]
 | |
| push ebx
 | |
| mov ebx,[eax+28]
 | |
| push ebx
 | |
| mov ebx,[eax+32]
 | |
| push ebx
 | |
| mov ebx,[eax+36]
 | |
| push ebx
 | |
| mov ebx,[eax+40]
 | |
| push ebx
 | |
| mov ebx,[eax+4]
 | |
| mov ecx,[eax+8]
 | |
| mov edx,[eax+12]
 | |
| mov esi,[eax+16]
 | |
| mov edi,[eax+20]
 | |
| mov eax,[eax]
 | |
| saveplace2:
 | |
| call [0xdeadbeef]  #same save loc
 | |
| results:
 | |
| mov [0xDEADBEEF],eax #get result
 | |
| saveplace33:
 | |
| mov esp, [0xDEADBEEF]
 | |
| add esp, -8
 | |
| pop eax
 | |
| pop ebx
 | |
| cmp eax,0
 | |
| jnz lstart
 | |
| lend:
 | |
| xor eax,eax
 | |
| trigcount2:
 | |
| mov  dword ptr [0xDEADBEEF],  eax # zero triggers
 | |
| saveplace32:
 | |
| mov esp, [0xDEADBEEF]
 | |
| popfd
 | |
| popad
 | |
| ret
 |