导航:首页 > 源码编译 > 反编译H86文件

反编译H86文件

发布时间:2022-05-26 04:34:09

1. exe文件能不能反编译

所有exe文件都能进行“反编译”,只不过是经过加密或者优化处理的exe文件反编译出来无法正常阅读。

2. 什么是反编译apk

评价:超级新新手,
每句后;都没有,还有输入语句和输出语句都有错。
给个修改正确后可以运行的版本,跟你自己的比较下,会有帮助的!

#include "stdio.h"
#include "conio.h"

main()
{
int x=0;
int y=0;
int z=0;
scanf("%d",&x);
scanf("%d",&y);
z=x+y;
printf("\'hello, this is the first software i edit\' \n z=%d",z);
}

3. lua 怎么反编译

1.Lua的虚拟机指令,5.2 的有40条

Lua的指令使用一个32bit的unsigned integer表示。所有指令的定义都在lopcodes.h文件中(可以从Lua 官方网站下
载),使用一个enum OpCode代表指令类型。在lua5.2中,总共有40种指令(id从0到39)。根据指令参数的不同,可以将所有指令分为4
类:

typedef enum {
/*----------------------------------------------------------------------
name args description

------------------------------------------------------------------------*/
OP_MOVE,/* A B R(A) := R(B) */
OP_LOADK,/* A Bx R(A) := Kst(Bx) */
OP_LOADKX,/* A R(A) := Kst(extra arg) */
OP_LOADBOOL,/* A B C R(A) := (Bool)B; if (C) pc++ */
OP_LOADNIL,/* A B R(A), R(A+1), ..., R(A+B) := nil */
OP_GETUPVAL,/* A B R(A) := UpValue[B] */

OP_GETTABUP,/* A B C R(A) := UpValue[B][RK(C)] */
OP_GETTABLE,/* A B C R(A) := R(B)[RK(C)] */

OP_SETTABUP,/* A B C UpValue[A][RK(B)] := RK(C) */
OP_SETUPVAL,/* A B UpValue[B] := R(A) */
OP_SETTABLE,/* A B C R(A)[RK(B)] := RK(C) */

OP_NEWTABLE,/* A B C R(A) := {} (size = B,C) */

OP_SELF,/* A B C R(A+1) := R(B); R(A) := R(B)[RK(C)] */

OP_ADD,/* A B C R(A) := RK(B) + RK(C) */
OP_SUB,/* A B C R(A) := RK(B) - RK(C) */
OP_MUL,/* A B C R(A) := RK(B) * RK(C) */
OP_DIV,/* A B C R(A) := RK(B) / RK(C) */
OP_MOD,/* A B C R(A) := RK(B) % RK(C) */
OP_POW,/* A B C R(A) := RK(B) ^ RK(C) */
OP_UNM,/* A B R(A) := -R(B) */
OP_NOT,/* A B R(A) := not R(B) */
OP_LEN,/* A B R(A) := length of R(B) */

OP_CONCAT,/* A B C R(A) := R(B).. ... ..R(C) */

OP_JMP,/* A sBx pc+=sBx; if (A) close all upvalues >= R(A) + 1 */
OP_EQ,/* A B C if ((RK(B) == RK(C)) ~= A) then pc++ */
OP_LT,/* A B C if ((RK(B) < RK(C)) ~= A) then pc++ */
OP_LE,/* A B C if ((RK(B) <= RK(C)) ~= A) then pc++ */

OP_TEST,/* A C if not (R(A) <=> C) then pc++ */
OP_TESTSET,/* A B C if (R(B) <=> C) then R(A) := R(B) else pc++ */

OP_CALL,/* A B C R(A), ... ,R(A+C-2) := R(A)(R(A+1), ... ,R(A+B-1)) */
OP_TAILCALL,/* A B C return R(A)(R(A+1), ... ,R(A+B-1)) */
OP_RETURN,/* A B return R(A), ... ,R(A+B-2) (see note) */

OP_FORLOOP,/* A sBx R(A)+=R(A+2);
if R(A) <?= R(A+1) then { pc+=sBx; R(A+3)=R(A) }*/
OP_FORPREP,/* A sBx R(A)-=R(A+2); pc+=sBx */

OP_TFORCALL,/* A C R(A+3), ... ,R(A+2+C) := R(A)(R(A+1), R(A+2)); */
OP_TFORLOOP,/* A sBx if R(A+1) ~= nil then { R(A)=R(A+1); pc += sBx }*/

OP_SETLIST,/* A B C R(A)[(C-1)*FPF+i] := R(A+i), 1 <= i <= B */

OP_CLOSURE,/* A Bx R(A) := closure(KPROTO[Bx]) */

OP_VARARG,/* A B R(A), R(A+1), ..., R(A+B-2) = vararg */

OP_EXTRAARG/* Ax extra (larger) argument for previous opcode */
} OpCode;

**********************************************************
虚拟机指令(2) MOVE & LOAD

