- 博客(8)
- 收藏
- 关注
原创 todo
规范:每一个item有编号,过一段时间加入完成状态,完成,舍弃,待续1、A*算法不够完善,好好看一下人工智能再进行一下增补,主要把没有解的情况作一下判断,再把那题过了,看是不是能进一步优化
2006-02-18 13:05:00 1493
原创 shellcode
shellcode利用系统调用execve得到shell1、execve函数用法函数原型为int execve(const char *filename, char *const argv [], char *const envp[]);例程$ vi t.c int main(int argc, char **argv){ char *name[2] = {"/bin/s
2005-02-17 16:44:00 2458 1
原创 系统调用
系统调用直接利用系统调用输出Hello生成elf文件$ ll asm-rwxr-xr-x 1 fifan root 1202 Jan 25 18:59 asm只有1202字节,而用printf则会生成>10k的文件源代码asm.c#include int errno;_syscall3(int, write, int, fd, char *, data
2005-01-25 20:00:00 1772
原创 gcc编译c语言中内嵌汇编
gcc编译c语言中内嵌汇编--AT&T and Intel 汇编语法对照寄存器命名:AT&T: %eaxIntel: eaxAT&T 语法源地址在左侧,目的地址在右侧与Intel 方式语法相反将eax值传入ebxAT&T: movl %eax, %ebxIntel: mov ebx, eaxAT&T 语法在立即数前有前缀$. AT&T: movl $0x0h, %eaxInt
2005-01-25 19:28:00 4689 3
原创 Linux下创建静态、动态库
Linux下创建静态、动态库源码-----------a.cpp---------------#include int a(int i){ std::printf("in a(int a) %d/n", i); return 0;}-----------b.cpp----------------#include int b(char *s){
2005-01-25 14:30:00 4084
原创 A*算法实现
A*算法实现一、 算法思想 搜索中利用启发式信息,对当前未扩展结点根据设定的估价函数值选取离目标最近的结点进行扩展,从而缩小搜索空间,更快的得到最优解,提高效率。二、 启发函数1、 不在位数码个数 启发函数h ( n )为当前结点不在位的数码个数。由于一次只能移动一个数字位,因此h ( n ) 2、 每个数字位与对应目标数字位间距离和 进一步考虑当前结
2005-01-25 11:51:00 6803 4
原创 汇编结构体数组寻址
1、左移2、加一定倍值3、再左移,得到数组下标形成偏移4、取首地址5、首地址 + 数组下标形成偏移 + 结构体内部偏移得到欲存取的地址routine shl ... add ... shl ... mov offset xxxxx call atoi函数取得一个整数,将这个整数按照68字节一个结构体进行寻址以16 bit字类型写入对应结构体的第四个字节处写入.text:0802A6E9
2005-01-25 10:58:00 5907
原创 缓冲区溢出程序
地址改写将main函数的返回地址写入main函数的第一个参数在堆栈中的位置保证溢出返回后能返回到__lib_start_main函数使程序顺利结束将foo 函数的返回地址写入main函数的返回地址,当main 函数执行结束返回时会跳转到foo函数中执行(溢出)执行过程1、__lib_start_main 为main函数创建好堆栈空间写好返回地址2、main函数执行该地址输出now in mai
2005-01-24 19:17:00 3722 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人