认真看了多多少少可以学到点东西 大神勿喷
首先,我们要知道破解一个游戏需要分析它的apk,于是我们需要用到MT管理器(因为我是从MT开始的),这个直接在社区搜索【MT管理器】安装了MT管理器之后,我们就可以开始学习破解了。
第一步,学习基本的JAVA知识。
Smali基本语法
.field private isFlag:z 定义变量
.method 方法
.parameter 方法参数
.prologue 方法开始
.line 12 此方法位于第12行
invoke-super 调用父函数
const/high16 v0, 0x7fo3 把0x7fo3赋值给v0
invoke-direct 调用函数
return-void 函数返回void
.end method 函数结束
new-instance 创建实例
iput-object 对象赋值
iget-object 调用对象
invoke-static 调用静态函数
条件跳转分支:
"if-eq vA, vB, :cond_" 如果vA等于vB则跳转到:cond_
"if-ne vA, vB, :cond_" 如果vA不等于vB则跳转到:cond_
"if-lt vA, vB, :cond_" 如果vA小于vB则跳转到:cond_
"if-ge vA, vB, :cond_" 如果vA大于等于vB则跳转到:cond_
"if-gt vA, vB, :cond_" 如果vA大于vB则跳转到:cond_
"if-le vA, vB, :cond_" 如果vA小于等于vB则跳转到:cond_
"if-eqz vA, :cond_" 如果vA等于0则跳转到:cond_
"if-nez vA, :cond_" 如果vA不等于0则跳转到:cond_
"if-ltz vA, :cond_" 如果vA小于0则跳转到:cond_
"if-gez vA, :cond_" 如果vA大于等于0则跳转到:cond_
"if-gtz vA, :cond_" 如果vA大于0则跳转到:cond_
"if-lez vA, :cond_" 如果vA小于等于0则跳转到:cond_
这是我从网上找到的东西,纯小白们必须先看懂这个!是必须!
第二步,用MT管理器打开游戏的apk,开始破解。
我们需要打开的是.dex后缀的那个东西,流程是这样的:
点击apk
点击“查看” (稍微等待一下,之后你会看到一些文件。)
点击“classes.dex”(这个文件里面就是代码什么的东西)
点击“编辑代码”
于是便进入到一个由四个选项组成的界面。
类–这个东西我也不太清楚,总之就像是个文件夹(装有某一系列代码)一样的东西。
方法–可以理解为“类”的下属,也就是由某系列代码组成的小集合。
代码–游戏运行是要按照规律来走的,而那个规律就是代码。
大小分级是这样的:代码组成方法,方法组成类。
(这个是我的理解,这样比较好懂,大大们不要喷我)
继续看那四个选项
第一个“类列表”,就像打开文件夹一样一层层地进去,然后找到“类”,这里只有当你明确知道“类”的位置时才会用到。
第二个“字符常量池”,一般不会用到,具体是干什么的,大概就是把代码中的一些关键字陈列出来。
第三个“搜索类”,这个是破解游戏时候总要用到的,详细的一会儿再解释。
第四个“高级搜索”,我到现在都没弄明白这是干什么的,大大们的教程贴也没有提及,破解时候几乎用不到(可以那么理解)。在这里插入图片描述
   
