c语言以16进制输出大写字母,【C语言】十六进制形式输出应用程序

本文介绍了如何使用C语言编写一个程序,将PE文件转换为16进制大写字母形式输出,以避免被杀毒软件查杀。程序实现了在Win32和*nix环境下读取文件,将文件内容转换为16进制并在控制台和文本文件中以16进制格式输出。
摘要由CSDN通过智能技术生成

1、前言

最近在看到同事写了一款封印病毒的程序,非常有意思!原理大致是将PE文件中的ASCII转换成HEX输出到文本中。这样做的目的是为了保存病毒样本的时候不会被杀毒软件查杀!然而却是delphi写的,特别想用C语言自己也实现一个,于是从google翻出了此代码。

2、编译后的结果

37492827f1632f585cb9582ad8e8b734.png

3、代码实现原理

为了兼容Win32 + *nix,需要定义头文件,在读取时把【\r\n】和【\n】区分。

// 20171105_bin2hex.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

#include

//Win32 + *nix

#ifdef WIN32

#define CRLF "\r\n"

#else

#define CRLF "\n"

#endif

//number of bytes per line

#define LINELEN 16

void printFileAsHex(FILE* file);

char toVisibleCharacter(int byteVal);

void writeLine(char* lineBuffer, int buflen);

char upperToHex(int byteVal);

char lowerToHex(int byteVal);

char nibbleToHex(int nibble);

int main(int argc, const char* argv[])

{

FILE* file;

//if (argc != 2)

//{

// printf("Usage: phex ");

// printf(CRLF);

// return 1;

//}

// 读写文件

file = fopen("D:\\20171111-test.exe", "rb"); //打开文件

if (NULL == file)

{

printf("Cannot open %s", argv[1]);

printf(CRLF);

return 2;

}<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值