草庐IT

0x0000007c

全部标签

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

linux - JFFS2 文件系统立即损坏(魔术位掩码 0x1985 未找到错误)

我已经使用squashfs使用buildroot创建了一个根文件系统。它工作正常,现在我想创建一个overlayfs,它将保存/home和/etc目录。为此,我想用几个文件创建一个简单的jffs2文件系统:jlumme@simppa:~/projects/jffs2_home$ls-latotal20drwxrwxr-x4jlummejlumme4096Apr2116:21.drwxrwxr-x6jlummejlumme4096Apr2116:21..drwxrwxr-x2jlummejlumme4096Apr2113:45defaultdrwxrwxr-x2jlummejlumme4

c - valgrind:mmap(0x600000, 8192) 在 UME 中失败,错误 12(无法分配内存)

我正在关注thisexercise.此页面包含安装Valgrind3.6.1的说明,但我当前的Linux内核版本不支持此版本的Valgrind。因此,我安装了Valgrind3.11.0并在运行此命令之后和之后按照那里的说明进行操作:$valgrind./ex4得到这个错误:valgrind:mmap(0x600000,8192)failedinUMEwitherror12(Cannotallocatememory).我该如何解决?我正在使用内核版本为4.4.0的Ubuntu14.04LTS 最佳答案 您遇到的错误实际上是一个内核错

linux - SYSENTER/SYSEXIT 与 INT 0x80

旧的linux版本使用“int0x80”指令来实现系统调用,后来的版本使用“SYSENTER/SYSEXIT”指令来实现。通过“int0x80”传输到ring0后,cpu处于中断上下文中,中断被禁用。但是“SYSENTER/SYSEXIT”不会产生“中断上下文”并且中断不会被禁用。这种差异会不会给系统调用带来问题? 最佳答案 接到电话的人都清楚发生了什么,并且必须应对。请记住,中断是提醒系统出现需要紧急注意的事情的方式,最好尽快处理。禁用中断会降低性能,因为事件处理会延迟。不久前英特尔添加了新指令SYSENTER/SYSEXIT指令

c++ - 串行通信 : 0x0D is replaced by 0x0A during transmission

我正在使用Linux从串行接口(interface)读取一些数据。数据流中有时会出现0x0D。在接收器端,该值被0x0A替换。这看起来像是一种期望的行为-不幸的是,在我的情况下它不是期望的,我认为它与打开端口期间设置的选项之一有关:structtermiosoptions;structserial_structsStruct;*fd=open(serialParams->port,O_RDWR|O_NOCTTY);//|O_NDELAY);if(*fd==-1)returnOAPC_ERROR_DEVICE;fcntl(*fd,F_SETFL,FNDELAY);tcgetattr(*f

linux - 为什么 Linux 程序的 .text 部分从 0x0804800 开始,堆栈顶部从 0xbffffff 开始?

根据AssemblyPrimerForHackers(Part2)VirtualMemoryOrganization,Linux程序.text部分从0x0804800开始,栈顶从0xbffffff开始。这些数字有什么意义?为什么不从0x0000000(或0x0000020或0x0000040开始.text以进入下一个32位或64位空)?为什么不从0xfffffff开始栈顶? 最佳答案 先这么说吧:很多时候,各个版block不需要放在特定的位置,更重要的是布局。如今,堆栈顶部实际上是随机化的,请参阅here。0x08048000是ld

linux - 在适用于 Linux 的 Windows 子系统上的 Ubuntu 上使用 INT 0x80 汇编编译的可执行文件不产生输出

我一直在看汇编教程,我正在尝试运行一个helloworld程序。我在Windows上的Ubuntu上使用Bash。程序集如下:section.textglobal_start;mustbedeclaredforlinker(ld)_start:;tellslinkerentrypointmovedx,len;messagelengthmovecx,msg;messagetowritemovebx,1;filedescriptor(stdout)moveax,4;systemcallnumber(sys_write)int0x80;callkernelmoveax,1;systemcal

linux - 段错误 : 0x0000000000000001 in ?? () 试图在 Linux 下编译/链接

我有一套用“C”编写的软件。这通常使用acc编译并在UNIXSolaris系统上运行,但我的任务是让它在x86_64机器上的Linux下运行。我对gcc或Linux不是特别熟悉,但我已经设法让代码通过最少的更改进行编译,以删除在Solaris下不存在的警告。我正在使用以下编译命令(从脚本调用,因此是环境变量):/usr/bin/gcc-L/tmp/lib-L/tmp/usr/lib-c-fPIC-g-I$WORKING_DIR$INCLUDE$WORKING_DIR/$FILE然后大部分源代码被放置在共享(.so)库中,也通过脚本,使用以下命令:ld$GLOSS_SUB_DIR/$RE

c - 如何验证 ICMPv6 校验和? (为什么我总是得到 0x3fff 的校验和?)

我正在开发一个接收IPv6路由器广告数据包的Linux用户空间程序。作为RFC4861的一部分,我需要验证ICMPv6校验和。根据我的研究,其中大部分是指IP校验和,如果您计算IPv6伪header和数据包内容的补位校验和,结果应该是0xffff。但我一直收到0x3fff的校验和。我的校验和实现有问题吗?Linux内核在将数据包传递给用户空间之前是否验证ICMPv6校验和?是否有用于测试的已知良好ICMPv6数据包的良好引用源?uint16_tchecksum(conststructin6_addr*src,conststructin6_addr*dst,constvoid*data,

安卓 : GL error while resizing: 0x506 (ignored)

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭去年。Improvethisquestion当我使用任何Android模拟器时,我不断遇到错误。"GLerrorwhileresizing:0x506(ignored)"有人知道如何解决这个问题吗?它是否会影响我的EspressoUI测试用例,因为在此之后我无法运行我的Espresso测试用例。我的测试Actor一启动就卡住了,并尝试单击出现以下错误的按钮android.support.test.espresso.AppNotIdleExce