What are some alternatives to the x86 call instruction? Maybe something like a push of the return address then a jump?
Also is their a command for obtaining the curr
You can just push a dword value and jmp to the procedure. The push would be the return address :
push return_address (push eax if address in eax)
jmp call_address
Remember to also push arguments if they exist for that particular call.
What do you mean by current position in memory ? I suppose that you mean the current instruction pointer. You cannot get that directly, but you can use a seh handler(structured exception handler) to get that value upon causing a handled exception.