导航:首页 > 源码编译 > 反编译工具缓存

反编译工具缓存

发布时间:2023-02-12 13:39:03

① 如何在eclipse中配置反编译工具jadclipse

1.下载net.sf.jadclipse_3.3.0.jar地址为jadclipse.sourceforge.net

2.将net.sf.jadclipse_3.3.0.jar(作用:如果不安装,第6步则搜不到JadClipse)复制到eclipse安装目录下的plugins下

3. Jad.exe下载,地址为www.javadecompilers.com/jad

4.将压缩解压到eclipse安装目录新建文件夹Jad(也可以自定义目录);

5.进入Jad目录,在该目录下新建Jadtemp文件,用于存放jad.exe执行程序的缓存文件夹

6.在eclipse中指定Jad.exe路径,和缓存文件夹Jadtemp的路径。eclipse中点击上方菜单Windows->Preferences,在搜索框中输入jad


9.测试

①.如果不生效,重启eclipse,再不生效则配置存在问题。

②.Jad反编译工具偶尔会出现解析不了class文件,这也是不可避免的。

② 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
}

③ 怎么清理myeclipse的缓存

1、项目清理: 选择菜单栏的Project——>Clean..——>勾选需要清理的项目(也可以选择all)
切记:clean了项目,需要重新编译
2、项目如果是maven项目,则有时候clean project并不起效。这时候需要用maven来清理缓存:右键项目——>Run As ——> Maven clean
切记:此方法清除后,需要重新进行maven编译,可以使用Maven——>Update Project 或者 自定义的 Maven build
3、如果是以上两个都不起效,那就直接进入项目的classes 目录下,查看编译后的class,进行反编译,与现在的项目进行对比,看看是否更新了,如果没有,删除重新编译
4、如果是web项目,并用Tomcat启动的,发现缓存问题,项目没更新,解决办法:删除项目,并进入Tomcat 的webapps 和 work 目录,删除你的项目,然后重新导入项目,重新编译
5、浏览器缓存:浏览器缓存包括浏览器自带的缓存 和 程序缓存
(a)自带缓存:很多浏览器,比如google有时候会问你保不保存数据,如果你点的是,在很多时候容易出现数据没更新的问题
解决办法:对于浏览器记住密码或是保存数据什么的 要慎重.. 如果出现问题:如google,选择历史记录——>清除浏览数据——>全部
(b)程序缓存:对于这个的解释:如用到了ajax进行get查询 等等
解决办法:ajax有个cache属性,默认为true, 就是页面是否需要缓存的问题,改成false就ok了

④ 如何把C#编译成的DLL放在一个地方作为全服务器不同域名调用

使用全局程序集GAC

关于GAC,复制点东西给你:

Gac就是C:\WINDOWS\assembly文件夹,中文叫全局程序集缓存,把dll放到这个文件夹里,bin下面就不用放dll了,目的是为了程序集共享。

如何把asp.net网站部署到Gac里面

