導航:首頁 > 源碼編譯 > 反編譯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文件相關的資料

熱點內容
程序反編譯教學 瀏覽:656
ecc加密演算法c語言代碼 瀏覽:877
nvr預覽提示碼流已加密 瀏覽:740
編程怎麼讓飛鏢掉落下來 瀏覽:590
如何在伺服器上運行後台代碼 瀏覽:768
安卓手機編譯時間 瀏覽:322
php插入資料庫代碼 瀏覽:389
明日之後怎麼搜索別的伺服器的人 瀏覽:826
思迅加密鎖驅動未能正常升級 瀏覽:141
文件夾哪個是相冊跟視頻 瀏覽:168
用函數編譯計算器程序 瀏覽:702
保賣數碼是哪個app 瀏覽:133
汽車級單片機特點 瀏覽:280
visualstudio教程pdf 瀏覽:644
oracle命令窗口 瀏覽:984
51單片機開發板應用演示 瀏覽:490
編譯程序利用子函數計算 瀏覽:1003
編譯terminated 瀏覽:988
1u伺服器如何才能靜音 瀏覽:213
用python寫登陸介面 瀏覽:558