C 将64位ROP小工具内存地址转换为工作外壳代码

C 将64位ROP小工具内存地址转换为工作外壳代码,c,shellcode,C,Shellcode,这个过程到底是如何工作的?更具体地说,我的意思是,我想把gdb转换成程序,运行它,找到一个内存地址,转换成工作外壳代码。我需要向程序中输入哪些命令?我想将64位内存地址转换为有效的外壳代码。这是在Linux机器上。我想做一些广义的堆栈读取,并使用不同的算法在逻辑上沿着堆栈向上运行 此外,ROP小工具在生成ROP链时提供内存地址。我希望将外壳代码合并到混合中,并可能将ROP内存地址直接转换为简化的外壳代码。这是否可行?提前感谢。64位地址就是解释为地址的64位数据。在此上下文中,外壳代码是一组可变

这个过程到底是如何工作的?更具体地说,我的意思是,我想把gdb转换成程序,运行它,找到一个内存地址,转换成工作外壳代码。我需要向程序中输入哪些命令?我想将64位内存地址转换为有效的外壳代码。这是在Linux机器上。我想做一些广义的堆栈读取,并使用不同的算法在逻辑上沿着堆栈向上运行


此外,ROP小工具在生成ROP链时提供内存地址。我希望将外壳代码合并到混合中,并可能将ROP内存地址直接转换为简化的外壳代码。这是否可行?提前感谢。

64位地址就是解释为地址的64位数据。在此上下文中,外壳代码是一组可变长度的指令。您认为“转换”将做什么?能够在可执行堆栈或内存的R/X区域上用作shell代码?例如,如何将0x4001EDFFFA转换为shell代码?我是否需要gdb输入并检索该内存地址的x/8x,并根据little/big endian对其进行相应的组织?对不起,这对我来说没有任何意义。我怀疑您对外壳代码的工作原理有一个根本性的误解,并且对汇编和CPU还不够熟悉。我不明白这个问题怎么能解决。