If you do not need all of the current program's state (for example the state of the stack, register values, or open handles), then you can try dumping to a new executable and setting the EntryPoint to the current EIP. OllyDumpEx (https://low-priority.appspot.com/ollydumpex/) is commonly used for this purpose for malware analysis. Despite its name, it is a plugin for both OllyDbg, IDA, x64dbg, and WinDbg.
If you do need some of the program state, you can add a custom EntryPoint function or set of instructions that set it up.
In theory, the following should work (for a single-threaded 32-bit process)...
You need to save the processor state, stack, and any sections allocated on the heap by user code (such as with calls to VirtualAlloc, HeapAlloc, or malloc). You will also need to find a place to insert some setup instructions.
First, when you start your process in the debugger, view the memory map/segments (in IDA, I believe it is in the menu View > Open Subview > Segments) and make note of them (or take a screenshot for reference).
Next, run the program up to the point that you want to move it to your other system. Now look at the memory segments again and note which ones under the Heap are new. Also make note of the current address of the instruction pointer.
Now to save the processor state, you can use the PUSHAD and PUSHFD instructions. Find a code cave of at least 7 bytes in length. Edit bytes and change them to 0x60 0x9c, then change the instruction pointer to point to the address of where you inserted those two bytes. Now single-step twice. That will execute the PUSHAD and PUSHFD that saves the general purpose registers (including the stack pointer) and the flags. Now edit those same bytes to 0x9d 0x61 0xEA . Finally, change the instruction pointer to point to the address of where you inserted those bytes.
Run the OllyDumpEx plugin. Under
List section choose
All memory, then click the
ReScan memory button. Now check the box next to
Auto Adjust Image Base Address. Then click on
Get EIP as OEP button.
Now, in the list of sections in the bottom of the dialog box, there should be several already selected. Keep those selected. Additionally select any that are related to the Stack and Heap. Now click the
Dump button. This may require a bit of trial and error.
NOTE: If your process is multi-threaded then this won't work. There will be thread-specific state that will also need to be saved, but I am uncertain how to do that.