app逆向文章整理-2


本文来自52破解文章。

原文链接https://www.52pojie.cn/thread-408645-1-1.html

深入Smali文件

Smali中的包信息
    .class public Lcom/aaaaa;
    #这是一个由ccccc.java编译得到的smali文件(第三行)
    .super Lcom/bbbbb;
    #它是com.aaaaa这个package下的一个类(第一行)
    .source "ccccc.java"
    #继承自com.bbbbb这个类(第二行)

smali中的声明

一般来说在Smali文件中是这个样子的:
   ...

Read more

app逆向文章整理-1


本文来自52破解文章。

原文链接https://www.52pojie.cn/thread-408645-1-1.html Image and video hosting by TinyPic Image and video hosting by TinyPic

APK的组成
<资源目录1:asset和res都是资源目录但是有所区别,见下面说明>
lib文件夹:
<so库存放位置,一般由NDK编译得到,常见于使用游戏引擎活INI native调用的工程中>
META-INF文件夹:
<存放工程一些属性文件,例如Manifest.MF>
res文件夹:
<资源目录2:asset和res都是资源目录但是有所区别,见下面说明>
AndroidManifest.xml
<An...

Read more

pyspdier入门


如果你使用 ubuntu,依赖以下二进制包:apt-get install python python-dev python-distribute python-pip libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml

启动 : pyspider all
脚本编辑:on_start 是脚本执行的入口, 点击run 会被调用
@every 表示这个任务是定时执行
self.crawl: 用于控制抓取连接, 使用callback = self.index_page指定用哪个函数解析抓取到的页面
def index_page(s...

Read more

pychram快捷键


Mac键盘符号和修饰键说明

⌘ Command
⇧ Shift
⌥ Option
⌃ Control
↩︎ Return/Enter
⌫ Delete
⌦ 向前删除键(Fn+Delete)
↑ 上箭头
↓ 下箭头
← 左箭头
→ 右箭头
⇞ Page Up(Fn+↑)
⇟ Page Down(Fn+↓)
Home Fn + ←
End Fn + →
⇥ 右制表符(Tab键)
⇤ 左制表符(Shift+Tab)
⎋ Escape (Esc)
Editing(编辑)
⌃Space 基本的代码补全(补全任何类、方法、变量)
⌃⇧Space 智能代码补全(过滤器方法列表和变量的预期类型)
⌘⇧↩...

Read more

call,apply,方法的使用


//apply和call的使用方法 /*

* apply的使用语法
* 函数名字.apply(对象,[参数1,参数2,...]);
* 方法名字.apply(对象,[参数1,参数2,...]);
* call的使用语法
* 函数名字.call(对象,参数1,参数2,...);
* 方法名字.call(对象,参数1,参数2,...);
*
* 作用:改变this的指向
* 不同的地方:参数传递的方式是不一样的
*
* 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么就可以使用apply或者是call的方法改变this的指向
*
* */
  //方法改变this的指向...

Read more

继承 属性和方法


//为了数据共享,改变原型指向,做到了继承---通过改变原型指向实现的继承 //缺陷:因为改变原型指向的同时实现继承,直接初始化了属性,继承过来的属性的值都是一样的了,所以,这就是问题 //只能重新调用对象的属性进行重新赋值,

//解决方案:继承的时候,不用改变原型的指向,直接调用父级的构造函数的方式来为属性赋值就可以了------借用构造函数:把要继承的父级的构造函数拿过来,使用一下就可以了



//借用构造函数:构造函数名字.call(当前对象,属性,属性,属性....);
//解决了属性继承,并且值不重复的问题
//缺陷:父级类别中的方法不能继承

functio...

Read more

原型指向改变


//人的构造函数 function Person(age) { this.age = 10; }

//人的原型对象方法
Person.prototype.eat = function () {
console.log("人的吃");
};

//学生的构造函数
function Student() {

}

Student.prototype.sayHi = function () {
console.log("嗨,小苏你好帅哦");
};
// //学生的原型,指向了一个人的实例对象
Student.prototype=new Person(10);

// ...

Read more

为内置对象添加原型方法


//为内置对象添加原型方法

var arr=new Array(10,20,30,40,50);
   arr.join("|");
   console.dir(arr);


   var str=new String("哦,唛嘎的");
   str.indexOf("哦");
   console.dir(str);


   var dt=new Date();
   dt.getFullYear();
   console.dir(dt);

//实例中的方法如果没有,去创建该实例对象的构造函数的原型对象中找



//我们能否为系统的对象的原型中添加方法,相当于在改变源码
...

Read more

构造函数与原型对象和实例对象的关系


构造函数与原型对象和实例对象的关系

//通过构造函数实例对象,并初始化
//var arr=new Array(10,20,30,40);
//join是方法,实例对象调用的方法
//arr.join("|");
//console.dir(arr);
//join方法在实例对象__proto__原型
//console.log(arr.__proto__==Array.prototype);


//原型的作用之一:共享数据,节省内存空间
//构造函数
function Person(age,sex) {
  this.age=age;
  this.sex=sex;
}
//通过构造...

Read more