对于程序员来说,一般都可以通过代码的逆向还原来实现对一款软件的结构解析的。
创新互联建站专注于路北网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供路北营销型网站建设,路北网站制作、路北网页设计、路北网站官网定制、微信小程序开发服务,打造路北网络公司原创品牌,更为您提供路北网站排名全网营销落地服务。
下面我们就一起来了解一下,在代码还原中的数据类型都有哪些表现形式。
一丶简介代码还原例子一:我们很多人都学习过汇编.但是汇编的核心知识就是我能看的懂.有人拿汇编去做外挂.比如我去追偏移.看着视频去做.然后换一个游戏依然这样.但是终有一天,你可能发现没意思了.因为这些知识都是死的.比如我们想看游戏中,这段代码做了什么事情.这个时候就需要将汇编转为高级代码查看了.IDA的F5插件.一般能做到.但是很多是做不到的.比如游戏中.这段代码你找到一个对象+多少偏移是什么什么功能.但是会逆向的人.这段代码抠出来.转为高级代码.一看.原来这个意思.+多少是什么作用.另外还实现了什么功能.这个就是核心技术了.为什么别人的外挂功能比较多.你的比较少.其核心就在这里.例子二:算法逆向,如一个软件.让你追出注册码.你可能就爆破.但是如果你能把它算法逆出来.那么是不是一提升了自己,二,自己可以写注册机专门为这个程序生成注册码了.例子三:如果你是为公司工作.可能某一天,公司需要你进行逆向.发现xx软件的一个功能比较好.此时你需要怎么办.完整的根据汇编去逆向出来这个功能.并且让公司去做出这个功能.这个也是一个很好的例子.二丶代码还原中的数据类型表现形式上面说了很多了,那么真正的开始篇幅讲解.1.整数类型C++中整数的基本数据类型有三种,intlongshort.在VC6.0中,intlong所占内存都是4字节.short两个字节.以16进制为例intlong分别就是4个字节.short两个字节.一个字节是8位.2.无符号整数在内存中,无符号整数是用来表示数值的.如果32位下.那么取值范围是0x00000000~0xFFFFFFF10进制:0~4294967295,因为无符号数,那么高位就是0填充.所以重庆北大青鸟发现表示数值比较大.3.有符号整数有符号整数跟上面无符号整数一样.只不过高位用来表示符号位,其余低位表示数值.这样有符号的整数.表示的数值就只有31位了.范围则是0x80000000~0x7FFFFFFF转为十进制:-2147483648~2147483647
我教你一个最简单的方法。在菜单上面,window --Reset perspetive点一下就可以回到原来的了。这个是窗口重置
选中要还原的文件,然后右击-replace with-local history,选择一个还原的时间,即可恢复以前的代码。
如果是svn共享的话,就使用team更新应该就会复原了。如果是手误在没有关掉java文件的情况下使用ctrl+z就可以还原吧。
工具:
apktool,作用:资源文件获取,可以提取出图片文件和布局文件进行使用查看
dex2jar,作用:将apk反编译成java源码(classes.dex转化成jar文件)
jd-gui,作用:查看APK中classes.dex转化成出的jar文件,即源码文件
反编译流程:
一、apk反编译得到程序的源代码、图片、XML配置、语言资源等文件
下载上述工具中的apktool,解压得到3个文件:aapt.exe,apktool.bat,apktool.jar ,将需要反编译的APK文件放到该目录下,
打开命令行界面(运行-CMD) ,定位到apktool文件夹,输入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反编译的APK文件全名,test为反编译后资源文件存放的目录名称,即为:apktool.bat d -f [apk文件 ] [输出文件夹])
获取成功之后,发现在文件夹下多了个test文件,点击便可以查看该应用的所有资源文件了。
如果你想将反编译完的文件重新打包成apk,那你可以:输入apktool.bat b test(你编译出来文件夹)便可
之后在之前的test文件下便可以发现多了2个文件夹:
build
dist(里面存放着打包出来的APK文件)
二、Apk反编译得到Java源代码
下载上述工具中的dex2jar和jd-gui ,解压
将要反编译的APK后缀名改为.rar或则 .zip,并解压,得到其中的额classes.dex文件(它就是java文件编译再通过dx工具打包而成的),将获取到的classes.dex放到之前解压出来的工具dex2jar-0.0.9.15 文件夹内,
在命令行下定位到dex2jar.bat所在目录,输入dex2jar.bat classes.dex,
在改目录下会生成一个classes_dex2jar.jar的文件,然后打开工具jd-gui文件夹里的jd-gui.exe,之后用该工具打开之前生成的classes_dex2jar.jar文件,便可以看到源码了