本帖最后由 ReverseFuture 于 2015-1-9 21:17 编辑  
 
      考虑到网络上关于ARM汇编的教程多而不全(一般只是针对ARM汇编指令集),而实体教材中的ARM汇编都是掺杂在嵌入式linux系统教材中来作为某一两个章节来讲,这些更加侧重于硬件方面,而不是太适合搞逆向的我们。 
 
      所以在接下来的一段时间内,我想整理一份关于ARM汇编的学习教程,该教程预按照学习X86 汇编语言的方式来写,发布到本论坛供大家一起学习,一起进步。 
 
      所以特开此帖,来收集大家的意见和建议,关于应该怎么组织这个教程,以及使用什么工具,大家都可以尽情地说出来,让你的想法成为这份教程的一部分,让大家的智慧得到更大的发挥,让大家对ARM汇编的学习共同取得更大的进步。 
 
首先,先给一份我用android NDK中带的arm-linux-androideabi-gcc.exe编译C文件得到的ARM汇编代码: 
 
[mw_shl_code=cpp,true]        .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[/mw_shl_code] 
 
此代码我未做任何修改,原C代码为(先不考虑是否标准): 
 
 
[mw_shl_code=cpp,true]int main() 
{ 
   printf("Hello ARM"); 
   return 0; 
}[/mw_shl_code] 
 
PS:我自己收集的一些ARM汇编方面的资料,http://www.pd521.com/thread-193-1-1.html 
 
 
 
 
 
 
 
 
 |