四个选项的内容,其中第三个“搜索类”是我们总要用到也是必须学会的,点开之后我们会看到一个输入框和四串字。不区分大小写–这个大家应该都懂,比如:你要搜索OnBillingFinish,如果勾选了这个,那只有输入onbillingfinish就能搜到了。搜索字符串–搜索出现在代码中的const string后面出现的“”内的东西。(应该是这样没错。。。。)搜索方法名–一般大大们教程里都会让我们用这个,这个具体是干什么的呢?一般支付成功或者失败的代码都会出现在一个方法里,也就是被整合在一个方法里,而这个方法!通常同一个出处(如:移动和游戏)的游戏,这个方法的名称都是一样的!这里特别要注意!这就是大大们直接让咱们搜索onbillingfinish或者onresult的原因。这里贴出来我们常能见到的方法名:onResultonchinabillingresultonPaycenterCallback联通游戏搜索:OnPayResultPyaResultonActivityresultcallback电信爱游戏搜索:paySuccess成功payCancel取消payFailed失败移动mm搜索:onBillingFinishBillingCallBack支付宝和银行卡方法名:handlemessage支付宝搜索字符串9000360支付onfinishedonActivityresult以上的就是我们通常会用到的方法名,我是搬运工。搜索代码–这个是直接从代码里搜索关键字符,因为要读取全部的代码,所以自然搜索时间就要长一点了,有时候这个东西是特别有用的。然后,我们跟着大大的教程,或者是自己动手,输入好对应的方法名,然后选择“搜索方法名”然后,较为让新葫芦们难以理解的部分到了!这里有可能出现一个,或者复数个选项(某些游戏),这些还不是方法,这些是“包含有你想要搜索到的方法的 类 ”,也就是说你还得继续前进才能看到你要找的方法。如果你这里只出现一个选项,那么你就可以先跳过下步继续往下看。如果出现复数个选项,也就是说,刚刚你搜索的方法有好几个同名方法,其中派的上用场的绝大多情况下只有一个,这个就要你自己一个一个摸索了。如何去摸索呢?从头到尾挨个试!点开一个后你会发现,又出来几个选项。类编辑域列表这俩我目前不知道是干什么用的,有大神看到的话帮忙解释一下。。。。谢了。方法列表–点进去后可以浏览到整个类里面包含的所有方法(这里面除了你要找的方法之外还有其他方法,某些情况下还是不能忽视的)搜索方法–点击之后,会弹出来一个和刚才一样的小框框,上面的输入栏会记忆你刚刚输入的方法名,在这里你直接点“搜索方法名”然后确定就可以了。这之后只会出现你要找的方法。一般对应的有用的方法都会出现“支付成功”或者“支付失败”类似的字样,依此可以分辨出哪个是你需要的方法,如果刚刚第一次搜索时只出现了一个选项(类),那么你便省去了一些时间。点进去你搜索到的方法,你会发现一大串代码,此时你会需要用到我之前说的那些代码的注解,其中还有些比较常见的,如label_xx:xxxxxxxxxx这样的东西,指的是按从上到下的顺序依次执行每一行的代码。这里又要说一下新葫芦们经常遇到的问题。举个例子:label_17:xxxxxif-ge:xxxxxxxxxxxxx这里,既然上面说到是“依此执行”,如果执行到“if-ge”这里,满足了代码的条件,那么便会跳转到对应代码,“if-ge”后面的那些代码则不会执行。const string–见到这个,你一般都会在该行代码后面找到“xxxxxx”引号里面的内容通常会是些文字,引号内容的后面还会有引用路径(据说有的大大会逆推回去找到代码源头)。如果你直接把引号里的文字修改是毫无意义的。switch–出现这个之后你就可以小高兴一下了,因为下面的代码对应的数字便是前面label的数字。如果你大概看懂了这些代码,你就可以开始修改了,具体修改有那么几种方法。替换删减跳转(添加)替换指的是将“成功”的那一部分代码覆盖到“失败”上,具体覆盖那一些要根据不同情况来看(这里我不放图了,大大们的帖子有的是),审查哪些是有用的代码,哪些是无用的代码,然后把有用的覆盖过去。删减指的是把没用的代码删掉,只留有用的,通常你需要执行十行代码才能到“成功”,删减后两行代码就到“成功”。跳转(添加)指的是在某一处添加goto :label_xx这个指的是“直接跳转到label_xx”个人建议,新手还是只用第一种方法。
 
接上面的图文,接下来我们讲一下修改完毕之后,点返回,看到有保存的就保存,现在我这里没有图片,这个大家自己理解就好,到了apk页面会出现更新选项,这里要点确定(貌似是废话。。。)(顺便一提,短信权限删除之后也需要进行更新)然后最为重要的一步来了。签名!返回到上一级文件夹,也就是你的apk所在的文件夹,点一下apk,看到有“签名”这个选项,点击,然后稍等一会儿,等进度条加载完毕,你会发现多出来一个绿色字体的apk,名字和你一开始的apk差不多,只不过多出来一个 _sign 。这个就是签名完毕的文件了,安装的时候安装这个就行。 为什么必须得签名呢?这个希望大神能帮我解释一下。。。反正我只知道不签名安装不了。。。。这点一定要注意,友友们总是忘记签名!

MT教程到此结束了,下面是有关修改器的使用方法,最近有很多人都在问我,首先,我们知道,修改内购的原理是将发短信这一步骤省略或者将失败代码代替为成功或者将失败跳过。而这一切都是通过修改游戏的安装包内的classes.dex文件实现的。
也就是说,内购破解是修改手机内部文件达到破解目的。
不懂的自己在社区搜【MT管理器】里面有很多视频教程,自己学去吧
|