[参考]字节码倒序工具
要将一个文件从头到尾全部倒转,可以采用以下代码:
#include<iostream>
#include "defs.h"
int main(int argc, char** argv)
{
if (argc != 2 || argv[1] == "")
{
printf("Usage: revfile [filename]");
return -1;
}
const char * fname = argv[1];
char* buffer = nullptr;
// input binary data
FILE* fprb;
if (fopen_s(&fprb, fname, "rb") != 0) //> fname is path of file by const char* type
{
printf("can't open file\n");
return false;
}
fseek(fprb, 0, SEEK_END);
long size = ftell(fprb);
fseek(fprb, 0, SEEK_SET);
buffer = (char*)malloc(sizeof(char) * size);
if (buffer == nullptr)return -2;
fread(buffer, sizeof(char) * size, 1, fprb); //> Con is a container to contain the input data
fclose(fprb);
char* savname = nullptr;
savname = (char*)malloc(strlen(fname) * sizeof(char) + 8);
if (savname == nullptr)return -2;
memset(savname, 0, strlen(fname) * sizeof(char) + 8);
strcpy(savname, fname);
strcat(savname, ".r_");
// output binary data
if (fopen_s(&fprb, savname, "wb") != 0) //> fname is path of file by const char* type
{
printf("can't write file\n");
return false;
}
for (long i = size -1 ; i >= 0; i--)
{
fwrite(&buffer[i],sizeof(buffer[i]), 1, fprb);
}
fclose(fprb);
return 0;
}
可执行文件请查看Release #RELEASE 20220216 · Holit/revfile (github.com)
作者发布、转载的任何文章中所涉及的技术、思路、工具仅供以安全目的的学习交流,并严格遵守《中华人民共和国网络安全法》、《中华人民共和国数据安全法》等网络安全法律法规。
任何人不得将技术用于非法用途、盈利用途。否则作者不对未许可的用途承担任何后果。
本文遵守CC BY-NC-SA 3.0协议,您可以在任何媒介以任何形式复制、发行本作品,或者修改、转换或以本作品为基础进行创作
您必须给出适当的署名,提供指向本文的链接,同时标明是否(对原文)作了修改。您可以用任何合理的方式来署名,但是不得以任何方式暗示作者为您或您的使用背书。
同时,本文不得用于商业目的。混合、转换、基于本作品进行创作,必须基于同一协议(CC BY-NC-SA 3.0)分发。
如有问题, 可发送邮件咨询.