#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <Windows.h> char shellcode[] = "\x31\xd2\xb2\x30\x64\x8b\x12\x8b\x52\x0c\x8b\x52\x1c\x8b\x42"
"\x08\x8b\x72\x20\x8b\x12\x80\x7e\x0c\x33\x75\xf2\x89\xc7\x03"
"\x78\x3c\x8b\x57\x78\x01\xc2\x8b\x7a\x20\x01\xc7\x31\xed\x8b"
"\x34\xaf\x01\xc6\x45\x81\x3e\x46\x61\x74\x61\x75\xf2\x81\x7e"
"\x08\x45\x78\x69\x74\x75\xe9\x8b\x7a\x24\x01\xc7\x66\x8b\x2c"
"\x6f\x8b\x7a\x1c\x01\xc7\x8b\x7c\xaf\xfc\x01\xc7\x68\x79\x74"
"\x65\x01\x68\x6b\x65\x6e\x42\x68\x20\x42\x72\x6f\x89\xe1\xfe"
"\x49\x0b\x31\xc0\x51\x50\xff\xd7"; int HextoBin(char* input)
{
FILE* fp;
if ((fp = fopen(input,"wb")) == NULL)
{
printf("[-]:HextoBin files:%s not find\r\n",input);
return ;
} fwrite(shellcode,,sizeof(shellcode) -,fp);
fclose(fp);
printf("[*]:Bin files suscess Convert,check Files:%s\r\n",input);
return ;
} int Bin2Hex(char* src,char* des)
{
FILE *fi,*fo;
unsigned int n;
int c; if ((fi = fopen(src,"rb")) == NULL)
{
cprintf("Can not find file %s",src);
return ;
} if ((fo=fopen(des,"w"))==NULL)
{
fclose(fi);
cprintf("Can not create file %s",des);
return ;
} n=;
while ()
{
c=fgetc(fi);
if (EOF==c) break;
n++;
if (==n) fprintf(fo, "\"\\x%02X",c);
else {
if (==n%) fprintf(fo,"\"\n\"\\x%02X",c);
else fprintf(fo, "\\x%02X",c);
}
}
fprintf(fo,"\"");
fcloseall();
cprintf("OK to Bin2Hex %u bytes.",n);
return ;
} void help(char* proc)
{
printf("[-]:%s Srcfile Descfile\r\n",proc);
printf("[-]:%s -hex shellcode.bin Convert.hex\r\n",proc);
printf("[-]:%s -bin Convert.bin\r\n",proc);
} //-------------------------------------------------------
int main(int argc,char *argv[])
{ if (argc == )
{
if (stricmp(argv[],"-hex") == )
{
char* src = argv[];
char* des = argv[];
Bin2Hex(src,des); }else
{
help(argv[]);
exit();
}
}else if (argc == )
{
if (stricmp(argv[],"-bin") == )
{
char* outfile = argv[];
HextoBin(outfile);
}else
{
help(argv[]);
exit();
}
}else
{
help(argv[]);
exit();
} return ;
}

详细参数说明:

当把shellcode写入代码shellcode变量的时候,输入-bin shellcode.bin 将生成二进制文件数据流。

当需要把二进制数据流转换成hex(16进制的时候)输入-hex shellcode.bin hex.hex

具体请看代码。这是博主自己的学习笔记,请勿喷。