OP_MOVE A B
OP_MOVE用来将寄存器B中的值拷贝到寄存器A中,由于Lua是基于寄存器虚拟机,大部分的指令都是直接对寄存器进行操作,而不需要对数据进行压栈和弹栈。OP_MOVE 指令的作用 是将一个Local变量复制给另一个local变量.
例子:
local a = 10;
local b = a;
编译出来的结果
1 [1] LOAD 0 1;1代表的是常量表的项,这里代表的是10
2 [2] MOVE 1 0
所代表的二进制为
B A OP_Code
Load 0 1 = 100000000 000000000 00000000 000001 = 0x80000001 ,
也就是说, 0x80000001 的二进制所代表的指令为 Load 0 1,这里B中的最高位为1,表示的B为常量表的序号,而不是寄存器

MOVE 1 0 = 000000000 000000000 00000001 000000 = 0x40

*****************华丽分割线***********************************************
1.lua 的二进制格式,官方的luac.exe 编译出来的格式

原始的lua 脚本为
local a = 10
local b = a
print(b)

下面介绍格式文件,介绍每个字段的意思.当然啦,这种格式是官方的,各个游戏公司可能会做一些改动,但是万变不离其宗。个个字段已经用颜色标明了
在lua 的源文件中,前面四个字节 1b 4c 75 61 也就是 \033Lua , 标识的是lua文件的特有的标示符数据格式,代表是lua
#define LUA_SIGNATURE "\033Lua" 033时八进制 = 0x1b ,很多那些反编译工具判断这四个字节的值,来判断是否能反编译,很多公司都会偷偷的去掉或者用其他的值来替换,以迷惑菜鸟。呵呵

52 第五个字节,表示的是,当前lua 的目标版本,这里指的是5.2 版本。
感觉编辑的好痛苦,我还是直接贴我的比较图算了,看起来比较舒服

函数的头描述
linedefined = 00 00 00 00 ;函数定义开始处的行号
linedefined = 00 00 00 00 ; 函数定义结束处的行号 ;顶级函数开始和结束行号都是为00
numparams = 00 ;固定参数的数目 number of fixed parameters
is_vararg = 01 ;可变参数标识符
• 1=VARARG_HASARG
• 2=VARARG_ISVARARG
• 4=VARARG_NEEDSARG
maxstacksize = 03 ;调用函数所需要的堆栈空间指令段
sizecode = 06 00 00 00 ; 函数中 指令的数目,缓存区的大小 = sizecode * sizeof(Instruction),每四个字节为一条指令
code = 02 00 00 00 41 00 00 00 87 40 40 00 c1 00 80 00 a0 40 00 01 1e 00 80 00

常量列表 保存着函数中引用的常量的列表 (常量池)
Constant.sizek = 02 00 00 00 ;常量列表的大小 ,缓存区的大小 = Constant.sizek * sizeof(TValue) = 2 * 8 = 16,每项为8个字节,
TValue * = 03 00 00 .
00 00 00 00 24 40 04 06 00 00 00 70 72 69 6e 74 [email protected]
Constant list 数据结构 保存着函数中引用的常量的列表 (常量池)
Integer 常量列表的大小 (sizek)
[
1 byte 常量类型 (value in parentheses): • 0=LUA_TNIL, 1=LUA_TBOOLEAN,• 3=LUA_TNUMBER, 4=LUA_TSTRING
Const 常量本身: 如果常量类型是0这个域不存在;如果类型是1,这个是0或1;如果类型是3这个域是 Number;如果类型是4 这个域是String。
]
这里的String 是包含"0"为结束的字符串

为什么上传图片以后,图片都变小了,而且不清晰呢?

***********************给大家发一点福利,矫正虚拟机指令的函数**************************************
//矫正虚拟机指令
DWORD Rectify(DWORD Source);
{
DWORD Instruction = Source;
BYTE Source_OpCode = Instruction & 0x3F;
switch(Source_OpCode)
{
case OP_MOVE:
Source_OpCode = Target_OpCode;
break;
...
}
Instruction = ((Instruction & 0xFFFFFFC0) | Source_OpCode);
return Instruction
}

4. Hbuilder生成的apk,怎么还原成静态

APK需要使用专门的软件来进行反编译。直接解压后无法再压缩回去了。
首先要反编译,修改后再选定文件夹进行回编译。回编译之后还需要对apk包进行签名。

需要注意的是修改后的apk不能和已经安装的原APK共存,也不能覆盖。只能先删除原安装的程序后再安装修改后的apk。

类似的软件有apktool、apk+deb等。
需要有java运行环境。需要有一定的java语言基础。

5. file.read()读取的字节数据怎么反编译恢复成源文件中的数据、字母或文字。

