⑴ VB6可以被很多软件反编译,那学VB还有何用
理论上,任何软件都可以被反编译,只是时间问题。与汇编、C语言比较VB6属于比较难反编译的了,如果不是做商业软件,学一种编程语言的作用是能方便工作,提高效率。
VB6编译器确实过时了,而且VB6有自身不足,但是一般软件还是可以做的,而且比VB.net要小很多,VB.net的优点是很多东西都是现成的,比如菜单,可以直接设置出各种效果来,用VB6就要掌握API和自绘技术,或者借用第三方控件。但是通过这样可以提高自己的编程水平,缺点是开发效率低。
⑵ c语言反编译要学多久
掌握C语言反编译技术并非一日之功,需要投入一定的时间和精力。首先,初学者需掌握C语言的基本语法和编程技巧,这通常需要几个月的时间来熟练掌握。其次,学习反编译技术需要深入了解底层机器码和汇编语言,同时理解二进制文件结构和逆向工程的基本原理。这个过程可能需要数月至数年的时间,且要求学习者具备扎实的计算机基础知识和高度的耐心。
实践经验对于提高反编译技术至关重要。通过经常进行实际的反编译练习和项目,学习者可以逐步提高自己的技术水平。反编译过程不仅需要理论知识,更需要实际操作中的经验积累。因此,不断实践是提升反编译技能的关键。
总体而言,学习C语言反编译技术可能需要几年的时间。这期间,学习者需不断学习新知识、积累实践经验,并保持耐心和毅力。虽然这一过程可能漫长,但只要坚持不懈,最终能够掌握反编译技术。
反编译C语言是一项复杂且需要长期投入的工作。学习者需要从基础开始,逐步深入学习,直至能够熟练掌握反编译技术。在这个过程中,理论学习和实践操作同样重要,两者相辅相成,缺一不可。
反编译技术的应用场景广泛,不仅限于破解软件,还可以用于分析和优化代码。掌握这一技术不仅能帮助学习者更好地理解底层代码逻辑,还能提高软件开发和维护的能力。
⑶ android软件安全与逆向分析的书名
本书由浅入深、循序渐进地讲解了Android 系统的软件安全、逆向分析与加密解密技术。包括Android软件逆向分析和系统安全方面的必备知识及概念、如何静态分析Android 软件、如何动态调试Android 软件、Android 软件的破解与反破解技术的探讨,以及对典型Android 病毒的全面剖析。
本书适合所有Android 应用开发者、Android 系统开发工程师、Android 系统安全工作者阅读学习。 丰生强(网名非虫)
Android软件安全专家。看雪论坛Android安全版版主;安卓巴士开发交流版版主。
对Android软件与系统安全有狂热的爱好和独到的见解,对Android系统的全部源代码进行过深入地研究和分析。逆向分析实战经验丰富。
在国内信息安全杂志上发表过多篇有价值的软件安全文章,目前就职于国内某Android开发企业,常年混迹于看雪论坛(ID非虫)。
作者邮箱:fei_cong@hotmail.com
愿与国内安全爱好者共同交流与探讨安全技术。 第1章 Android程序分析环境搭建11.1 Windows分析环境搭建11.1.1 安装JDK11.1.2 安装Android SDK31.1.3 安装Android NDK51.1.4 Eclipse集成开发环境61.1.5 安装CDT、ADT插件61.1.6 创建Android Virtual Device81.1.7 使用到的工具91.2 Linux分析环境搭建91.2.1 本书的Linux环境91.2.2 安装JDK91.2.3 在Ubuntu上安装Android SDK101.2.4 在Ubuntu上安装Android NDK111.2.5 在Ubuntu上安装Eclipse集成开发环境121.2.6 在Ubuntu上安装CDT、ADT插件131.2.7 创建Android Virtual Device131.2.8 使用到的工具151.3 本章小结15第2章 如何分析Android程序162.1 编写第一个Android程序162.1.1 使用Eclipse创建Android工程162.1.2 编译生成APK文件192.2 破解第一个程序202.2.1 如何动手?202.2.2 反编译APK文件202.2.3 分析APK文件212.2.4 修改Smali文件代码262.2.5 重新编译APK文件并签名262.2.6 安装测试272.3 本章小结28第3章 进入Android Dalvik虚拟机293.1 Dalvik虚拟机的特点——掌握Android程序的运行原理293.1.1 Dalvik虚拟机概述293.1.2 Dalvik虚拟机与java虚拟机的区别293.1.3 Dalvik虚拟机是如何执行程序的343.1.4 关于Dalvik虚拟机JIT(即时编译)363.2 Dalvik汇编语言基础为分析Android程序做准备373.2.1 Dalvik指令格式373.2.2 DEX文件反汇编工具393.2.3 了解Dalvik寄存器403.2.4 两种不同的寄存器表示方法——v命名法与p命名法423.2.5 Dalvik字节码的类型、方法与字段表示方法433.3 Dalvik指令集443.3.1 指令特点453.3.2 空操作指令453.3.3 数据操作指令463.3.4 返回指令463.3.5 数据定义指令463.3.6 锁指令473.3.7 实例操作指令473.3.8 数组操作指令483.3.9 异常指令483.3.10 跳转指令483.3.11 比较指令493.3.12 字段操作指令503.3.13 方法调用指令503.3.14 数据转换指令513.3.15 数据运算指令513.4 Dalvik指令集练习——写一个Dalvik版的Hello World523.4.1 编写smali文件523.4.2 编译smali文件543.4.3 测试运行543.5 本章小结55第4章 Android可执行文件564.1 Android程序的生成步骤564.2 Android程序的安装流程594.3 dex文件格式664.3.1 dex文件中的数据结构664.3.2 dex文件整体结构684.3.3 dex文件结构分析714.4 odex文件格式804.4.1 如何生成odex文件804.4.2 odex文件整体结构814.4.3 odex文件结构分析834.5 dex文件的验证与优化工具dexopt的工作过程884.6 Android应用程序另类破解方法914.7 本章小结93第5章 静态分析Android程序945.1 什么是静态分析945.2 快速定位Android程序的关键代码945.2.1 反编译apk程序945.2.2 程序的主Activity955.2.3 需重点关注的Application类955.2.4 如何定位关键代码——六种方法965.3 smali文件格式975.4 Android程序中的类1005.4.1 内部类1005.4.2 监听器1025.4.3 注解类1055.4.4 自动生成的类1085.5 阅读反编译的smali代码1105.5.1 循环语句1105.5.2 switch分支语句1155.5.3 try/catch语句1215.6 使用IDA Pro静态分析Android程序1275.6.1 IDA Pro对Android的支持1275.6.2 如何操作1285.6.3 定位关键代码——使用IDA Pro进行破解的实例1325.7 恶意软件分析工具包——Androguard1355.7.1 Androguard的安装与配置1355.7.2 Androguard的使用方法1375.7.3 使用Androguard配合Gephi进行静态分析1445.7.4 使用androlyze.py进行静态分析1485.8 其他静态分析工具1525.9 阅读反编译的Java代码1525.9.1 使用dex2jar生成jar文件1525.9.2 使用jd-gui查看jar文件的源码1535.10 集成分析环境——santoku1545.11 本章小结156第6章 基于Android的ARM汇编语言基础——逆向原生!1576.1 Android与ARM处理器1576.1.1 ARM处理器架构概述1576.1.2 ARM处理器家族1586.1.3 Android支持的处理器架构1596.2 原生程序与ARM汇编语言——逆向你的原生Hello ARM1606.2.1 原生程序逆向初步1606.2.2 原生程序的生成过程1626.2.3 必须了解的ARM知识1646.3 ARM汇编语言程序结构1666.3.1 完整的ARM汇编程序1666.3.2 处理器架构定义1676.3.3 段定义1686.3.4 注释与标号1696.3.5 汇编器指令1696.3.6 子程序与参数传递1706.4 ARM处理器寻址方式1706.4.1 立即寻址1706.4.2 寄存器寻址1716.4.3 寄存器移位寻址1716.4.4 寄存器间接寻址1716.4.5 基址寻址1716.4.6 多寄存器寻址1716.4.7 堆栈寻址1726.4.8 块拷贝寻址1726.4.9 相对寻址1726.5 ARM与Thumb指令集1736.5.1 指令格式1736.5.2 跳转指令1746.5.3 存储器访问指令1756.5.4 数据处理指令1776.5.5 其他指令1846.6 用于多媒体编程与浮点计算的NEON与VFP指令集1856.7 本章小结186第7章 Android NDK程序逆向分析1877.1 Android中的原生程序1877.1.1 编写一个例子程序1877.1.2 如何编译原生程序1887.2 原生程序的启动流程分析1947.2.1 原生程序的入口函数1947.2.2 main函数究竟何时被执行1987.3 原生文件格式1997.4 原生C程序逆向分析2007.4.1 原生程序的分析方法2007.4.2 for循环语句反汇编代码的特点2047.4.3 if...else分支语句反汇编代码的特点2087.4.4 while循环语句反汇编代码的特点2117.4.5 switch分支语句反汇编代码的特点2157.4.6 原生程序的编译时优化2187.5 原生C++程序逆向分析2227.5.1 C++类的逆向2227.5.2 Android NDK对C++特性的支持2257.5.3 静态链接STL与动态链接STL的代码区别2277.6 Android NDK JNI API逆向分析2327.6.1 Android NDK提供了哪些函数2327.6.2 如何静态分析Android NDK程序2337.7 本章小结235第8章 动态调试Android程序2368.1 Android动态调试支持2368.2 DDMS的使用2378.2.1 如何启动DDMS2378.2.2 使用LogCat查看调试信息2388.3 定位关键代码2408.3.1 代码注入法——让程序自己吐出注册码2408.3.2 栈跟踪法2448.3.3 Method Profiling2478.4 使用AndBug调试Android程序2508.4.1 安装AndBug2518.4.2 使用AndBug2518.5 使用IDA Pro调试Android原生程序2548.5.1 调试Android原生程序2558.5.2 调试Android原生动态链接库2568.6 使用gdb调试Android原生程序2608.6.1 编译gdb与gdbserver2608.6.2 如何调试2628.7 本章小结264第9章 Android软件的破解技术2659.1 试用版软件2659.1.1 试用版软件的种类2659.1.2 实例破解——针对授权KEY方式的破解2659.2 序列号保护2719.3 网络验证2729.3.1 网络验证保护思路2729.3.2 实例破解——针对网络验证方式的破解2739.4 In-app Billing(应用内付费)2779.4.1 In-app Billing原理2779.4.2 In-app Billing破解方法2809.5 Google Play License保护2819.5.1 Google Play License保护机制2819.5.2 实例破解——针对Google Play License方式的破解2839.6 重启验证2849.6.1 重启验证保护思路2859.6.2 实例破解——针对重启验证方式的破解2859.7 如何破解其他类型的Android程序2969.7.1 Mono for Android开发的程序及其破解方法2969.7.2 Qt for Android开发的程序及其破解方法3019.8 本章小结309第10章 Android程序的反破解技术31010.1 对抗反编译31010.1.1 如何对抗反编译工具31010.1.2 对抗dex2jar31110.2 对抗静态分析31210.2.1 代码混淆技术31210.2.2 NDK保护31510.2.3 外壳保护31610.3 对抗动态调试31610.3.1 检测调试器31610.3.2 检测模拟器31710.4 防止重编译31810.4.1 检查签名31810.4.2 校验保护31910.5 本章小结320第11章 Android系统攻击与防范32111.1 Android系统安全概述32111.2 手机ROOT带来的危害32111.2.1 为什么要ROOT手机32111.2.2 手机ROOT后带来的安全隐患32211.2.3 Android手机ROOT原理32211.3 Android权限攻击32911.3.1 Android权限检查机制32911.3.2 串谋权限攻击33311.3.3 权限攻击检测33611.4 Android组件安全33911.4.1 Activity安全及Activity劫持演示34011.4.2 Broadcast Receiver 安全34311.4.3 Service安全34511.4.4 Content Provider安全34611.5 数据安全34711.5.1 外部存储安全34711.5.2 内部存储安全34811.5.3 数据通信安全35011.6 ROM安全35111.6.1 ROM的种类35211.6.2 ROM的定制过程35211.6.3 定制ROM的安全隐患35911.6.4 如何防范36011.7 本章小结361第12章 DroidKongFu变种病毒实例分析36212.1 DroidKongFu病毒介绍36212.2 配置病毒分析环境36312.3 病毒执行状态分析36412.3.1 使用APIMonitor初步分析36512.3.2 使用DroidBox动态分析36912.3.3 其他动态分析工具37312.4 病毒代码逆向分析37612.4.1 Java层启动代码分析37612.4.2 Native层启动代码分析38112.4.3 Native层病毒核心分析39312.5 DroidKongFu病毒框架总结40412.6 病毒防治40612.7 本章小结406
⑷ 混淆的class文件怎么进行反编译
一般情况下Java应用的开发者为了保护代码不被别人抄袭,在生成class文件的时候都java文件进行了混淆,这种class文件用反编译工具得到的结果很难看懂,并且不能进行编译。
从研究的角度,浅析如何读懂这种反编译过来的文件。
例子一:赋值
反编译过来的代码如下:
Node node;
Node node1 = _$3.getChildNodes().item(0);
node1;
node1;
JVM INSTR swap ;
node;
getChildNodes();
0;
item();
getChildNodes();
0;
item();
getNodeValue();
String s;
s;
原始语句:
Node node;
Node node1 = currDocument.getChildNodes().item(0);
node = node1;
String s = node.getChildNodes().item(0).getChildNodes().item(0).getNodeValue();
注解:
JVM INSTR swap ; //赋值语句
练习:
String s1;
String s8 = node.getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
s8;
s8;
JVM INSTR swap ;
s1;
10;
Integer.parseInt();
int i;
i;
例子二:不带参数创建对象
反编译过来的代码如下:
JVM INSTR new #244 ;
JVM INSTR p ;
JVM INSTR swap ;
CrossTable();
CrossTable crosstable;
crosstable;
原始语句:
CrossTable crosstable = new CrossTable();
注解:
练习:
JVM INSTR new #246 ;
JVM INSTR p ;
JVM INSTR swap ;
Database();
Object obj;
obj;
例子三:带参数创建对象
反编译过来的代码如下:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s2);
StringBuffer();
s.substring(j, i);
append();
s6;
append();
toString();
s2;
原始语句:
s2 = (new StringBuffer(String.valueOf(s2))).append(s.substring(j, i)).append(s6).toString();
注解:
此语句实际上是:s2 += s.substring(j, i) + s6;
练习:
例子四:for循环
反编译过来的代码如下:
int k = 0;
goto _L4
_L8:
...
k++;
_L4:
if(k < as.length) goto _L8; else goto _L7
原始语句:
for(int k=0;k < as.length;k++)
{
...
}
注解:
例子五:while循环
反编译过来的代码如下:
String s1 = "";
goto _L1
_L3:
JVM INSTR new #262 ;
JVM INSTR p ;
JVM INSTR swap ;
String.valueOf(s1);
StringBuffer();
_$2(resultset, s, l);
append();
toString();
s1;
_L1:
if(resultset.next()) goto _L3; else goto _L2
原始语句:
String s1 = "";
while(resultset.next())
{
s1 = s1 + resultSetToString(resultset, s, l);
}
⑸ android 软件反编译 可以获得源代码吗
android培训中有很重要的一个知识点就是反编译获得java源代码,但是这个知识点又恰恰是很多同学的软肋,很难掌握,今天就来帮你解决你的难题。
环境:win7
步骤:
1,下载工具包
dex2jar-0.0.9.13--反编译工具--name=dex2jar-0.0.9.13.zip&can=2&q=
jd-gui-0.3.5.windows.zip--反编译后的文件查看器
分别解压。
2,将源apk的后缀名修改.jar并解压,得到其中的classes.dex文件,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.13文件夹
在命令行下定位到dex2jar.bat所在目录 (开始>运行>cmd>cd c:\dex2jar-0.0.9.13)
运行 :dex2jar.bat classes.dex
将生成 classes_dex2jar.jar
接下来就可以通过jdgui下的jd-gui.exe程序打开生成的jar包看到java代码了。
多看多做多练习是学习语言必须经历的过程,学习不是一朝一夕的事情,只有恒之以衡的坚持才能带来成功。希望以上的Android教程能给大家带来帮助。
⑹ 安卓APK文件怎样去除内置广告及修改图标和文字
一:首先会用到几个软件,一个是dex解包、打包工具、Notepad++
Portable(dex文本编辑工具)、以及签名工具和JAVA运行环境安装,其他软件可以到这个地址下载:http://yunpan.cn/lk
/sVkRQBi4HAJhu?sid=301
二:把需要去广告的软件,右键用7-zip解压方式打开,把classes.dex拉出来。
三:用dex工具解压classes.dex文件(具体方法看包里面说明)。打开Notepad++ Portable搜索 http:// (注意复制)
四:如图双击搜索到的网址,在上面改为无效网址就可以了。或直接删除引号里的网址,然后保存“全部”文件(这个修改时要注意,有的软件如果修改错误的话可能不能安装,可以网上搜一些是广告的连接。我只是提供一个方法,具体大家多练习研究吧)
引用:
还有ads字样文件
都可能是广告
但schemas.android.com开头的不是
去广告步骤:
1、去除广告下载源
解包classes.dex(方法上面已讲过),用Notepad++ Portable搜索广告下载源地址(若不知道软件用的是哪个供应商的广告的话,最好两家的下载源都搜索下)
2、去除广告界面
① 将刚刚已经替换了classes.dex文件的apk安装包用反编译。
② 用Notepad++ Portable搜索广告代码(上面已列出)
如图,将搜索路径定位到res文件夹(就是反编译后的res文件夹),代码只搜索开头就行了,如:com.admob.android.ads.AdView 和 com.google.ads.GoogleAdView。
如图:
搜索结果:
③ 双击黄颜色区域,修改下图上方的代码
android:layout_width="fill_parent" 修改为 android:layout_width="0.0dip"
android:layout_height="wrap_content" 修改为 android:layout_height="0.0dip"
修改后:
将所有搜索到的代码按照上面修改,完成后保存
五:封包classes文件夹(见包里说明),然后把classes.dex文件再次拖动到用解压方式打开的APK文件内。删除图下2个或3个文件,签名安装即可。
修改更换安卓软件图标
一个安卓程序的图标有时候并不见得每个人都喜欢,而且,某些APK程序不具备高分辨率的程序图标,造成在程序在高分辨率的屏幕下图标显示效果较差,所以有必要的时候是可以更改一下以满足个性化需求的,下面说说具体怎么做。
工具
7-zip
DoAPk.exe(或AndroidResEdit选择签名)
Java环境
步骤/方法
1.首先,把要更改图标的APK程序用7-zip进行解压
2.解压出来,看到如下文件和目录,其中看到一个名为res的目录,这个目录中存放的就是安装程序的资源文件,包括各种图片素材和声音素材,当然,我们需要的程序图标就包含在里面,双击打开res这个目录
3.之后在系统上方的搜索栏搜索带有"icon"字样的文件。通过基本判断可以得知,app_icon.png就是程序的图标,或找程序的图标(你懂得).
4.找一个自己喜欢的程序图标,需要注意的是,替换后的程序图标的名字,格式,分辨率大小都要和原图标一致,然后才把原来的app_icon.png替换.
5.替换完成之后,我们需要重新打包程序。回到程序解压之后的目录,删除原来的图标文件。拖动新的图标到里面。搞定!
6.打开AndroidResEdit选择签名.或打开Doapk.exe点击“单独制作ROM和APK签名”这一按钮,之后会弹出一个窗口,这里让用户选择自己需要签名的APK文件.
7.弹出窗口中选择好自己改好图标的APK文件,然后点击制作签名,这样就完成了对APK程序的签名,这样的APK程序在手机上安装才不会弹出错误提示
注意事项:DOAPK需要java环境的支持,使用前得先安装。更改前备份好源程序文件
文字修改
相信很多机友(特别是有强迫症的童鞋,比如我)遇到过这个问题,甚至可以说是困扰;
很喜欢一款软件,全身上上下下就一个看不顺眼 —— 软件名字;
下面介绍如何修改软件名称。
别告诉重命名可以通过第三方桌面解决,那个没有技术含量!!而且改的只是皮毛哦。
一、准备工作:
软件ArscEditor.exe
二、修改 APK 软件名称:
1、右击 APK 安装包,用压缩软件解压到当前文件夹;(如下图所示)
2、解压后找到文件“resources.arsc”;
3、打开将文件“resources.arsc”直接拖入ARSC编辑器的空白处中;(如下图所示)
4、选择“string”标签,并找到键值“app_name”;
5、将“区域”切为CN(有的不用切换),然后在“区域值”中修改你想要的软件名字,修改好后点击“保存当前值”;
6、点击“文件”,选择“保存”,并覆盖保存;
7、右击 APK 安装包,用压缩软件打开;(注:无需解压)
8、将修改好的“resources.arsc”文件直接拖入进安装包内并确认覆盖原文件;(如下图所示)
三、重新签名:
1、打开所得到的文件夹,并打开签名工具“AndroidResEdit.exe”;
2、选择“签名” - “签名 apk 文件”;签名后生成的新安装包名为“XXX-SignFile.apk”,安装到手机。