APK文件结构分析:

    实际上可以算作一个zip压缩包 解压后会得到
    AndroidMainifest.xml : 配置清单(二进制格式)
    assets : 是资源目录,一般存放图片什么的
    lib :是动态库目录 一般存放so文件
    res :资源库目录 一般存放xml布局文件和图标
    classes.dex: 安卓系统上的可执行文件,也是我们逆向的主要的文件,源码都被编译在里面,如有多个是因为每个dex里最多存放65535个方法,而项目的方法数超出了这个数量,所以被分成多个保存
    META-INF:签名文件目录
    resources.arsc :资源索引文件,包含语言包,汉化的话一般是反编译这个文件

    结构大概我们清楚了,接下来就是还有知道一些分析安卓程序代码的相关关键词
    内购关键词:
    和游戏搜索方法名
    onResult,onchinabilling,resulton,Paycenter,Callback
    联通游戏搜索方法名
    OnPayResult,PyaResulton,Activity,result,callback
    电信爱游戏搜索方法名
    paySuccess成功,payCancel取消,payFailed失败
    移动mm搜索方法名
    onBillingFinish,Billing,CallBack
    支付宝和银行卡方法名
    handle,message
    支付宝搜索字符:9000
    360支付
    onfinishedon,Activityresult
    发送短信上限:android.permission.SEND_SMS
    发送短信锁定支付式关建字符串

    运营商网络特征码备注
    中国移动46000、46002、46007、46020return 0 getMobileType
    中国联通46001、46006、46010return 2 getOperatorType
    中国电信46003、46005、46011return 1 getSimType

    举例分析:
    if-eqz v6 :label_104 意思是判断v6是否等于0 如果等于0就跳转到 label_104
    所以当label_104对应为失败代码时 直接删除该跳转语句也就是if-eqz v6 :label_104
    if-nez v3 :label_86 意思是如果v3不等于0就跳转到label_86 而他的代码是
    label_86:
    return_void
    所以是正确代码 必须让他直接跳转到这里来 所以将if-nez v3 :label_86改为goto :label_86
    如果有取消支付选项 可以将该选项加入最后的*switch中
    move v1 v6意思是将v1的值传给v6
    const/4 v1 1意思是将v1设置为1

    新手必读背部分语法的意思(必背):
    “if-”条件判定
    “goto :label_
    ”直接跳转到:label
    “label:
    “用于跳转的,就是执行它下面的一串代码
    “if-eq vA, vB, :label
    “ 如果vA等于vB则跳转到:label_
    “if-ne vA, vB, :label**” 如果vA不等于vB则跳转到:label
    “if-lt vA, vB, :label_
    “ 如果vA小于vB则跳转到:label**
    “if-ge vA, vB, :label
    “ 如果vA大于等于vB则跳转到:label_
    “if-gt vA, vB, :label**” 如果vA大于vB则跳转到:label
    “if-le vA, vB, :label_
    “ 如果vA小于等于vB则跳转到:label**
    “if-eqz vA, :label
    “ 如果vA等于0则跳转到:label_
    “if-nez vA, :label**” 如果vA不等于0则跳转到:label
    “if-ltz vA, :label_
    “ 如果vA小于0则跳转到:label**
    “if-gez vA, :label
    “ 如果vA大于等于0则跳转到:label_
    “if-gtz vA, :label**” 如果vA大于0则跳转到:label
    “if-lez vA, :label_
    “ 如果vA小于等于0则转到:label_
    A,B指数字,
    也是指数字

    分析一些常用的代码:
    弹窗的关键词: oncreate
    成功代码:invoke-interface {v3,v2} Lcn/egame/terminal/paysdk/EgamePayListener;->paySuccess(Ljava/util/Map;)V
    return-void
    支付上限用到的代码:carrier_pay_out_limit
    这个是在文件里面搜索的代码:no_propriate_pay_method
    破解盗版验证用到的代码:dialog_initconfig_msg