作者:hacker发布时间:2022-10-25分类:破解邮箱浏览:167评论:2
小童鞋 攻击别人电脑这种事情 最好别做 既然你提出这种问题说明你还没有消除自己痕迹的技术 这种攻击的事你再修炼几年吧
从最基础的开始。操作系统、数据结构、编译原理,TCP/IP等等。C只是个语言而已(工具会用不难,难的是怎么用这工具来创造一个东西而已,要是创造很简单的话,那中国也不会有这么多IT民工了,呵呵,扯远了……),所涉及的知识点用纸头写出来也就那C语言宝典的CHM这么多,如果其他的原理性的东西不了解这些的话剩下的全是白搭。
想入门的话估计前两三年基本都会扑在跟这个看似毫不相关的东西上面,但学好了那些看似不相干的东西之后,回头再看这些东西会觉得也就是这样,之后就是稍微参考些相关手册什么的看看编编也就出来了。不过,能真把这些东西都啃下来的人估计他也是可以在软件公司里拿个10k的吧,呵呵。
操作系统是必须要学的,其实攻击攻的也是操作系统,黑客什么的也不就是不断获得操作系统更高的权限直到最顶级的管理员么。编译原理,你知道编译器怎么转换源码的,你也会知道许多其他不该知道的东西:P 。TCP/IP是网络的基础,你总不见得要冲到人家家里去进行登录吧……数据结构+算法=程序。这说法曾经代代相传(不过现在主流是面向对象了),对底层的来说,有些东西是不得不学的,就像最典型的所谓的缓冲区溢出也就是利用了数组越界而已
爬山总不可能一下子跳到山顶,总要一步步走上去,但问题是你能不能耐得住这性子,而且吃不吃得下那些知识。
还有,编程是个体力活,边看书边敲代码已经被许多人证实是一个学习的最佳捷径,基本上学成的都是敲出来的,而学搓的都是没敲的,一遍不懂,三遍背下,以后实践中慢慢体会,后面就豁然开朗,任督二脉相通X@$%!@^……
还有还有,1L 汇编语言是需要的 但8086就不用限定了,按80486的后面是奔腾来算,现在的CPU应该都已经是80986了吧:P。汇编找本32位计算机原理或者单片机看看也行,这样还能加深对计算机的理解。
这个基本上没办法给你写例子,受编译环境影响太大。
原理很单纯,就是把函数局部变量作为基址可以直接修改函数的返回地址。用汇编很好办,但C的话很多必要地址只能编译好了才能知道。
----
VS2008 Debug模式编译 关闭Incremental Linking
#include stdio.h
void foo();
// __stdcall为了foo2在返回的时候清理foo1调用时候的参数,因为是通过返回进入foo2的,所以foo1的返回地址已经出栈,现在栈里还剩下foo1的两个参数,我们需要第一个参数的位置作为foo2的返回值
// 于是还剩一个参数的位置,foo2也有一个参数,利用__stdcall自己清理参数的特性就可以把剩下的那个参数清理掉。然后我们直接返回到foo1调用后清理参数的代码之后,避免栈混乱。
void __stdcall foo2(void *dummy)
{
printf("foo2...\n当前返回地址: %.8X,位于: %.8X\n", *(dummy - 1), dummy - 1);
*(int *)(dummy - 1) = (int)foo + 0x3A; // 这里的0x3A只有编译后看生成的汇编才能得到。
printf("替换返回地址为foo1返回并清理堆栈后...\n当前返回地址: %.8X,位于: %.8X\n", *(dummy - 1), dummy - 1);
}
void foo1(int in_offset, int in_data)
{
int buf[0x10];
printf("foo1...\n当前返回地址: %.8X,位于: %.8X\n", *((void **)in_offset - 1), (void **)in_offset - 1);
buf[in_offset] = in_data; // 这里buf + in_offset指向的是foo1的返回地址,foo1返回的时候会跳转的foo2的入口
printf("替换...\n当前返回地址: %.8X,位于: %.8X\n", *((void **)in_offset - 1), (void **)in_offset - 1);
}
void foo()
{
printf("foo...\n调用foo1, 通过非法索引将foo1返回地址替换为foo2人口...\n");
foo1(18, (int)foo2); // 这里的18是返回地址相对buf的偏移量,只有编译之后才能获得。VC环境下Debug模式是16个buf元素+1个保护数据+1个过去的帧指针。
}
void main()
{
foo();
}
C语言最大的应用就是写操作系统和驱动程序还有其他嵌入式系统的程序,学习程序设计选选择C是很好的,掌握的一定程度再学C++,java等就容易一些.
黑客工具的开发语言很多了,用java好像没听说,很多小工具是直接用的汇编,小榕暴强的扫描工具"流光"是C++ Builder开发的,现在很多菜鸟黑客甚至用中文编程语言(易语言)来开发一些工具软件.
如果找到对方系统漏洞,不管什么语言都可以攻破对方的电脑,甚至一个批处理脚本都可以
如果找不到对方系统漏洞,什么语言都抓瞎
标签:c语言做攻击软件
已有2位网友发表了看法:
访客 评论于 2022-10-26 02:40:19 回复
ummy - 1) = (int)foo + 0x3A; // 这里的0x3A只有编译后看生成的汇编才能得到。 printf("替换返回地址为foo1返回并清理堆栈后...\n当前返回地址: %.8X,
访客 评论于 2022-10-25 22:45:39 回复
就出来了。不过,能真把这些东西都啃下来的人估计他也是可以在软件公司里拿个10k的吧,呵呵。操作系统是必须要学的,其实攻击攻的也是操作系统,黑客什么的也不就是不断获得操作系统更高的权限直到最顶级的管理员么。编译原理,你知道编译器怎么转换源码的,你也会知