我不会写Android,这是我第一个破解Android的例子,耗时接近一天,希望大神不要见笑!

本程序为商业软件,不便发布APK程序。

不要给我发消息,我不得回,有问题,直接回帖就可以了。

准备工作

在开始之前,要进行以下准备工作:

(1)安装JDK,至于版本,自己选择吧,目前我是用JDK1.6版,可以去官网下载安装,并进行环境配置;

(2)安装模拟器,APK软件要运行测试,需要环境,模拟器是个好东西,我用的是海马玩模拟器,不知道行不行;

(3)APK编辑器下载,现在我还是工具党,只能依靠工具,我用的是APK改之理,我并不知道为什么要取这么一个名字。

至于,这三个软件 ,哪个版本相互之间最搭配,现在我还不知道,只能在后面学习过程中总结发现。

限制测试

现在进入正题,在查看、编译APK之前,得让原版程序在模拟器上运行一下,一方面,可以检查apk文件是否有效,我有很多小伙伴经常拿着有问题的数据在那里测试,为了莫名的错误百度都用烂了;另一方面,可以看看软件到底有什么限制。下面以默认账户登陆,然后出现了"此硬件设备未授权!"的错误信息。其实,这个软件需要放置一个lic许可文件在根目录下,但我们没有这个lic许可文件……

反编译程序

将apk程序载入APK改之理3.2版,出现以下错误,果断换了2.5版,就成功进行反编译了。

注意,文件名不能有中文,不然,无法进行正常反编译。

搜索关键

下面是主界面,左边目录树是项目的文件,中间上面是主要视图窗体,中间下面是日志窗口,右边是搜索面板。现在我得搜索一下我们的重要线索"此硬件设备未授权",在右边的搜索面板没有找到任何结果!陷入了僵局……,注意,这里的代码并不是JAVA代码,而是一种叫Smali的语言,不是那么好理解,因为跳转比较多,有点让人头痛!要想看懂并修改这些代码,其语法可参考文章末尾的链接。

但后来发现,Smali中的字符串是Unicode编码,于是,复制了一段就可以转换成汉字。

后来发现,可以看到JAVA源代码,打开任意*.smali文件,在编辑工具栏,打开JAVA源码即可用;在这里面就可进行中文搜索了,现在找到了关键位置。

分析代码

由于打码非常麻烦,所以就不分析怎么具体修改Smali代码了,下面是JAVA源码,主要是判断i值,在Smali语法中,if-nez表示不等于0……,if-eqz表示等于0……

编译程序

修改完毕后,保存,菜单栏"编译"-"编译生成",即可编译生成程序。

如果出现签名不成功,菜单栏"工具"-"配置与选项",修改签名工具为jarsigner尝试。

运行测试

在模拟器上安装测试使用,如果成功,再拿到平板上进行实地测试。当然,不要看这文章一下子就写出来,在模拟上的测试,不止一次两次的,多次尝试,总会成功!

参考:

Smali语法学习与DEX文件详解:http://www.apkbus.com/android-181396-1-1.html

Android apk反编译基础:http://www.jb51.net/softjc/119036.html

apk反汇编之smali语法:http://bbs.pediy.com/showthread.php?p=1117963

Apk改之理(Apk IDE)使用常见问题:http://bbs.angeeks.com/thread-2617106-1-1.html

Android破解之Lic文件加密程序(首例)的更多相关文章

  1. 【Java】Swing+IO流实现一个简单的文件加密程序(demo版)

    留着参考 EncrytService package com.my.service; import java.io.File; import java.io.FileInputStream; impo ...

  2. Android版本的"Wannacry"文件加密病毒样本分析(附带锁机)

    一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...

  3. 【Java】Swing+IO流实现一个简单的文件加密程序(较完整版)

    留着参考 beans package com.my.bean; import java.io.Serializable; public class EncryptedFile implements S ...

  4. Android下使用Properties文件保存程序设置

    原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码.    读取.properties文件中的配置: String strValue ...

  5. 【转】Android下使用Properties文件保存程序设置

    原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码.    读取.properties文件中的配置:  String strValue ...

  6. android破解AndroidManifest.xml文件

     使用java -jar E:\AXMLPrinter2.jar E:\AndroidManifest.xml > E:\manifest.txt 但要先下载AXMLPrinter2.jar(h ...

  7. Android之zip文件加密解压及进度条的实现

    zip文件的解压能够使用java的zip库,可是没有实现对加密文件的解压功能,这里能够使用zip4j来实现.详细能够參看该文<Android下zip压缩文件加密解密的完美解决方式>.该文件 ...

  8. TEA加密算法的文件加密和解密的实现

    一.TEA加密算法简介 TEA加密算法是由英国剑桥大学计算机实验室提出的一种对称分组加密算法.它采用扩散和混乱方法,对64位的明文数据块,用128位密钥分组进行加密,产生64位的密文数据块,其循环轮数 ...

  9. 用python实现文件加密功能

    生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...

随机推荐

  1. yii2 [行为] behaviors 拦截器

    yii2 拦截器 在控制器中可以自定义对action的拦截器,拦截器需要继承 \yii\base\ActionFilter 参考代码: class BaseUserAuthorizeFilter ex ...

  2. 【NS2仿真】TCP协议

    # # ftp # \ # tcp sink # \ / # n0--------5M 2ms---------n1 # # set ns [new Simulator] set f [open ou ...

  3. SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...

  4. tcp为什要三次握手

    准备知识: 单工:信息只能单向传递.发送-->接收,单向,不能返回响应. 双工:指的是信息可双向发送. 全双工:信息可同时双向传递. 半双工:不能同时,单行道,一边传输完了,另一边才能发起传输. ...

  5. JS基础回顾,小练习(判断数组,以及函数)

    追梦子博客版权所有. // 判断arr是否为一个数组,返回一个bool值 方法1: function isArray(arr) { var str = arr.__proto__.constructo ...

  6. Knockout 新版应用开发教程之Computed Observables

    Computed Observables 如果你有监控属性firstName和lastName的话,此时如果你想要显示全名? 这个时候computed(以前叫做依赖)监控属性就出马了,这是一个函数用来 ...

  7. bootstrap插件学习-bootstrap.tab.js

    先看bootstrap-tab.js的结构 var Tab = function ( element ) {} //构造器 Tab.prototype ={} //构造器的原型 $.fn.tab = ...

  8. 左倾堆(一)之 图文解析 和 C语言的实现

    概要 本章介绍左倾堆,它和二叉堆一样,都是堆结构中的一员.和以往一样,本文会先对左倾堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理 ...

  9. Hadoop第8周练习—Pig部署及统计访问日志例子

    :搭建Pig环境 :计算每个IP点击次数 内容 运行环境说明 1.1     硬软件环境 线程,主频2.2G,6G内存 l  虚拟软件:VMware® Workstation 9.0.0 build- ...

  10. 字符编码(ASCII,Unicode和UTF-8) 和 大小端

    本文包括2部分内容:“ASCII,Unicode和UTF-8” 和 “Big Endian和Little Endian”. 第1部分 ASCII,Unicode和UTF-8 介绍 1. ASCII码 ...