DLL注入之SHELLCODE数据转换的更多相关文章

  1. 反射Dll注入分析

    (源码作者:(HarmanySecurity)Stephen Fewer) 0x01  反射Dll注入的优点  1.反射Dll注入的主要优点是它没有以主机系统的任何方式(例如LoadLibrary和L ...

  2. 通过修改EIP寄存器实现32位程序的DLL注入

    功能:通过修改EIP寄存器实现32位程序的DLL注入 <如果是64位 记得自己对应修改汇编代码部分> 原理:挂起目标进程,停止目标进程EIP的变换,在目标进程开启空间,然后把相关的指令机器 ...

  3. Ring3下的DLL注入(NtCreateThreadEx + LdrLoadDll方式实现,可以注入系统进程)

    工具介绍及使用请移步:http://blog.csdn.net/sunflover454/article/details/50441014 本文首发在零日安全论坛:http://www.jmpoep. ...

  4. DLL注入

    最近的项目涉及了软件破解方面的知识,记录一下. 将dll注入另一个进程. // Inject.cpp : Defines the exported functions for the DLL appl ...

  5. [转]Dll注入经典方法完整版

    Pnig0s1992:算是复习了,最经典的教科书式的Dll注入. 总结一下基本的注入过程,分注入和卸载 注入Dll: 1,OpenProcess获得要注入进程的句柄 2,VirtualAllocEx在 ...

  6. 第22章 DLL注入和API拦截(2)

    22.4 使用远程线程来注入DLL 22.4.1 概述 (1)远程线程注入是指一个进程在另一个进程中创建线程,然后载入我们编写的DLL,并执行该DLL代码的技术.其基本思路是通过CreateRemot ...

  7. 第22章 DLL注入和API拦截(1)

    22.1 注入的一个例子(跨进程子类化窗口) ①子类化窗口可以改变窗口的行为,让发往该窗口的消息重新发到我们指定的过程来处理.但这种行为只能在本进程中(如A),对于从一个进程(如B)去子类化另一个进程 ...

  8. DLL注入之注册表

    0x00 唠叨 编写本系列文章纯属为了系统学习DLL注入的方法,所以很多方法可能已经过时,希望各位看官勿喷.当然若有更好的方法,希望不腻赐教.若本文有任何错的地方,也希望各位指正.谢谢! 0x01 适 ...

  9. c++实现dll注入其它进程

    DLL注入技术才具有强大的功能和使用性,同时简单易用,因为DLL中可以实现复杂的功能和很多的技术. 技术要点: 1.宿主进程调用LoadLibrary,就可以完成DLL的远程注入.可以通过Create ...

随机推荐

  1. LeetCode_Insertion Sort List

    题目:Sort a linked list using insertion sort,即仿照插入排序(直接插入排序)对一个链表排序. 插入排序的思想:总共进行n-1趟排序,在排列第i个元素时,前面的i ...

  2. Purpose of ContextLoaderListener in Spring

    The ApplicationContext is where your Spring beans live. The purpose of the ContextLoaderListener is ...

  3. Elasticsearch.js 发布 —— 在Node.js和浏览器中调用Elasticsearch(1)

    继PHP.Ruby.Python和Perl之后,Elasticsearch最近发布了Elasticsearch.js,Elasticsearch的JavaScript客户端库.可以在Node.js和浏 ...

  4. django高级之爬虫基础

    目录: 爬虫原理 requests模块 beautifulsoup模块 爬虫自动登陆示例 一.爬虫原理 Python非常适合用来开发网页爬虫,理由如下:1.抓取网页本身的接口相比与其他静态编程语言,如 ...

  5. (转)C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

    程序在内存有五个存在区域: A:动态区域中的栈区  B:动态区域中的栈区 C:静态区域中:全局变量 和静态变量    (这个区域又可以进一步细分为:初始化的全局变量和静态变量    以及    未初始 ...

  6. Linux服务器access_log日志分析及配置详解(二)

    默认nginx / Linux日志在哪个文件夹? 一般在 xxx.xxx.xxxx.com/home/admin 路径下面的error.log文件和access.log文件error_log logs ...

  7. sqlserver 2005/2008 导入超大sql文件

    SQLCMD -E -dmaster -ic:\Scripts\create_db.sql 安装了Microsoft® SQL Server® 2008 R2 Native Client可用

  8. Java基础知识陷阱(四)

    本文发表于本人博客. 今天我们来说说关于java继承以及反射有关的问题,大家先看下下面代码,试问可以编译通过不,为什么具体说说原因? public class Test{ public static ...

  9. PKU 1573 Robot Motion(简单模拟)

    原题大意:原题链接 给出一个矩阵(矩阵中的元素均为方向英文字母),和人的初始位置,问是否能根据这些英文字母走出矩阵.(因为有可能形成环而走不出去) 此题虽然属于水题,但是完全独立完成而且直接1A还是很 ...

  10. codeforces 70 D. Professor's task 动态凸包

    地址:http://codeforces.com/problemset/problem/70/D 题目: D. Professor's task time limit per test 1 secon ...