本帖最后由 ReverseFuture 于 2015-1-9 21:17 编辑
考虑到网络上关于ARM汇编的教程多而不全(一般只是针对ARM汇编指令集),而实体教材中的ARM汇编都是掺杂在嵌入式linux系统教材中来作为某一两个章节来讲,这些更加侧重于硬件方面,而不是太适合搞逆向的我们。
所以在接下来的一段时间内,我想整理一份关于ARM汇编的学习教程,该教程预按照学习X86 汇编语言的方式来写,发布到本论坛供大家一起学习,一起进步。
所以特开此帖,来收集大家的意见和建议,关于应该怎么组织这个教程,以及使用什么工具,大家都可以尽情地说出来,让你的想法成为这份教程的一部分,让大家的智慧得到更大的发挥,让大家对ARM汇编的学习共同取得更大的进步。
首先,先给一份我用android NDK中带的arm-linux-androideabi-gcc.exe编译C文件得到的ARM汇编代码:
[C++] 纯文本查看 复制代码 .arch armv5te
.fpu softvfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 6
.eabi_attribute 18, 4
.file "test2.c"
.section .rodata
.align 2
.LC0:
.ascii "Hello ARM\000"
.text
.align 2
.global main
.type main, %function
main:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 1, uses_anonymous_args = 0
stmfd sp!, {fp, lr}
add fp, sp, #4
ldr r3, .L3
.LPIC0:
add r3, pc, r3
mov r0, r3
bl printf(PLT)
mov r3, #0
mov r0, r3
ldmfd sp!, {fp, pc}
.L4:
.align 2
.L3:
.word .LC0-(.LPIC0+8)
.size main, .-main
.ident "GCC: (GNU) 4.4.3"
.section .note.GNU-stack,"",%progbits
此代码我未做任何修改,原C代码为(先不考虑是否标准):
[C++] 纯文本查看 复制代码 int main()
{
printf("Hello ARM");
return 0;
}
PS:我自己收集的一些ARM汇编方面的资料,http://www.pd521.com/thread-193-1-1.html
|