android安全攻防,反编译代码

       首先要声明的是,反编译别人的程序,并不是值得炫耀的技能。但是自己依然去学习、分享,就是为了通过理解反编译的原理,来更好的避免自己的程序被别人攻击,避免自己公司的核心技术被窃取。好了,多的不说了,现在开始直奔主题,讲一下自己通过在网上以及资料上学习到的一些反编译的知识。ps:新手第一次写博客,如有不妥当的地方,望各位指出并理解。

       我们都知道,android程序打包之后会生成APK文件,这个文件是可以安装到任何安卓手机上的,我们反编译,其实就是对这个文件进行反编译。安卓的反编译主要分为两部分,一个是反编译代码,一个是反编译文件。

       首先来学习反编译代码,在进行反编译之前,我们最好自己先写一个Demo来测试(当然了,也可以用别的公司的APP进行反编译),我自己之前建了一个项目,这里把Activity里的代码和xml里面的代码粘贴上来。

      这个是Activity里面的代码:

    

	public class MainActivity extends AppCompatActivity {

   	 @Override
    	protected void onCreate(Bundle savedInstanceState) {
        	 super.onCreate(savedInstanceState);
       		 setContentView(R.layout.activity_main);
      	 	 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        	 setSupportActionBar(toolbar);

       		 FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        	 fab.setOnClickListener(new View.OnClickListener() {
           	  @Override
            	public void onClick(View view) {
           	     Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            	}
        	});
   	 }

       这个是xml里面的代码:

    

	<?xml version="1.0" encoding="utf-8"?>
	<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    		xmlns:app="http://schemas.android.com/apk/res-auto"
    		xmlns:tools="http://schemas.android.com/tools"
    		android:layout_width="match_parent"
    		android:layout_height="match_parent"
    		android:fitsSystemWindows="true"
    		tools:context="com.soufun.user.firstapp.MainActivity">

    	<android.support.design.widget.AppBarLayout
        	android:layout_width="match_parent"
        	android:layout_height="wrap_content"
        	android:theme="@style/AppTheme.AppBarOverlay">
	
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    	</android.support.design.widget.AppBarLayout>

    	<include layout="@layout/content_main" />

    	<android.support.design.widget.FloatingActionButton
        	android:id="@+id/fab"
        	android:layout_width="wrap_content"
        	android:layout_height="wrap_content"
        	android:layout_gravity="bottom|end"
        	android:layout_margin="@dimen/fab_margin"
        	android:src="@android:drawable/ic_dialog_email" />

	</android.support.design.widget.CoordinatorLayout>

      好了,一个简单的项目就建立完了,运行之后,就会以APK包的形式显示在安卓手机上。

     

      

     好了,到这里,准备工作就已经完成了,接下来我们开始对这个APK包进行反编译吧。

    反编译代码:

      要想反编译代码,首先我们需要两个工具

     dex2jar 这个工具用于将dex文件转换成jar文件               下载地址:http://sourceforge.net/projects/dex2jar/files/

     jd-gui 这个工具用于将jar文件转换成java代码                 下载地址:http://jd.benow.ca/


    将这两个工具下载后并解压,然后我们开始对这个APK进行反编译代码,解压dex2jar后,你会发现有很多文件,如下图所示:

  

其中我们要用到的是d2j_dex2jar.bat这个文件,然后我们将APK包进行解压,如果不知道怎么解压,可以先将APK的格式改成zip,然后再解压就可以了。加压成功后你会发现里面有个classes.dex文件,如图所示:

这个classes.dex里面放的就是java代码。我们将他拷贝到dex2jar拷贝后的目录下,并在cmd中进入相同的目录。



然后输入如下命令:  d2j-dexjar classes.dex   得到如下结果。没有出现错误,转换就结束了。



现在观察dex2jar目录下,多了一个jar文件,如下:

这个jar文件里面,存放的就是所有java的源码,接下来,我们借助jd-jui工具,来转化这个jar文件变成java代码。如下





这样,我们就看到了APK的源码,也就是反编译代码成功了。好了,到了这里,反编译代码掌握的应该差不多了,下一篇,我将讲述自己学习的关于如何反编译资源的内容。
































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值