草庐IT

PyObject_Call

全部标签

Linux 程序集 : how to call syscall?

我想在汇编中调用一个系统调用。问题是我不能movecx,rsp。rsp为64位寄存器,ecx为32位寄存器。我想将缓冲区地址作为此系统调用的参数传递。我能做些什么?谢谢。section.datas0:db"Largestbasicfunctionnumbersupported:%s\n",0s0len:equ$-s0section.textglobalmainexternwritemain:subrsp,16xoreax,eaxcpuidmov[rsp],ebxmov[rsp+4],edxmov[rsp+8],ecxmov[rsp+12],word0x0moveax,4movebx,1

c++ - std::bad_function_call 的调用堆栈

我有一个linux程序终止于:在抛出“std::bad_function_call”实例后终止调用遗憾的是,在调用堆栈中我看不到从哪里调用了错误的函数。此外,它在生成此错误之前进行了很多次迭代,因此我无法真正手动调试它。有没有办法找到有问题的代码段? 最佳答案 你能设置一个catchpoint吗?来自gdb?你会想要执行catchthrow在运行程序之前从gdb命令行,然后在抛出异常时打断点。 关于c++-std::bad_function_call的调用堆栈,我们在StackOverf

linux - "call 0x80482f0 <puts@plt>"?只需要澄清 x86 程序集中 'hello world' 程序中的一行代码

“call0x80482f0”?只需要在x86汇编中的“helloworld”程序中的一行代码方面获得帮助。注意:我在编程/调试时运行ubuntulinux,使用gcc作为编译器,使用gdb作为调试器。我正在阅读Hacking:TheartofExploitationV2并且我编译了这个C程序:1#include23intmain()4{5inti;6for(i=0;i在汇编中进入这个程序:0x080483b4:pushebp0x080483b5:movebp,esp0x080483b7:andesp,0xfffffff00x080483ba:subesp,0x200x080483bd

Python subprocess.call 函数不重定向输出

我正在尝试从一个python文件中运行一个名为nn.sh的shell脚本(它不断运行一个Linux命令)。我正在使用以下代码:fromsubprocessimportcall,Popen,PIPEcall(['/bin/sh','nn.sh','172.20.125.44','10','>>','log.txt'])此代码应该以输入172.20.125.44和10运行nn.sh并将结果存储在文件中日志.txt。当我运行这个Python脚本时,它只在屏幕上显示运行nn.sh的结果,并没有将它们保存在填充的log.txt中。但是,如果我输入/bin/shnn.sh172.20.125.44

Python:为什么 print 语句和 subprocess.call() 输出不同步?

我正在运行以下代码(称之为batch.py​​)forconfiginkeystoneConfig:cmdlist=generate_cmd_list(config)print''.join(cmdlist)subprocess.call(cmdlist)并将batch.py​​的输出重定向到另一个文件。即./batch.py>output.txt但我意识到subprocess.call()的所有输出都在print语句之前。为什么输出不同步? 最佳答案 Python在subprocess.call()之前block缓冲它自己的输出而

c - Linux 内核 : System call hooking example

我正在尝试编写一些简单的测试代码作为Hook系统调用表的演示。“sys_call_table”在2.6中不再导出,所以我只是从System.map文件中抓取地址,我可以看到它是正确的(在我找到的地址翻内存,我可以看到指向系统调用的指针)。但是,当我尝试修改此表时,内核给出“糟糕”消息“无法处理虚拟地址c061e4f4处的内核分页请求”,并且机器重新启动。这是运行2.6.18-164.10.1.el5的CentOS5.4。有某种保护措施还是我只是有一个错误?我知道它随SELinux一起提供,我已经尝试将它设置为宽容模式,但这并没有什么不同这是我的代码:#include#include#i

linux - x86 程序集 : Before Making a System Call on Linux Should You Save All Registers?

我有下面的代码打开一个文件,将其读入缓冲区,然后关闭文件。关闭文件系统调用要求文件描述符号在ebx寄存器中。ebx寄存器在进行read系统调用之前获取文件描述符编号。我的问题是我应该在进行读取系统调用之前将ebx寄存器保存在堆栈中或某处(int80h是否会破坏ebx寄存器?)。然后恢复关闭系统调用的ebx寄存器?或者我下面的代码是否安全?我已经运行了下面的代码并且它有效,我只是不确定它是否通常被认为是好的汇编实践,因为我没有在int80h读取调用之前保存ebx寄存器。;;openuptheinputfilemoveax,5;openfilesystemcallnumbermovebx,

c - 新手 asm : where is the call code?

我写了这个简单的内核模块:#include//forprintk()intinit(void){printk("nKello,everybody!nn");return0;}voidexit(void){printk("nGoodbyenow...nn");}MODULE_LICENSE("GPL");module_init(init);module_exit(exit);我试图理解代码是如何被翻译成asm的,所以我把它转储了:root@ubuntu:/home/alex/Desktop/KModule#objdump-Dkmodule.kokmodule.ko:fileformate

php - fatal error : Call to undefined function finfo_open() in php

这个问题在这里已经有了答案:PHPfileinfoisundefinedfunction(8个答案)关闭4年前。我是php的新手,我已经创建了将图像上传到sql数据库并使用php检索图像的代码。这是我的代码:FileInsertPleaseChooseaFileandclickSubmit"method="post">Pleaseselectafile';}else{try{$msg=upload();//thiswilluploadyourimageecho$msg;//Messageshowingsuccessorfailure.}catch(Exception$e){echo$e

php - fatal error : Call to undefined function mb_substr()

我希望看到您对我目前遇到的这个问题的意见。事实证明:以某种方式在网站上给我一个错误,错误显示:Fatalerror:Calltoundefinedfunctionmb_substr()in/home/(website)/public_html/index.phponline308不太明白他们说的mb_substr是什么意思,难道是PHP版本错误?我目前使用的是PHP5.3.19 最佳答案 mb_substr()是substr()的多字节安全版本,这意味着它适用于字符,而不是字节。这在UTF-8中最为明显,其中许多字符由两个或更多字节