D4stiny / ThreadJect

Manual DLL Injector using Thread Hijacking.
MIT License
225 stars 51 forks source link

x64? #2

Closed adspro closed 6 years ago

adspro commented 6 years ago

What is shellcode to x64?

D4stiny commented 6 years ago

Hi there, this project was meant to be a reference for programmers looking to get into dll injection. The current shellcode is for x86, and is incompatible with x64 as you may of noticed. In order to make your own x64 shellcode, you can decompile the current one by using a disassembler to understand how the shellcode works, and recreating the shellcode using x64 registers. At this time, you're going to have to do this yourself.

hrt commented 5 years ago

Hi @D4stiny , it would be nice to see some comments for the x86 shell code

I might be doing something wrong here but I get an invalid instruction at the start : alt text

D4stiny commented 5 years ago

Hi @hrt,

I'll consider making comments, but originally I thought it unnecessary as a proof of concept and because it is so short. I placed my shellcode into this online disassembler and got the following disassembly:

0:  60                      pusha
1:  e8 00 00 00 00          call   0x6
6:  5b                      pop    ebx
7:  81 eb 06 00 00 00       sub    ebx,0x6
d:  b8 cc cc cc cc          mov    eax,0xcccccccc
12: ba cc cc cc cc          mov    edx,0xcccccccc
17: 52                      push   edx
18: ff d0                   call   eax
1a: 61                      popa
1b: 68 cc cc cc cc          push   0xcccccccc
20: c3                      ret

The start instruction just pushes "all general-purpose registers", you can read more about it here. I'm not sure about Cheat Engine's disassembler, but I can confirm it is valid assembly, otherwise the program would not work. Let me know if you have any other questions.

Bill Demirkapi

hrt commented 5 years ago

thanks for the quick and useful response I scrolled through some memory of a 32 bit application and this "invalid" instruction appears so it should be fine