Android破解之Lic文件加密程序(首例)
我不会写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文件加密程序(首例)的更多相关文章
- 【Java】Swing+IO流实现一个简单的文件加密程序(demo版)
留着参考 EncrytService package com.my.service; import java.io.File; import java.io.FileInputStream; impo ...
- Android版本的"Wannacry"文件加密病毒样本分析(附带锁机)
一.前言 之前一个Wannacry病毒样本在PC端肆意了很久,就是RSA加密文件,勒索钱财.不给钱就删除.但是现在移动设备如此之多,就有一些不法分子想把这个病毒扩散到移动设备了,这几天一个哥们给了一个 ...
- 【Java】Swing+IO流实现一个简单的文件加密程序(较完整版)
留着参考 beans package com.my.bean; import java.io.Serializable; public class EncryptedFile implements S ...
- Android下使用Properties文件保存程序设置
原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码. 读取.properties文件中的配置: String strValue ...
- 【转】Android下使用Properties文件保存程序设置
原文:http://jerrysun.blog.51cto.com/745955/804789 废话不说,直接上代码. 读取.properties文件中的配置: String strValue ...
- android破解AndroidManifest.xml文件
使用java -jar E:\AXMLPrinter2.jar E:\AndroidManifest.xml > E:\manifest.txt 但要先下载AXMLPrinter2.jar(h ...
- Android之zip文件加密解压及进度条的实现
zip文件的解压能够使用java的zip库,可是没有实现对加密文件的解压功能,这里能够使用zip4j来实现.详细能够參看该文<Android下zip压缩文件加密解密的完美解决方式>.该文件 ...
- TEA加密算法的文件加密和解密的实现
一.TEA加密算法简介 TEA加密算法是由英国剑桥大学计算机实验室提出的一种对称分组加密算法.它采用扩散和混乱方法,对64位的明文数据块,用128位密钥分组进行加密,产生64位的密文数据块,其循环轮数 ...
- 用python实现文件加密功能
生活中,有时候我们需要对一些重要的文件进行加密,Python 提供了诸如 hashlib,base64 等便于使用的加密库. 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而 ...
随机推荐
- 一个程序说明标准i/O缓冲的效率
来瞧一个程序,了解一下标准I/O中的缓冲区对程序运行的影响: #include<stdio.h>#include<unistd.h> int main(){ char a[2] ...
- js apply/call/caller/callee/bind使用方法与区别分析
一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
- Web services 安全 - HTTP Basic Authentication
根据 RFC2617 的规定,HTTP 有两种标准的认证方式,即,BASIC 和 DIGEST.HTTP Basic Authentication 是指客户端必须使用用户名和密码在一个指定的域 (Re ...
- Android应用安全之Content Provider安全
android平台提供了Content Provider,将一个应用程序的指定数据集提供给其它应用程序.这些数据可以存储在文件系统.SQLite数据库中,或以任何其它合理的方式存储.其他应用可以通过C ...
- webpack+vue-loader 在单独.vue组件中使用sass-loader编译sass报错问题not a valid Win32 applictation
如果webpack配置没有问题,在vue文件中编译sass/scss报上面的错误,大概是由于node-sass安装失败,重新卸载安装, 在国内安装node-sass失败的话,可以使用淘宝镜 ...
- 轻量型ORM框架Dapper的使用
在真实的项目开发中,可能有些人比较喜欢写SQL语句,但是对于EF这种ORM框架比较排斥,那么轻量型的Dapper就是一个不错的选择,即让你写sql语句了,有进行了关系对象映射.其实对于EF吧,我说下我 ...
- jQuery的maskedinput插件 设置input掩码
一.下载插件 http://digitalbush.com/projects/masked-input-plugin/二.属性a: 表示只能输入大小写字母9:表示只能输入0-9之间的数字*:a和9的 ...
- 【转载】Linux下动态共享库加载时的搜索路径详解
转载自:http://www.eefocus.com/article/09-04/71617s.html 对动态库的实际应用还不太熟悉的读者可能曾经遇到过类似“error while loading ...
- UICollectionView使用以及与UITableView的区别
在开始前我们在这先附一段最简单的代码 - (void)viewDidLoad { [super viewDidLoad]; UICollectionViewFlowLayout *layout = [ ...