为什么我用show java手机版反编译出来的工程用AIDE打开会有很多错误?

为什么我用show java手机版反编译出来的工程用AIDE打开会有很多错误?,第1张

本文详细介绍了如何反编译一个未被混淆过的Android APK,修改smali字节码后,再回编译成APK并更新签名,使之可正常安装。破译后的apk无论输入什么样的用户名和密码都可以成功进入到第二个Activity。

有时难免要反编译一个APK,修改其中的若干关键判断点,然后再回编译成一个全新的可用的apk,这完全是可实现的。若要完成上述工作,需要以下工具,杂家后面会把下载链接也附上。这些软件截止本文发布时,经过杂家确认都是最新的版本。

1APK-Multi-Toolv1011zip 用它来反编译apk,得到smali类型的源码和资源文件。一般来讲,直接解压缩一个apk也可以看到其资源文件,但部分xml是不可阅读的,需用此工具反编译。网上流传较广的是一个经过高人汉化过的版本103,第一次使用这个工具可以用这个汉化的版本,熟悉其命令。但经过杂家测试,这个汉化的版本再回编译apk签名时已经出问题了,签不了,最终用的最新版才ok。

2dex2jar-00915zip 用于将一个apk文件转换成jar类型的文件,转换之后再利用下面的jd-gui工具才能看到其java代码。上面的apk-tool固然强大,但是反编译出来是smali文件,即dalvik字节码,类似汇编语言的一种代码,直接阅读如天书一样,为此我们需要使用dex2jar + jd-gui来得到其java代码,进行阅读找到要修改的关键点。

3jd-gui-036windowszip 可以打开一个jar类型的文件,看到java代码。并能将代码保存,保存后再弄到sourceinsight里就方便看了。最好使用本文所说的最新版本,使用老版本会发现一个BActivity,如果里面有内部类,则又多出一个BActivity$1java,类似这种文件。新版本没这个问题。

4Smali2Java100558zip 用于将smali文件转成java文件,这个工具仅仅是备用。因为用上面三个工具已经能够胜任本文的要求了。

如果第一次接触反编译,不了解smali语法,可以阅读链接1 链接2

下面杂家先上一个Android APK,用来简单模拟用户登录的情况,注意只能是模拟哈。因为正式的apk很少有在本地进行判断的。此apk要求用户输入用户名和密码,如果用户名为yanzi,密码为123,则认为合法,自动跳转到第二个Activity。否则提示用户名或密码不正确。

<span style="font-family:Comic Sans MS;font-size:18px;">package orgyanzidecomdemoactivity;

import orgyanzidecompiledemoR;

import androidappActivity;

import androidcontentIntent;

import androidosBundle;

import androidviewMenu;

import androidviewView;

import androidwidgetButton;

import androidwidgetEditText;

import androidwidgetToast;

public class LoginActivity extends Activity {

EditText loginName = null;

EditText loginPswd = null;

Button loginBtn = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_login);

initUI();

loginBtnsetOnClickListener(new ViewOnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if(isAllowLogin()){

Intent intent = new Intent(LoginActivitythis, SecondActivityclass);

startActivity(intent);

LoginActivitythisfinish();

}

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present

getMenuInflater()inflate(Rmenulogin, menu);

return true;

}

private void initUI(){

loginName = (EditText)findViewById(Ridedit_login_name);

loginPswd = (EditText)findViewById(Ridedit_login_pswd);

loginBtn = (Button)findViewById(Ridbtn_login);

}

private boolean isAllowLogin(){

String name = loginNamegetText()toString()trim();

String pswd = loginPswdgetText()toString()trim();

if(name != null && pswd != null){

if(nameequals("") || pswdequals("")){

ToastmakeText(this, "密码或用户名不能为空", ToastLENGTH_SHORT)show();

return false;

}

}

if(nameequals("yanzi") && pswdequals("123")){

return true;

}else{

ToastmakeText(getApplicationContext(), "用户名或密码不符", ToastLENGTH_SHORT)show();

}

return false;

}

}

</span>

附上出处链接:http://blogcsdnnet/yanzi1225627/article/details/38425453

1首先新建一个文件夹,如c:\\myWorkspace

