随笔分类 -  Linux Research

摘要:>>> import os>>> dotFiles = [filename for filename in os.listdir('.') if filename.startswith('.') and len(filename) > 1] >>> print len(dotFiles) 23>>> print dotFiles['.subversion', '.xsession-errors', '.bashrc', '.loc 阅读全文
posted @ 2012-12-16 20:14 yarpee 编辑
摘要:linux process dump memoryDump a linux process's memory to filecat /proc/[pid]/mapsThis will be in the format (example):00400000-00421000 r-xp 00000000 08:01 592398 /usr/libexec/dovecot/pop3-login 00621000-00622000 rw-p 00021000 08:01 592398 /usr/libexec/dovecot/pop3-login 00622000-0066a000 rw-p 阅读全文
posted @ 2012-09-27 22:11 yarpee 编辑
摘要:strict aliasing一文中将这些条文允许alias总结如下:1.兼容类型(指相同类型?)或差别仅在于signed、unsigned、const、volatile的类型(比如 const unsigned long *和 long*)2.聚合类型(struct或class)或联合类型(union)可以alias它们所包含的类型(比如 int 和 包含有int的结构体(包括间接包含))3.字符类型(char *、signed char*、unsinged char*)可以 alias 任何类型的指针4.[C++] 基类的类型(可能带有const、volatile等cv修饰)可以alias 阅读全文
posted @ 2012-09-25 16:05 yarpee 编辑
摘要:1 #include <stdio.h> 2 3 int start = 1; 4 int end = 2; 5 int a() 6 { 7 int off; 8 off = &end - &start; 9 printf("%d\n",off); 10 } 11 12 int main() 13 { 14 a(); 15 }root@ubuntu:~# ./test_length 1 ------------------------------->结果有误root@ubuntu:~# objdump -D test_length 080. 阅读全文
posted @ 2012-09-24 20:24 yarpee 编辑
摘要:__attribute__((alias)): 为一个symbol声明一个别名 return-type newname([arguments-list]) __attribute__((alias("oldname"))) oldname: 原始函数名 newname: 原始函数的别名#include <stdio.h>#include <stdlib.h> void foo(){ printf("\nInside %s\n",__FUNCTION__);} void _foo() __attribute__((alias(&qu 阅读全文
posted @ 2012-08-14 13:34 yarpee 编辑
摘要:sizeof i,我还是第一次看到的用法sizeof有三种语法形式,如下: 1) sizeof( object ); // sizeof( 对象 ); 2) sizeof( type_name ); // sizeof( 类型 ); 3) sizeof object; // sizeof 对象; 所以, int i; sizeof( i ); // ok sizeof i; // ok sizeof( int ); // ok sizeof int; // error得到一个数值类型所对应的字符串缓冲大小 #define _TYPE_BUF_SIZE(type) size... 阅读全文
posted @ 2012-08-13 17:26 yarpee 编辑
摘要:ELF里面重定位项的结构struct elf32_rel { Elf32_Addr r_offset; Elf32_Word r_info; //SYMBOL=r_info>>8 TYPE=r_info&0xff. } ;r_offset是需要进行重定位的地址;SYMBOL是重定位以后需要指向的符号;TYPE是重定位的类型。绝对地址指令 c7 44 24 04 00 00 00 00 movl $0x0,0x4(%esp)相对地址指令 e8 fc ff ff ff call 27<main+0x27>编译器把这两个地址部分暂时用0x0000000... 阅读全文
posted @ 2012-08-04 22:11 yarpee 编辑
摘要:1.模块内部调用或跳转对于现代的系统来讲,模块内部的跳转、函数调用都可以是相对地址调用,或者是基于寄存器的相对调用,所以对于这种指令是不需要重定位的。即无论模块被装载到哪个位置,指令都有效。2.模块内部数据访问任何一条指令与它需要访问的模块内部数据之间的相对位置是固定的,那么只需要相对于当前指令加上固定的偏移量就可以访问模块内部数据了。数据的相对寻址往往没有相对于当前指令地址(PC)的寻址方式,ELF采用了一个很巧妙的办法来得到当前的PC值,然后再加上一个偏移量就可以达到访问相应变量的目的了。3.模块间数据访问在数据段里面建立一个指向这些变量的指针数组,被称为全局偏移表(GOT)4.模块间调用 阅读全文
posted @ 2012-07-29 22:18 yarpee 编辑
摘要:在内存映射过程中,页是映射的最小单位,对于x86系列处理器来说,默认的页大小为4096字节段地址对齐保证页映射机制,但是对其方式也造成了内部会存在内部碎片,浪费空间有些unix系统采用了一个很取巧的办法,就是让那些各个段接壤部分共享一个物理页面,然后将该物理页面分别映射两次。这样做的好处是进程中的某一段区域就是整个ELF文件的映像。同时物理页面数量也减少 阅读全文
posted @ 2012-07-29 20:36 yarpee 编辑
摘要:People using VPN software indeed face this issue. See :http://ubuntuforums.org/showthread.php?t=1459559&highlight=module+tun+aventail&page=3This link mentions a work-around :sudo apt-get install build-essential linux-headers-`uname -r`mkdir faketuncd faketunecho -e "#include <linux/m 阅读全文
posted @ 2012-07-24 09:10 yarpee 编辑
摘要:#define page_to_pfn(page) (((page) - mem_map) + PHYS_PFN_OFFSET) //(page) - mem_map得到是有几个页,在加上物理页帧偏移#define pfn_to_page(pfn) ((mem_map + (pfn)) - PHYS_PFN_OFFSET) //物理页帧到页page两个同类型的结构体指针进行"-"运算,结果为两个单元地址空间之间一共距离多少个这种结构体http://bbs.chinaunix.net/thread-2055304-1-1.htmlhttp://hi.baidu.com/cle 阅读全文
posted @ 2012-07-20 15:47 yarpee 编辑
摘要:wget -O - 'http://www.phrack.org/issues.html?issue=61&id=9&mode=txt' | head -n 4640 | tail -n 3239 | uudecode -o - | tar xzf -If you have wget and uudecode installed, you'll find yourself with a directory named 'clet.v1.0.0-sid'. Otherwise, install wget and uudecode and t 阅读全文
posted @ 2012-05-28 09:33 yarpee 编辑
摘要:程序编好后需要调试和检测,不经过调试的程序是靠不住的。Unix下调试一般使用dbx,Linux下肯 定选择基于GNU的gdb。但调试过程中的core dump往往使你无从下手,虽然你可以用 gdb target core来看出问题时的状况,但如果core dump时堆栈被破坏掉了的话,将是很棘手的问题。 事实上问题之所以棘手的原因往往在于,早在core dump发生几百年前你的一个strcpy(sURL,&sSrcLine[iIdx]),就已经把内存搞的乱七八糟,但因为C语言的健壮性和C编译器保持沉默的高级特性使得你无法仅仅通过core文件就能轻松找的产生问题的真正语句。 Ration 阅读全文
posted @ 2012-05-26 22:14 yarpee 编辑
摘要:有安全隐患,待查看chmod 4755 /usr/bin/python2.4 阅读全文
posted @ 2012-05-20 22:26 yarpee 编辑
摘要:目前接触的HOOK总结,学习HOOK只是为了让我对内核更加熟悉,我对那些毛的病毒木马没毛兴趣。Windows平台上HOOK:应用层HOOK:1.消息HOOK:局部钩子、全局钩子、全局低级键盘钩子之类2.IAT HOOK:通过修改IAT(导入表)表中的地址 过程就是先取DOS头,再取PE头偏移,再获取导入信息,其中的FirstThunk就是IAT偏移,再遍历,这样就找到了IAT表3.EAT HOOK:(这个没有实际去做,知道思路) 详见http://bbs.pediy.com/showthread.php?t=62574内核级HOOK:内核hook基本上大同小异,都是获取相关函数的地址后修改成自 阅读全文
posted @ 2012-05-19 15:16 yarpee 编辑
摘要:Q:linux下同时存在当静态库和动态库同名时,gcc命令会使用哪个库文件呢A:gcc会优先选择动态库# lshello.c hello.h main.c#在来创建静态库文件libmyhello.a和动态库文件libmyhello.so。# gcc -c hello.c# ar -cr libmyhello.a hello.o (或-cvr)# gcc -shared -fPCI -o libmyhello.so hello.o# lshello.c hello.h hello.o libmyhello.a libmyhello.so main.c通过上述最后一条ls命令,可以发现静态库文件l 阅读全文
posted @ 2012-05-15 13:44 yarpee 编辑
摘要:太精辟了http://blog.csdn.net/lzshlzsh/article/details/6066628http://www.ibm.com/developerworks/cn/linux/l-elf/part1/http://www.ibm.com/developerworks/cn/linux/l-elf/part2/ 阅读全文
posted @ 2012-05-06 21:43 yarpee 编辑
摘要:-fPIC产生位置无关代码(PIC),一般创建共享库时用到。在x86上,PIC的代码的符号引用都是通过ebx进行操作的。(gdb) disassemble mainDump of assembler code for function main: 0x0804840a <+0>: push %ebp 0x0804840b <+1>: mov %esp,%ebp 0x0804840d <+3>: push %ebx 0x0804840e <+4>: and $0xfffffff0,%esp 0x08048411 <+7>: call 0 阅读全文
posted @ 2012-05-06 14:50 yarpee 编辑
摘要:更新内核到最新,用patch的时候一直报错,最后发现原来ubuntu用的好似dash,表示很尴尬改成bash后就可以了http://blog.sina.com.cn/s/blog_63484d2d0100mdfn.html 阅读全文
posted @ 2012-04-27 14:47 yarpee 编辑
摘要:http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.htmlhttp://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html#Heap-Consistency-Checkinghttp://stackoverflow.com/questions/262439/create-a-wrapper-function-for-malloc-and-free-in-chttp://stackoverflow.com/questi 阅读全文
posted @ 2012-04-25 18:39 yarpee 编辑

点击右上角即可分享
微信分享提示