cc反编译工具
① re从零开始的反编译教程
写在开头,引用很喜欢的一句话: 要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学! --致选择
为了回溯编译过程(或对程序进行逆向工程),我们使用各种工具来撤销汇编和编译过程,这些工具就叫反汇编器和反编译器。反汇编器撤销汇编过程,因此我们可以得到汇编语言形式的输出结果。反编译器则以汇编语言甚至是机器语言为输入,其输出结果为高级语言。
数组的表示方式是:在基本类型前加上前中括号“[”,例如int数组和float数组分别表示为:[I、[F;对象的表示则以L作为开头,格式是 LpackageName/objectName;
(注意必须有个分号跟在最后),例如String对象在smali中为: Ljava/lang/String; ,其中 java/lang 对应 java.lang 包,String就是定义在该包中的一个对象。或许有人问,既然类是用 LpackageName/objectName; 来表示,那类里面的内部类又如何在smali中引用呢?
答案是:在 LpackageName/objectName/subObjectName 的 subObjectName 前加 $ 符号。
方法的定义一般为: Func-Name (Para-Type1Para-Type2Para-Type3...)Return-Type
注意参数与参数之间没有任何分隔符,同样举几个例子就容易明白
无序列表的使用,在符号"-"后加空格使用。如下:
https://www.jianshu.com/p/1c54c1ccf5cc
https://www.cnblogs.com/onelikeone/p/7594177.html
解决:点击进去jd-gui,删除试一试。再不行换最新版本
解析结束后进行编译报错
解决方法: https://blog.csdn.net/fuchaosz/article/details/104800802
Failed parse ring installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompress
解决方法:
降低gradle里版本,若出现
signatures do not match the previously installed version; ,
使用adb install命令在手机上安装app时,遇到这个报错。原因是新装的app和手机上现有的旧版app冲突了。
解决方法:删除手机上原来的app,再重新安装即可。
可是转念一想如果反编译的apk都是Version 30 R+以上,难道我解压后挨个改一遍gradle?太彻淡了,一定有解决方法,所以有了下面探究出现这个问题的解决方法:既然报错是资源文件高版本不支持,而且没有4位对齐,那么不编译资源文件就好了
APK签名工具之jarsigner和apksigner:
https://blog.csdn.net/xzytl60937234/article/details/89088215?utm_medium=distribute.pc_relevant.none-task-blog-js_landingword-1&spm=1001.2101.3001.4242
利用apktool反编译apk,并且重新签名打包:
https://blog.csdn.net/qq_21007661/article/details/109851522?utm_medium=distribute.pc_relevant.none-task-blog-js_title-4&spm=1001.2101.3001.4242
验证apktool能否使用
apktool -r d apk名字.apk,不反编译资源文件,为什么这么做,先挖个坑
错误提示没有4位对齐和不支持30版本以上的资源文件。所有尝试不编译资源文件
解决4位对齐的方法:
查看当前目录,生成了新文件:abc.keystor
使用JarSigner对apk进行签名,命令如下
jarsigner -verbose -keystore abc.keystore -signedjar testx.apk src.apk abc.keystore
直接反编译的apk产生上述错误
但是只编译资源文件的apk安装时
发现没有使用V2进行签名,这时候进行V2签名, (apksigner,默认同时使用V1和V2签名 )
所以先对只编译资源文件的apk进行V2尝试看能否成功
重复1(进行apktool -r d apk名字.apk)-->2 -->3 -->4( 不使用jarsigner而使用apksigner )
将生成的abc.keystore和打包回的apk( apktoolapp-debugdist 里的app-debug.apk)放入 C:Users aowei.lianAppDataLocalAndroidSdkuild-tools30.0.3 下,因为Android studio的SDK下有apksigner.bat.
对jarsigner只是apk进行了V1签名;在Android7.0引入了V2签名,因此,当进入sdk25.0.0及后续版本,会发现一个apksigner.bat执行脚本。
我们可以通过apksigner进行V2签名,当然,apksigner默认是同时支持V1与V2的,于是:
学习了公钥和密钥的使用和区别,使用私钥的加密算法称为对称加密算法,这种算法实现是接收方和发送方公用一道密钥,优点是效率高,缺点是安全性差,如果被第三人得知密钥则信息泄露,由此衍生了公钥加密算法,也就是非对称加密算法,这个算法是接收方给发送方公钥,发送方用公钥加密后发给接收方,接受方再用私钥解密。这样即使所有人知道公钥也不会造成信息泄露。缺点是效率非常低。
此外了解了RSA签名的大致过程,发送方拥有公钥和私钥,对信息进行摘要然后把摘要通过密钥进行签名,然后把签名和信息一起发出去,那么如何验证该信息就是发送方发出的呢,这时候就使用到了公钥验证,通过公钥对信息进行解签,然后使用一样的摘要算法得到摘要,如果得到的摘要和解签后的内容一致则说明是发送方发出。
总结就是公钥加密,私钥解密。公钥验证,私钥签名
RSA 密码体制是一种公钥密码体制,公钥公开,私钥保密,它的加密解密算法是公开的。由公钥加密的内容可以并且只能由私钥进行解密,而由私钥加密的内容可以并且只能由公钥进行解密。也就是说,RSA 的这一对公钥、私钥都可以用来加密和解密,并且一方加密的内容可以由并且只能由对方进行解密。
因为公钥是公开的,任何公钥持有者都可以将想要发送给私钥持有者的信息进行加密后发送,而这个信息只有私钥持有者才能解密。
它和加密有什么区别呢?因为公钥是公开的,所以任何持有公钥的人都能解密私钥加密过的密文,所以这个过程并不能保证消息的安全性,但是它却能保证消息来源的准确性和不可否认性,也就是说,如果使用公钥能正常解密某一个密文,那么就能证明这段密文一定是由私钥持有者发布的,而不是其他第三方发布的,并且私钥持有者不能否认他曾经发布过该消息。故此将该过程称为“签名”。
Android 签名机制 v1、v2、v3
进入JDK/bin, 输入命令
参数:
进入Android SDK/build-tools/SDK版本, 输入命令
参数:
例如:
最后安装加 -t :
附上参考链接:
https://blog.csdn.net/A807296772/article/details/102298970
配置NDK的时候如果按钮是灰色的,手动配置
直接在javac后面指定编码是UTF-8就是了。
需要注意的是要加上* -classpath .其中classpath后面的一个黑点是不能省略的。
编译好后如何导入so库
成功运行后发现lib目录下已经apk编进去so了
https://www.52pojie.cn/thread-732298-1-1.html
本节所有到的工具和Demo
IDA
链接: https://pan..com/s/15uCX8o6tTSSelgG_RN7kBQ
Demo
链接: https://pan..com/s/1vKC1SevvHfeI7f0d2c6IqQ
找到so并打开它 因为我的机型是支持arm的所以我这里打开的是armeabi文件夹下的so 如果机型是x86模式的那么这里要打开x86模式下的libJniTest.so
编译过程:
按住键盘组合键 shift + f12 打开字符串窗口 这个窗口将会列举出so中所包含的所有字符串 因为上节课我们只编写了一个字符串 所以这里只有一个hello 52pojie! 如果打开的是x86的so这里还会有一些.so 但是字符串只有这一个
鼠标点在hello 52pojie!字符串上,打开 Hex mp窗口,修改hello 52pojie!对应内存地址的内容
关于字符对应的16进制可以在网络搜索ascii码表 找到字符所对应的16进制
因为我要把hello 52pojie!修改成hello world! 是不是只要找到每个字符所对应的hex修改就好了
这里我看到 hello 52pojie!对应的hex是:68 65 6C 6C 6F 20 35 32 70 6F 6A 69 65 21
我在ascii码表上找到world所对应的十六进制是:77 6F 72 6C 64
所以hello world! 对应的十六进制是:68 65 6C 6C 6F 20 77 6F 72 6C 64 21
注意编辑的时候光标暂停的位置只有先输入字母才能更改成功,修改好后 右键Apply changes应用
退出后保存
此时已经so修改完毕
大功告成,hello 52pojie! --> hello world!
② 最强的VB反编译软件是
现在感觉实用的
ProcessDasm 0.2
下载地址 http://secrecy.ayinfo.ha.cn/soft/268.htm
VB RezQ
下载地址
http://secrecy.ayinfo.ha.cn/soft/243.htm
破解的话 现在一般都加了壳 脱壳用
PEiD v0.93
下载地址 http://www3.3800cc.com/Soft/jmhb/1026.html
现在的软件大都加了壳,给破解汉化枣竖带来非常大的不便。PEiD 能够侦测出几乎所有的壳,其数量已超过 470 种 PE 文件的加壳类型和签名,新的 0.93 版本增加了命令行的操作支持,使用非常方便。经分析是目前各类查壳工具中性能最强大的一款。另凳凳大外还可识别出粗历 EXE 文件是用什么语言编写的,比如:VC++、Delphi、VB 或 Delphi
等。
不加分没天理吖
③ 如何修改Android应用程序的图标和名字
利用反编译工具“安卓修改大师”可以修改Android应用程序的图标和名字。具体操作请参照以下步骤。
1、在应用下载网站下载“安卓修改大师”软件,下载完成后,安装到电脑系统中。
④ 谁能帮我把一个hex文件反编译为c语言文件
文件有两种,一种是文本文件,一种是程序二进制文件,不管哪种文件都可以用十六进制编码来显示,称为hex文件。
1、文本Hex文件一般不需要转成C语言,更多的是程序二进制文件,用十六进制显示,可以转换成C语言,一般使用相应的反汇编程序来实现,这方面的工具很多,不同的平台略有不同。Windows平台一般常用的OllyDbg、Windbg、IDA,Linux平台使用最多的是GDB和Linux版的IDA。
OllyDbg,简称OD,一般是软件逆向工程爱好者,最先使用的一个工具,但是因为当下不在更新,所以一般用一般用于学习使用,下图中左上角的区域即为反汇编区域 ,用户可以根据汇编指令,分析程序算法,然后自己编写代码。
通过这个实例 ,相信应该能理解一个大致的流程啦。
⑤ Flash反编译软件ASV2013支持Flash Builder 4.7吗
支持查看代码!关于Adobe
Alchemy(Adobe
Flascc),Flash反编译软件ASV2013反编译出的AS3代码可读性是最好的.但是因为源码是C语言,通过Adobe
Alchemy编译为AS3代码,所以反编译的结果和常规的AS3代码有所不同.而且出于出于加密算法的目的,Adobe
Alchemy(flascc)所编译的SWC里面,往往使用了RSA,AES,MD5等算法,使最终代码异常复杂.但有加密就有解密.
判断一个SWF或SWC是否使用了Adobe
Alchemy有个小技巧:如果代码中有cLibInit,cmole或者cLibInit.init(),就说明此文件使用了Adobe
Alchemy(Adobe
Flascc)技术.这时应该使用ACR(ActionScript
Code
Replacer)直接进行代码替换,或注入新的AS3类,从而轻松调用其中的类库,无需反编译,也能实现理想效果.
如果只是想提取网页Flash素材进行分析,应该使用Flash素材提取工具FRC(Flash
Resource
Catcher).
⑥ 怎么把class文件反编译成java文件
一、基本用法
Usage:jad [option(s)]
直接输入类文件名,且支持通配符,如下所示。
c:java>jad example1.class
c:java>jad *.class
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。
二、Option -o
不提示,覆盖源文件
三、Option -s
c:java>jad -sjava example1.class
反编译结果以.java为扩展名。
四、Option -p
将反编译结果输出到屏幕
c:java>jad -p example1.class
将反编译结果重定向到文件
c:java>jad -p example1.class>example1.java
五、Option -d
指定反编译的输出文件目录
c:java>jad -o -dtest -sjava *.class
六、jad:反编译工具下载
可以将class文件反编译成java文件
假设将jad.exe安装在f:/java/jad目录下
把要反编译的文件*.class复制到此目录下,接着接以下步骤,
在命令行窗口环境中进入jad目录,
然后运行:jad -s java *.class (附,*.class指要反编译的文件名)
如果*.class文件和jad程序不在同一个目录,就要用到path环境变量,
将jad 所在目录加到path路径中即可:set path=%path%;f:/java/jad
若要了解jad更为详细的使用帮助信息,直接运行jad.exe查看
⑦ 怎么解压缩flash
我先纠正一下.flash文件.swf的源文件不是.ini,而是.fla,然后才可以用flash制作软件编辑。
下面告诉你怎么提取flash的源文件,也就是用.swf反编译为.fla文件,兄弟请听好!
你下载这个flash元素提取软件(可以反编译swf为fla)
下载地址为:http://202.194.137.16/hxbh/soft/flash%D4%AA%CB%D8%CC%E1%C8%A1/FLASH.rar
解压缩,里面有个文件叫Imperator Fla Full.EXE
双击运行,点“选择flash”,在浏览里选中那个时钟flash,然后点击“保存fla”,就可以把你想编辑的flash反编译为fla源文件,下面的工作就是用人家的源码来实现自己的目的了,hoho,估计你做的.
参考资料:无.本人两年的flash制作经验。