关于ARM汇编的学习,尽情说出你的想法
本帖最后由 ReverseFuture 于 2015-1-9 21:17 编辑考虑到网络上关于ARM汇编的教程多而不全(一般只是针对ARM汇编指令集),而实体教材中的ARM汇编都是掺杂在嵌入式linux系统教材中来作为某一两个章节来讲,这些更加侧重于硬件方面,而不是太适合搞逆向的我们。
所以在接下来的一段时间内,我想整理一份关于ARM汇编的学习教程,该教程预按照学习X86 汇编语言的方式来写,发布到本论坛供大家一起学习,一起进步。
所以特开此帖,来收集大家的意见和建议,关于应该怎么组织这个教程,以及使用什么工具,大家都可以尽情地说出来,让你的想法成为这份教程的一部分,让大家的智慧得到更大的发挥,让大家对ARM汇编的学习共同取得更大的进步。
首先,先给一份我用android NDK中带的arm-linux-androideabi-gcc.exe编译C文件得到的ARM汇编代码:
.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代码为(先不考虑是否标准):
int main()
{
printf("Hello ARM");
return 0;
}
PS:我自己收集的一些ARM汇编方面的资料,http://www.pd521.com/thread-193-1-1.html
教程哪里多了?我怎么没发现?求分享{:3_49:} 花花到百度云一搜索就一堆过期产品出来:lol
RE好样我顶你。。。
居然是教逆向就用ida pro,逆出arm汇编代码进行讲解比较好。。。 帮我打通任督二脉可好 要是有个视频教程就更好了。 支持楼主,可惜我是新手,静等楼主教程了! 支持~新手,不懂怎么开始。从0基础开始吧~谢谢 支持啊! 哇,真的是尽情说出想法么?那我说实话啦,要是都有示例结合ida讲解如何修改so,包括装B BL BLX 这一些指令如何修改跳转,和推算目标偏移量的计算方法就好了,包括分析的思路:handshake 哪多了,表示从未看到过,求楼主分享~