首页
社区
课程
招聘
[原创]编写二进制的shellcode
发表于: 2013-12-9 18:13 6515

[原创]编写二进制的shellcode

2013-12-9 18:13
6515

刚准备发本文时看到已经有一篇《Android系统shellcode编写》,拜读了一下,与我的需求还是不一样的。

我是想写一段二进制的shellcode,目标是构造一段nop-slide,然后让它调用目标函数。因此这段shellcode的功能很简单,就是调用用c写的函数。

已经有x86下的参考了,怎么把它变成arm却花了我一周的时间,因为我完全是个汇编新手。我还发了一篇贴子求助:http://bbs.pediy.com/showthread.php?t=182086

其实很简单,下面这小段就可以搞定了(当然可以在前面填充任意的nop指令):
char shellcode[] = "x08\x40\x2d\xe9\xeb\xff\xfd\x06\x08\x80\xbd\xe8";

其中,x08\x40\x2d\xe9即e92d4008,其实就是push    {r3, lr},x08\x80\xbd\xe8是e8bd8008,也就是pop     {r3, pc}

中间4个字节就是BLX指令(0xfa),其中的偏移地址是需要计算的,计算公式如下:
0xfa000000 | (target -  shellcode - 12)>>2

我之前之所以写错了,是因为发现调用我的shellcode用的是BLX,而调用者是thumb指令,所以我的shellcode必须用arm指令来写,而我之前也是用thumb来写的。

关于调试:
我看大家都是用IDA啊,我没有IDA,用gdb调试也可以的,可以使用disass来查看反汇编代码,info registers查看寄存器的值,也挺方便的。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 5
支持
分享
最新回复 (1)
雪    币: 14
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看不懂术语名词,不过膜拜ing
2013-12-9 19:17
0
游客
登录 | 注册 方可回帖
返回
//