2然后在myWorkspace中再新建一个文件夹,名为你的项目名

3如myProject,然后把你的源代码放到myProject中。

那么现在有文件目录如下

c:\myWorkspace\myProject\src

c:\myWorkspace\myProject\bin

c:\myWorkspace\myProject\build

等等。

4如果你导入的源代码原本就是一个工程,那么2和3可以省略,直接把工程放到myWorkspace下

如c:\myWorkspace\SomeProject

5打开myeclipse 选择工作空间(workspace)为myWorkspace

6点击导航栏 "File"->"New"->"Java Project"

7选择"create project from existing source",并点击"Browse"

8到C盘下选择myProject

9"Project Name" 必须填写与你的工程文件夹名一致。如myProject

10 点击"Finish"完成

build放的应该是编译后的class文件

db放的应该是数据库现相关的文件

res放的是其他资源

src放的是java源文件

  Iava Iava是由艾华通联软件有限公司于2008年3月推出的虚拟机平台,是非智能手机的智能化解决方案。

  Iava平台由Iava虚拟机(Iava Virtual Machine)和Iava 应用编程接口(Application Programming Interface、简称API)构成。Iava 应用编程接口为Iava应用提供了一个独立于操作系统的标准接口,可分为基本部分和GUI。在PC上安装了IavaIDE和Ivm后就可以进行Iava应用的开发。[编辑本段]Iava平台--概述

  Iava是一个运行在操作系统之上的虚拟机平台。通过在普通手机里装入一个虚拟平台(Iava“艾华”平台),使之免费升级为准智能手机,从而通过平台上的各种应用与服务,为手机厂、SP、我们产生收益,形成共赢。Iava平台的第一个应用产品(游戏模拟器)2007年已投入商用,全年装机量达到近700万台,目前国内一线品牌占有率超过80%。[编辑本段]Iava平台--特点与优势

  1、完备的安全性保证:

  由于IAVA平台采用安全的虚拟机技术,即在物理CPU上模拟设计另一个CPU,应用程序不能直接访问读写操作系统,可以避免死机、返修等恶性错误。

  2、多级认证功能:

  类似诺基亚最新的操作系统所采用的认证技术,IAVA平台拥有二级认证,未经认证的程序不能调用打电话、发短信及删除系统文件等函数。保证杜绝病毒及恶意程序的攻击破坏。

  3、执行效率高:

  支持汇编语句,执行效率是JAVA的3-20倍。

  4、开发容易、平台稳定:

  采用C语言开发程序;IAVA程序可以直接编译为本地程序内置ROM中,也可打包作为下载后安装;Iava平台使用的是Lvc语言,其前身Lava语言从03年起累计已经内置于800多万台文曲星电子辞典、学习机中,已经非常成熟稳定。与标准C有很高的兼容度。支持标准C的大部分库函数,并结合Iava系统其它函数构成了丰富的Iava函数库。

  5、跨平台兼容性好:

  每种应用程序只需6个版本即可兼容80%以上的机型。即分辨率及输入方式相同的机型程序通用。

  6、市场前景广阔:

  为价位在千元左右手机提供智能软件平台,解决普通手机无法下载更新软件与服务,升级为“智能”手机。

  Iava平台--开发工具

  1、IavaIDE:

  是艾华公司提供的Iava应用程序PC端开发平台。IavaIDE基于 Visual C++ 60 建立, 所以开发者首先必须安装Vc。该平台用WIN32实现了Iava提供给应用程序的所有API,使应用程序能直接在Vc上进行开发和调试。

  2、Iava虚拟机:

  PC端安装虚拟机后,把Vc下生产的可执行程序可直接转换为Iava虚拟机运行程序。IavaIDE提供了一套脚本可以将源代码编译,打包为Iava程序,用户只要打开IavaIDE目录下的makefilebat就可以转换为Iava虚拟机运行程序。转换后在工程目录下生成一个lav文件。此lav文件就可以在手机上运行的Iava程序

  3、应用程序发布:

  编译生成的lav 可在 PC端IavaSimulator下测试,没问题后即可放到手机上发布了。

  4、Iava GUI:

  Iava平台带有GUI,但允许用户选择是否使用Iava GUI库。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4048572.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-12
下一篇2024-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存