由于课程原因,用到了其中的脱机手写汉字库(HWDB1.1trn_gnt与HWDB1.1tst _gnt)的数据。这些数据以.gnt格式存储,解码后可以得到3755个常用汉字的各300个样本。按照CASIA的建议,240个不同的书写者的样本作为training set,剩余60位书写者的样本作为testing set, 则共有897758个training sample, 223991个testing sample. 本文提供一段python脚本,可以直接将其中的数据存储成numpy数组文件(.npy文件)。只是,由于图像位置及大小对齐处理的原因,代码效率不是很高,执行起来需要的时间有点久:

Intel Core i7-4710MQ
16GB DDR3L RAM123

配置下,training set由.gnt文件转成.npy文件共花费 78 分钟。最终的结果文件有点大(training set 876MB, testing set 218M),可能存成.npy文件不如.h5文件更方便些。

另外,请大家在使用数据时遵守CASIA对于该数据库数据的使用要求。

gnt格式定义见下图:


如图所示,文件的前4个字节记录了第一个字符数据与下一个字符数据之间的字节数,比如这4个字节是35656的话,第二个字符的数据就是从第35657个字节开始(下标35656)。接下来的两个字节存储该字符的GBK编码,再下面的4个字节记录了字符图片的宽度和高度,然后就是字符图片的数据(按行存储)。

所需依赖:

6. 重编译内核使用make bzImage命令出现“include/asm/processor.h:86: 错误:数组元素的类型不完全”

看起来是因为gcc的版本不正确造成的,gcc -v可以查看版本。只有3.x的gcc可以用来编译kernel-2.4.x

7. 什么软件可以反编译HEX文件

HEX是机器码文件,可以从芯片中读出来。

反汇编工具“IDA”
IDA Pro 是一个世界顶级的交互式反汇编工具,它的使用者囊括了软件安全专家,军事工业,国家安全信息部门,逆向工程学者,黑客。从功能上它大大胜过了w32dasm。近来它的盗版已经在网上传播开了,你可以很轻松得到它。 IDA PRO 简称IDA ,英文:Interactive Disassembler的缩写。它是由HEX RAY SA 公司开发的,一家多年以来从事二进制代码反编译C的软件安全公司,其公司的旗舰产品就是着名的Hex-Rays.Decompiler(是IDA PRO的插件)。 IDA有两种可用版本。标准版(Standard)支持二十多种处理器。高级版(Advanced)支持50多种处理器。你可以访问the supported processor list page查看细节。在这里可以看到关于申请表格和许可证的常见问题的答案。IDA不存在任何注册机、注册码或破解版,除了测试版和一个4.9的免费版外,网络上能下载的都是包含用户许可证的正版,因为所有的安装包都是OEM出来的,所以IDA官网不提供软件下载,并且软件也没有注册的选项(完全可以正常使用,当然这也是一种盗版或侵权的行为,对此IDA公司会采取严厉打击措施); 当你运行IDA Pro时,你所最先注意到的是它的界面比w32dasm更加专业,这里比w32dasm有更多的选项或更先进的地方。它的优点是可以更好的反汇编和更有深层分析。而缺点是使用IDA更困难。

8. 软件反编译

只能修改其中的图片、代码,替换其中的资源
原代码一般是得不到的

9. 请大神帮忙用手机端反编译怎样彻底去除软件广告请不要说用apk编辑器把那个dex格式文件里面的h

去掉广告文件夹。去掉广告代码,去掉控件

10. 如何将tbc文件反编译成tcl文件

#include <stdio.h>
#include <stdlib.h>

#define LINE 1024

char *ReadData(FILE *fp, char *buf)
{
return fgets(buf, LINE, fp);//读取一行到buf
}

void someprocess(char *buf)
{
printf("%s", buf);//这里的操作你自己定义
}

void main()
{
FILE *fp;
char *buf, filename[20], *p;

printf("input file name:");
gets(filename);

if ((fp=fopen(filename, "r"))==NULL) {
printf("open file error!!\n");
return;
}

buf=(char*)malloc(LINE*sizeof(char));

while(1) {
p=ReadData(fp, buf);//每次调用文件指针fp会自动后移一行
if(!p)//文件读取结束则跳出循环
break;
someprocess(buf);
}
}
拿走,不谢
希望对你有帮助!

阅读全文

与反编译H86文件相关的资料

热点内容
安卓软件怎么还原之前的版本 浏览:869
什么app可以看舌神综艺 浏览:278
vba编好的程序编译出来 浏览:91
如何清空服务器数据 浏览:33
android计划软件 浏览:383
vivo手机文件夹加密路径 浏览:131
程序员怎么找到联通卡 浏览:196
单片机实训要求 浏览:268
程序员八大黑话 浏览:946
除了天天鉴宝app还有什么 浏览:628
cs中的文件夹 浏览:792
php获取内存地址 浏览:679
看电视直播节目什么app最好 浏览:30
如何连子文件里面的文件一起解压 浏览:72
怎么用单片机识别天气 浏览:877
单片机实验室认识 浏览:142
我的世界pe112服务器地址 浏览:886
程序员转行销售 浏览:468
沈阳医疗程序员 浏览:47
戴尔服务器主机系统如何安装 浏览:958