>>>>>leg
1.一行权限的意思
一共有7列
第一列是权限,十个字符:1表示文件类型;2~4表示文件所有者权限;5~7表示文件所有者所属组的权限;8~10表示其他用户权限;常见的权限为wrx(读写执行);常见的文件类型有d-(目录/普通文件)
第二列是文件的硬链接个数
2.batch file:批处理
批处理文件是无格式的文本文件,包含一条或多条命令。
文件扩展名为.bat或.cmd。
文件的每一行都是DOS命令,就像我们在DOS提示符下执行的命令行一样
当在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行他们。
:上次在python目录下编写了一个.bat文件,文本内容为:cmd.exe
当点击执行之后,就会在当前目录下执行文本文件中的命令
:所以一些.bat文件中应该都是存放的一些命令行,比如apktool.bat
下边就是apktool.bat文件的内容
@echo off
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
3.ASM含义
a.GCC内联汇编
http://www.cnblogs.com/latifrons/archive/2009/09/17/1568198.html
b.assemble反汇编
c.ASM是一个jabalpur字节码操纵框架,能用来动态生成类或者增强既有类的功能
d..asm文件是以asm作为扩展名的文件,是汇编语言的源程序文件。
e.汇编文件后缀.s/.S
4.GCC使用eax作为保存返回值的寄存器
5.通用寄存器
r q 这些字母是对寄存器约束
a rax ax eax...
b c d
D S f t u
6.ARM ASM
ARM是一种处理器架构
7.r0-r12 r13 r14 r15 cpsr link register
0-12 通用寄存器
13 sp(stack point) 堆栈指针寄存器(指向栈顶)
14 link register 指向指令的返回地址?
也就是当调用子功能的时候,函数的返回地址
>R14 is used as the subroutine link register (LR) and stores the
return address when Branch with Link operations are performed,
calculated from the PC.
15 程序计数器,指向下一条指令
cpsr(current program status register)
8.bx
ARM指令B BL BLX BX区别
B:跳转;B Label 满足条件立即跳转到label指定的地址执行
BL:带链接的跳转。首先将当前指令的下一跳指令地址保存在LR寄存器,然后跳转到label
BX:带状态切换的跳转。最低位为1:切换到thumb指令执行;为0时,切换到ARM指令执行
BLX:带链接和状态切换的跳转。结合了BX和BL功能
9.thumb状态 arm状态
ARM状态:此时处理器执行32bit,字对齐的ARM指令;
Thumb状态:此时处理器执行16bit,半字对齐的Thumb指令;
切换程序:
从ARM到Thumb: LDR R0,=lable+1 BX R0
状态将寄存器的最低位设置为1
BX指令:R0[0]=1,则执行BX R0指令将进入thumb状态
从ARM到Thumb: LDR R0,=lable BX R0
寄存器最低位设置为0
BX指令:R0[0]=0,则执行BX
R0指令将进入arm状态
10.ldr
LDR指令的格式为:
LDR{条件} 目的寄存器,<存储器地址>
LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
11.寄存器外边加{}
12.dl
13.It's two instructions ahead because of the pipeline
Dump of assembler code for function key1:
0x00008cd4 <+0>: push {r11} ; (str r11, [sp, #-4]!) lee:push ebp
0x00008cd8 <+4>: add r11, sp, #0 lee:ebp=esp+0
0x00008cdc <+8>: mov r3, pc lee:r3=pc
0x00008ce0 <+12>: mov r0, r3 r0=r3
0x00008ce4 <+16>: sub sp, r11, #0 esp=ebp-0
0x00008ce8 <+20>: pop {r11} ; (ldr r11, [sp], #4) lee:pop ebp
0x00008cec <+24>: bx lr
End of assembler dump.
(gdb) disass key2
Dump of assembler code for function key2:
0x00008cf0 <+0>: push {r11} ; (str r11, [sp, #-4]!) push ebp
0x00008cf4 <+4>: add r11, sp, #0 ebp=esp
0x00008cf8 <+8>: push {r6} ; (str r6, [sp, #-4]!) push r6
0x00008cfc <+12>: add r6, pc, #1 r6=pc+1 拿到程序计数器
0x00008d00 <+16>: bx r6 r6
0x00008d04 <+20>: mov r3, pc r3=pc
0x00008d06 <+22>: adds r3, #4 r3=r3+4
0x00008d08 <+24>: push {r3} push r3
0x00008d0a <+26>: pop {pc} pop pc
0x00008d0c <+28>: pop {r6} ; (ldr r6, [sp], #4) pop r6
0x00008d10 <+32>: mov r0, r3 r0=r3
0x00008d14 <+36>: sub sp, r11, #0 esp=ebp-0
0x00008d18 <+40>: pop {r11} ; (ldr r11, [sp], #4) pop ebp
0x00008d1c <+44>: bx lr
End of assembler dump.
(gdb) disass key3
Dump of assembler code for function key3:
0x00008d20 <+0>: push {r11} ; (str r11, [sp, #-4]!) push ebp
0x00008d24 <+4>: add r11, sp, #0 ebp=esp
0x00008d28 <+8>: mov r3, lr r3=lr
0x00008d2c <+12>: mov r0, r3 r0=r3
0x00008d30 <+16>: sub sp, r11, #0 esp=ebp-0
0x00008d34 <+20>: pop {r11} ; (ldr r11, [sp], #4) pop ebp
0x00008d38 <+24>: bx lr
End of assembler dump.
(gdb)
1.一行权限的意思
一共有7列
第一列是权限,十个字符:1表示文件类型;2~4表示文件所有者权限;5~7表示文件所有者所属组的权限;8~10表示其他用户权限;常见的权限为wrx(读写执行);常见的文件类型有d-(目录/普通文件)
第二列是文件的硬链接个数
2.batch file:批处理
批处理文件是无格式的文本文件,包含一条或多条命令。
文件扩展名为.bat或.cmd。
文件的每一行都是DOS命令,就像我们在DOS提示符下执行的命令行一样
当在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行他们。
:上次在python目录下编写了一个.bat文件,文本内容为:cmd.exe
当点击执行之后,就会在当前目录下执行文本文件中的命令
:所以一些.bat文件中应该都是存放的一些命令行,比如apktool.bat
下边就是apktool.bat文件的内容
@echo off
java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
3.ASM含义
a.GCC内联汇编
http://www.cnblogs.com/latifrons/archive/2009/09/17/1568198.html
b.assemble反汇编
c.ASM是一个jabalpur字节码操纵框架,能用来动态生成类或者增强既有类的功能
d..asm文件是以asm作为扩展名的文件,是汇编语言的源程序文件。
e.汇编文件后缀.s/.S
4.GCC使用eax作为保存返回值的寄存器
5.通用寄存器
r q 这些字母是对寄存器约束
a rax ax eax...
b c d
D S f t u
6.ARM ASM
ARM是一种处理器架构
7.r0-r12 r13 r14 r15 cpsr link register
0-12 通用寄存器
13 sp(stack point) 堆栈指针寄存器(指向栈顶)
14 link register 指向指令的返回地址?
也就是当调用子功能的时候,函数的返回地址
>R14 is used as the subroutine link register (LR) and stores the
return address when Branch with Link operations are performed,
calculated from the PC.
15 程序计数器,指向下一条指令
cpsr(current program status register)
8.bx
ARM指令B BL BLX BX区别
B:跳转;B Label 满足条件立即跳转到label指定的地址执行
BL:带链接的跳转。首先将当前指令的下一跳指令地址保存在LR寄存器,然后跳转到label
BX:带状态切换的跳转。最低位为1:切换到thumb指令执行;为0时,切换到ARM指令执行
BLX:带链接和状态切换的跳转。结合了BX和BL功能
9.thumb状态 arm状态
ARM状态:此时处理器执行32bit,字对齐的ARM指令;
Thumb状态:此时处理器执行16bit,半字对齐的Thumb指令;
切换程序:
从ARM到Thumb: LDR R0,=lable+1 BX R0
状态将寄存器的最低位设置为1
BX指令:R0[0]=1,则执行BX R0指令将进入thumb状态
从ARM到Thumb: LDR R0,=lable BX R0
寄存器最低位设置为0
BX指令:R0[0]=0,则执行BX
R0指令将进入arm状态
10.ldr
LDR指令的格式为:
LDR{条件} 目的寄存器,<存储器地址>
LDR指令用于从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。
11.寄存器外边加{}
12.dl
13.It's two instructions ahead because of the pipeline
Dump of assembler code for function key1:
0x00008cd4 <+0>: push {r11} ; (str r11, [sp, #-4]!) lee:push ebp
0x00008cd8 <+4>: add r11, sp, #0 lee:ebp=esp+0
0x00008cdc <+8>: mov r3, pc lee:r3=pc
0x00008ce0 <+12>: mov r0, r3 r0=r3
0x00008ce4 <+16>: sub sp, r11, #0 esp=ebp-0
0x00008ce8 <+20>: pop {r11} ; (ldr r11, [sp], #4) lee:pop ebp
0x00008cec <+24>: bx lr
End of assembler dump.
(gdb) disass key2
Dump of assembler code for function key2:
0x00008cf0 <+0>: push {r11} ; (str r11, [sp, #-4]!) push ebp
0x00008cf4 <+4>: add r11, sp, #0 ebp=esp
0x00008cf8 <+8>: push {r6} ; (str r6, [sp, #-4]!) push r6
0x00008cfc <+12>: add r6, pc, #1 r6=pc+1 拿到程序计数器
0x00008d00 <+16>: bx r6 r6
0x00008d04 <+20>: mov r3, pc r3=pc
0x00008d06 <+22>: adds r3, #4 r3=r3+4
0x00008d08 <+24>: push {r3} push r3
0x00008d0a <+26>: pop {pc} pop pc
0x00008d0c <+28>: pop {r6} ; (ldr r6, [sp], #4) pop r6
0x00008d10 <+32>: mov r0, r3 r0=r3
0x00008d14 <+36>: sub sp, r11, #0 esp=ebp-0
0x00008d18 <+40>: pop {r11} ; (ldr r11, [sp], #4) pop ebp
0x00008d1c <+44>: bx lr
End of assembler dump.
(gdb) disass key3
Dump of assembler code for function key3:
0x00008d20 <+0>: push {r11} ; (str r11, [sp, #-4]!) push ebp
0x00008d24 <+4>: add r11, sp, #0 ebp=esp
0x00008d28 <+8>: mov r3, lr r3=lr
0x00008d2c <+12>: mov r0, r3 r0=r3
0x00008d30 <+16>: sub sp, r11, #0 esp=ebp-0
0x00008d34 <+20>: pop {r11} ; (ldr r11, [sp], #4) pop ebp
0x00008d38 <+24>: bx lr
End of assembler dump.
(gdb)