首先在你Visual Studio的安装目录里找到sn.exe文件,放到cmd里执行
sn.exe -k C:\testKey.snk
这样就会在你C盘的目录下生成testKey.snk密钥文件
然后
VS2003
在网站项目的AssemblyInfo.cs里面的[assembly: AssemblyKeyFile("")]做类似如下配置
[assembly: AssemblyKeyFile(@"C:\testKey.snk
")]
注意这里写绝对路径最好,相对路径很难写
生成网站
这时网站的dll就是个强命名程序集,
打开程序---管理工具---.net framework1.1(或2.0)配置
我的电脑,程序集缓存,右键添加,把刚生成好的dll添加进去,无错的话就添加成功了。

这时你可以把自己bin目录下的dll删了,但这时网页还打不开,对webconfig做如下修改
<compilation
defaultLanguage="c#"
debug="true"
>
<assemblies>
<add assembly="youDllname, Version=1.0.2811.20076, Culture=neutral, PublicKeyToken=c52d31a7559027ce"/>
</assemblies>
</compilation>

至于assembly后面的dll全名怎么写,你可以用反编译工具Reflector.exe去查你的dll,也可以在.net framework1.1(或2.0)配置里面找到你的dll查属性得到。
配好后网页就应该可以打开了,如果打不开,重启下iis

VS2005
要麻烦一点,你生成好snk文件后,第一步,当你确定好网站程序不改了后,点网站发布,在发布里面用固定命名和单页程序集,和对预编译程序用强命名,下面有一个可以选择snk文件的按纽,把snk文件选进去,发布网站,
然后再用上面的方法把bin目录里面的dll加到Gac里面,这时可以把bin目录里面的dll删了。然后配制webconfig如下
<configuration>节点下
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="CE.EIP.CRMBusinessEntities" fullName="CE.EIP.CRMBusinessEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=C75F352AFF88DAD1"/>
</assemblyBinding>
</runtime>
这时网站应该可以运行。qualifyAssembly 在2005里面是通知运行时去Gac找dll的方法
基本上是这样,但你第一次很可能操作成功不了,所以要注意如下问题
webconfig永远是在你部署时修改,你要是在开发时修改就有错
当你都配制好后,要重启下iis,你更新dll的时候最好也重启下iis,为什么呢?
因为运行时是先去找C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files
下面的一个叫root 文件里面的dll,如果找到了,就不会去Gac里面找了,重启IIS的目的就是为了把里面的文件删除
并不是所有dll都可以放到Gac里面的,比如ajax.dll系列,因为这个dll会生成xml文档,dll在GAC里面,那xml会生成在哪里呢?所以凡是要生成xml文档的dll都不适合放进去(当然也有解决方案不过麻烦)

⑤ 怎样从缓存中找出小程序

微信小程序搜索我们要解包的小程序,点击进去。让电脑进行加载小程序,缓存小程序文件到本地。然后微信设置查看文件管理,微信文件保存的位置。小程序包也储存在那里,可以看到wx开头就是。可以看到电脑已经缓存了刚才的小程序文件,默认的路径一般在C:位置。找不到的话可以搜索applet,查看路径。wx开头的都是。找到自己要解包的小程序,如果太多分不清哪个是我们需要的话,可以把wx开头的文件清空删除,重新加载小程序,生成新的。就是我们能需要的。点击到文件里面,会看到_APP_开头的主包,打开下载好的小程序,选择PC小程序解包,把里面的_APP_.wxapkg拖拽进去,选择解包后保存的路径,点击开始解密。然后选择小程序反编译,把解包出来的文件放进去,选择保存的路径。点击开始反编译。找到反编译后保存的路径,大功告成。

⑥ 在51自学网上利用IE缓存文件下载了视频教程,是swf格式的,大部分不能正常播放,请问如何编辑

要编译SWF文件也有好几种方法,一·你可以下载个AE把SWF文件导进去,再渲染导出来,二,下载个SWf 反编译软件,如硕客闪思精灵 之类,进里面看SWF的代码根据代码要求播放文件,前提是你要看的懂那一堆代码是什么意思。三,把SWF文件反编译出来,删改代码,,………………

⑦ jd-gui反编译工具缓存在哪儿

表示没出现过,大多就是代码错乱而已,

⑧ 怎样把SWF文件批量反编译成AS 用什么软件 具体怎么做 主要是什么软件可

放假发现提过佛欧克恭喜恭喜一次过辛苦幸福就感觉感觉媳妇规范从看媳妇hk里抽冲刺个处理好了超级好吃刚开学顾客系统

⑨ 如何将APK格式游戏里的音乐提取出来感觉很好听。

1、如果音乐是直接打包进安装程序的,可以用解压软件解压打开,然后查看assets或者res文件夹下,即可找到
2、如果音乐是从网上缓存到本地的,就要找这个软件的缓存地址,有些软件的缓存文件是经过特殊处理的,就算找到了也不能使用

⑩ vs中的sdk命令提示,这个有什么用,他和dos有何联系

其实就是DOS命令行,不同的是,因为SDK里面提供了很多工具都是基于命令行的,所以它启动的时候已经将那些命令行的路径都放进了系统的Path变量里面,这样当使用那些工具的时候,你可以直接用程序名了,而不需要再去切换目录或输入带路径的完整文件名。可以直接使用的工具比如:gacutil 管理和查看GAC缓存的工具sn 关于程序集强命名和密钥相关的功能ildasm IL反编译查看工具corflags 对程序集的CLR标识进行设定的工具ilasm 将IL编译为程序集的工具resgen 关于资源的工具 等等。这些工具能在MSDN中找到列表和用法介绍。

阅读全文

与反编译工具缓存相关的资料

热点内容
我的盐城app怎么添加不了家庭成员 浏览:493
php商城并发 浏览:348
熊猫绘画app怎么做出大佬的笔刷 浏览:603
云存储服务器知识 浏览:461
服务器cpu是什么指令集 浏览:590
糖猫t10怎么安装app 浏览:992
电脑加密u盘怎么使用 浏览:517
linux如何升级php版本升级 浏览:841
二级程序员c语言难度 浏览:352
批处理编译qt 浏览:66
铁友app怎么查询机票订单 浏览:197
myeclipselinux破解版 浏览:417
批处理命令语法不正确 浏览:889
pdf合并成一个pdf在线 浏览:383
柱加密区构造要求 浏览:514
地板木龙骨标准跟加密区别 浏览:150
解压放松的好地方河南 浏览:965
搜狗怎么移动到文件夹 浏览:617
文件自动选择到文件夹 浏览:794
赠送的app怎么在ipad下载 浏览:508