需要这个程序员源代码网站的一个源代码,具体请看问题补充:

赶快加入吧
收藏,4.1k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
咨询下大家阅读过的开源代码是什么,期待回答最好有一定的格式。语言,项目,特点这种格式。
比如:javascript,backbone,XXXXX。
很期待各个领域的人进行回答。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:musicstore
特点:mvc+ef入门,文档写的特别好。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:JavaScript
项目:jquery
特点:链式结构,大众化框架,对了解浏览器兼容性有不小帮助
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:Typecho
特点:虽然我是搞JAVA的,但是Typecho的目录结构以及代码读起来让我特别的舒服,很容易懂。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:java
感觉自己好挫啊~~~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:Python
项目:scrapy
特点:了解 item 是如何封装的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
比较大的的才算吧, CNode
后面的大项目就是公司代码了.
小项目很多, 主要看 GitHub 上出现什么简单的代码, 记不清了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最开始读的是 WordPress
在IDE上,按CTRL键一个函数一个函数的追踪,看看一个请求是如何变成页面
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:Java
特点:一个纯 Java 实现的可视化库,功能强大,配合 Swing 可以做出很强悍的可视化客户端(不推荐实现用于 Web 的 Applet)。
PS:做项目需要(本科期间,SRT项目),不得不看,不过源码太多,没看完,只看了与项目需求比较相关的部分。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:wifidog
特点:注释比较多,规模不算法,组织很好。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:JavaScript
项目:jQuery
特点:Api设计简洁
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:LBS BLOG
大伙都是来挣声望的么?看来还是无内涵的问题吃香,我就把第一次留这里吧~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
完全可以当做规范
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
没记错的话是:
语言:pre-ANSI C
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:Shell
特点:简单易懂。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
等等是第一个啊?
项目:sgi stl
特点:学习模板的好方法。。现在嘛。。boost没仔细度过
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:chromium
特点:桌面应用必看
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
tinyos, 大学一年半的时间折腾它, 几乎把文档看遍了, 全是英文的好家伙, 不过打下了很好的硬件基础,设计在我心目中的地位就是那时候确立的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
主要特点是做DZ插件可以让好多人都来用,成就感比较强。至于代码本身不作评价。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Google的正则匹配库RE2
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
第一个是phpcms我记得最清楚
然后就是 dedecms 然后就是 iwebshop
然后就是 thinkphp
等等很多源码
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:JAVA
类库:TestNg
在对Java基本只会Hello world的情况下,出于工作需要,针对一个功能点,硬着头皮看源码,改源码,自己实现新功能
这之后,对JAVA的恐惧感减少不少
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:LitJson
特点:轻量型解析json库,还没看懂
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:Z-Blog
特点:一代经典……
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
特点: 文档齐全,扩展强
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目: PureMVC
特点: AS中最常用框架
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
织梦,一个据说功能齐全无比的开源CMS框架
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目: httpserver
特点: 简单,知道一个http请求是如何被处理的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
特点:那些特点,开发中重来不会用到。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:wine
特点:代码都是基于 TDD 的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:EMule
特点:VC项目,比较容易跑起来,跑起来看效率比较高。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:linux下一个命令行的,叫bc的计算器的代码
特点:非常clean的C代码。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
css框架 bootstrap
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:live555
特点:流媒体转发, 仍然没有全搞懂
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:CodeIgniter框架
特点:轻量、松耦合
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
特点:TMD看得老子一肚子火
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
特点:一调试就进去了。变量名好多好多下划线,用到一些奇怪的模版特性,要写好多重载特别长。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
PetShop4.0
其中的思想对我现在实习时阅读公司的代码大有帮助。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
java lucene
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:ASP.Net MVC 4.0
收获:对系统的架构了解了一些,特别是AOP
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:javascript(node.js)
项目:Hexo
收获:学会node命令行编程,node更加熟练(这个很重要),node相关的几乎全部知识。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:minix
特点:就是学校作业,然后在上面做做改改各种折腾...隐约记得做过信号信号量,改过文件系统还是什么的...
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
项目:Wordpress
特点:当时世界上最流行的Blog程序
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最先了解discuz
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
hello world
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
语言:Javascript
项目:个人兴趣
特点:轻量、代码可读性强、兼容性好、可扩展性强
「已忽略」::不符合答题要求
同步到新浪微博
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
分享到微博?
关闭理由:
删除理由:
忽略理由:
与已有问题重复
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
内容质量差,或不适合在本网站出现
无意义讨论型问题
其他原因(请补充说明)
举报理由:
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
我们不是IT民工,我们只是在追求自己的梦想,我们是代码爱好者&&微博互粉@马超Terminal
程序员淡定的姿态和操蛋的心
程序员的通病:逼。其实这个逼字可以分为两个阶段,年轻的时候,是傻逼;年纪大点的时候,是牛逼。但也不绝对。我身边好多做软件,或是被软件做的朋友。有上30的,有才过20的。有倚老卖老,有年少轻狂的。记得一朋友说:妈的,最他妈讨厌写代码不写文档的。但据我所知,很多时候他也是不写的。第一可能是小项目,写在代码注释就行了。第二可能是对这方面就不是很重视或是规范化的操作。比如我现在基本两种情况都有,不知道下次来新人是否也有人在背后这样骂我。后来我跟朋友开玩笑的说:是啊,不过这还好,劳资最最最讨厌写个文档还尼玛是英文的!!朋友笑了,因为他就碰到过。然后程序员内心总有那么点操蛋,他跟我说,那傻逼写毛个英文,语法句子都读不通。我猜他一定用xx翻译助手了,因为我也一直用xxxxx助手。当然,也可能那会他心情也不是太好。&这是年少程序员中最典型的一种。接手一个遗留下来的项目。一看代码规范没按自己来的,就是那人傻逼。一看ui设计不符合自己审美的,就是那人傻逼。一看项目 没按他自己思想框架里的mvc或是xxx模式来的,就是那人低端傻逼。因为去年的时候,我就这样。一个客户端项目。所有布局设计xml文件,最外层嵌套全用帧式布局,我就,靠。数据文件存储,你就一个应用,用个毛的内容提供者啊,直接db好了咯。项目包还有这样划分的?网络数据居然走xml协议格式?后来才慢慢发觉,也许上一位写的不一定完美。但却能解决现有的问题。用的帧式布局,因为项目底部的菜单栏是动态改变的,如此后只需传入的上下文覆盖上相应的一栏。项目包划分,只不过个人的一种习惯,他可能客户端,服务端都接触着。网络数据走xml,虽然没按常理走json,却让我发现他其实挺牛的,说白是自己写的一个解析类,类似于android中pull一样的。这样也许他可以不知道android自带某某api,却可以将自己封装的类到处使用。有一千个程序员就有一千个哈姆雷特。&然后是倚老卖老的,这种比较简单。反正各种代码不符合他要求,界面影响他食欲,需求不符合他性欲。外包代码各种bug,框架设计各种缺陷,合作公司项目经理各种傻逼或是装逼。反正带逼。这已经是项目经理之怒了。不过也能理解。谁都想做一个自己心目中完美的项目。&然后是,&这个,我知道&一类的人。跟他说吧,他都是,这个我知道。我就是这样写的,你看。。。。巴拉巴拉。把他的代码流程走一遍。其实我也知道,这个代码你都写了几十遍了。你知道的。问题是,不是你知道的这个问题。。程序员逻辑:第一,自己永远是对的;第二,详情请查考第一条。&当然,程序员中确实可以有些逼的人。因为他其实去除这个逼的味道,还是挺牛逼的。有好的基础,说话永远是一副无bug的逻辑思路,知道很多专业名词。工作待遇环境好于其他程序员。&今天又没干什么,和同事聊了一下午dota&;&看到某某大牛了&&我就穿背心,短裤人字拖上班,一坐下把烟灰缸一推,台式机笔记本一开,俨然一副程序员模样&"那人傻逼,这项目我一人写的。"程序员心里:屌,才是硬道理。你不骂骂项目经理,不穿着拖鞋上班,你都不好意思说你是高端程序员。这类,虽然有实力,但是,程序员的心里是相对的。都是自己瞎比比时觉得很过瘾,别人一瞎比比就觉得别人在瞎比比。。。&后来发现另外一种愤怒。&这代码我似成见过。&&你这设计不行,面条没面条味道,大葱放的比青菜还多,牛丸像鱼丸,最重要的是,这猪大肠里还有屎&贬低他人成果,也成了一种乐趣。也是,这的确是提高自己快感的一种方式。别人有多搓,你那就相对来说就有多优秀。问题是,程序员,我们能不能不要这么愤世嫉俗啊。开源代码本来就是一种分享。可能别人修改了某些功能。别人的设计一般,别人的杂碎面难吃,那你做一碗出来啊,别瞎比比好么。&在山的那一边,住着一群快乐的程序员。他们勤劳勇敢。敢爱敢恨会赚钱,不会花钱。。。。。。。。&少点怨恨,多点包容少点指责,多点赞赏少点瞎比比,多做点实事别人说你牛逼,那才是真牛逼。&劳资心态也不好,大过年就咆哮。&大家新年快乐。
认识启动函数
&&VC++开发的程序,在调试时总是从main或者WinMain开始的。初学编程时老师一定告诉过我们这是程序的入口,也就是程序的第一条指令执行处。这个认识其实是错误的,在他们之前还要更早的调用者。&& & & &在应用程序被加载时,操作系统会分析执行文件内的数据,分配相关资源,读取文件中的代码和数据适合的内存单元,然后才是执行入口代码,入口代码其实并不是main或WinMain,通常是mainCRTStartup,wmainCRTStartup,WinMainCRTStartup,具体由编译选项而定。&& & & &了解VC++6.0的启动函数&& & & &VC++6.0在控制台和对多字节编码环境下的启动函数为mainCRTStartup,由系统库KERNEL32.dll负责调用。在mainCRTStartup中再调用main函数。我们通过编译器提供的Call Stack观察在main函数启动之前系统进行了哪些操作。&& & &&&& & & &图中调用了5个函数,两个NTDLL,一个KERNEL32,一个mainCRTStartup,一个main,VC++提供了mainCRTStartup()函数的源码,该函数完成了一下调用:1.GetVersion函数:获取当前运行平台的版本号。2._heap_init函数:用于初始化堆空间。在函数实现中使用HeapCreate申请堆空间3.GetCommandLineA函数:获取命令行参数信息的首地址4._crtGetEnvironmentStringA函数:获取环境变量信息的首地址5._setargv函数:此函数根据GetCommandLineA获取命令行参数信息的首地址并进行参数分析6._setenvp函数:此函数根据_crtGetEnvironmentStringA函数获取环境变量信息的首地址进行分析。7._cinit函数:用于全局变量数据和浮点数寄存器的初始化。&main函数识别在OllyDBG中加载一个程序进行分析,OllyDBG会自动识别GetCommandLineA函数,往下依次是_crtGetEnvironmentStringA,_setargv,_setenvp,_cinit&
CPU&Disasm&&
Address&&&Hex&dump&&&&&&&&&&Command&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Comments&&
0040122B&&|.&&E8&502B0000&&&CALL&00403D80&&
&&|.&&FF15&4CD14200&CALL&DWORD&PTR&DS:[&&KERNEL32.GetCommand&;&[KERNEL32.GetCommandLineA&&
&&|.&&A3&24C64200&&&MOV&DWORD&PTR&DS:[42C624],EAX&&
0040123B&&|.&&E8&&&&CALL&00403B60&&&&&&&&&&&&&&&&&&&&&&&&&&&&;&[ACM05.00403B60&&
&&|.&&A3&6CAC4200&&&MOV&DWORD&PTR&DS:[42AC6C],EAX&&
&&|.&&E8&&&&CALL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;&[ACM05.&&
0040124A&&|.&&E8&B1220000&&&CALL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;&[ACM05.&&
0040124F&&|.&&E8&CC1E0000&&&CALL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&;&[ACM05.&&
&&|.&&8B0D&A8AC4200&MOV&ECX,DWORD&PTR&DS:[42ACA8]&&
0040125A&&|.&&890D&ACAC4200&MOV&DWORD&PTR&DS:[42ACAC],ECX&&
&&|.&&8B15&A8AC4200&MOV&EDX,DWORD&PTR&DS:[42ACA8]&&
&&|.&&52&&&&&&&&&&&&PUSH&EDX&&
&&|.&&A1&A0AC4200&&&MOV&EAX,DWORD&PTR&DS:[42ACA0]&&
0040126C&&|.&&50&&&&&&&&&&&&PUSH&EAX&&
0040126D&&|.&&8B0D&9CAC4200&MOV&ECX,DWORD&PTR&DS:[42AC9C]&&
&&|.&&51&&&&&&&&&&&&PUSH&ECX&&
&&|.&&E8&8CFDFFFF&&&CALL&&&
如果软件学院的教材换成如下图书,效果会怎么样呢,哈哈?
C语言:《C和指针》&&&&&&&&&&《C缺陷与陷阱》&&&&&&&&& 《C核心编程》C++:《C++ Primer》&&&&&&& 《Thinking in C++》&&&&&&&&&《Effcetive in C++》操作系统:《深入理解计算机系统》(卡耐基梅陇大学出版的)&&&&&&&&&&&&&《深入理解Windows操作系统》&&&&&&&&&&&&& 《自动动手写操作系统》汇编:王爽的《汇编语言》&&&&&& &罗云斌《琢石成器》数据结构:严蔚敏的《数据结构》&&&&&&&&&&&& MIT《算法导论》网络:潘爱民翻译的《计算机网络》&&&&&&& 《TCP/IP详卷》Java:《Java核心编程》&&&&&&&& 《Thinking in Java》&
今天在北大ACM上遇到的一个好题,和大家分享一下,本人用普通,文艺,2B三种方法求解思路
DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子
4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。Input输入的第一行表示区域的行数R和列数C(1 &= R,C &= 100)。下面是R行,每行有C个整数,代表高度h,0&=h&=10000。Output输出最长区域的长度。Sample Input5 51 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9Sample Output25&本人思路:(1)普通方法递归+动态规划将角度转换一下,求解整条线路的最长距离实际可以转化为从起始节点在四周挑选最长的距离,而四周的四个节点的最长距离又可以转化为四周的四周,所以可以一直递归到最外层节点,而各节点之间的最长距离可以利用动态规划的方法求得。(2)文艺方法遗传算法或Dijkstra算法将问题求解转化成染色体序列然后让大自然去杂交变异吧~~~或者将其转化成为有向图利用Dijstra算法反向求的最长路径(2)2B方法穷举
好久没有写驱动了,这段时间编程都被挤在了半夜,最近在写工作室的主页,整个网站无需刷新,用户可以像操作智能手机那样进行滑动操作,纯Jquery+Ajax实现,附图几张
若干年前的一个风雨交加的夜晚,Opera, FireFox, Chrome等几个浏览器开发巨头在美国纽约一个不起眼的咖啡厅里相遇了,低沉的酒吧萨克斯音乐里,几个巨头侃侃而谈。这次会谈的话题是Flash和Siverlight。另几个巨头不爽的是,Opera, FireFox, Chrome几乎成了Flash和Siverlight寄生的容器。FireFox说,为什么Flash和Siverlight能做的事情我们浏览器不把它做掉。Chrome表示严重同意,并且补充道,浏览器将来的发展就是微内核的操作系统,一个计算机理论上只运行浏览器就足够了,浏览器为用户打开云端的大门。Opera说,的确如此,这个标准应该是HTML2,3,4的下一个版本,应该是HTML5吧。在几个人会谈就要结束的时候,IE先生姗姗来迟,他抱歉说,I am sorry, it's traffic,对啦,你们刚才谈论什么?
&买单&,Chrome大手一挥,漂亮性感的黑人女服务员扭着浑圆的屁股走过来。
Opera11,Chrome15,FireFox8目前已经基本实现了这个标准,而且几乎完全一样。IE9目前基本不支持。HTML5出来之后,Flash,Siverlight都将覆灭。WPF也毫无必要。HTML5将会掌控客户端UI的天下。即时本机程序,用HTML5开发也是优势明显。仍将存在的是古朴的SDK,MFC,COM,WTL这些程序。基本死翘的是C#做客户端的各种技术:WinForm,WPF,XAML,如果现在仍然投入在这些技术上已经毫无意义。
如果你是一名C/C++程序员,HTML5时代仍然是你们的春天,去看看NativeClient(NaCl)吧,或者写写JavaScript也不错。搞C/C++永远不会过时。
2011年最后两个程序,高级网络管理的期末考试
一个Windows Client向Linux Server发送消息配置网络
一个基于Windows SNMP的VLAN网络管理系统
2012,加油吧~
就在一瞬间,爱上了Linux下的C
驱动只是工具,不是必须,不能走入误区
告诉你为什么Android手机配置再高流畅顺滑度也始终没有IOS好
虽然很多Android手机的配置都比iPhone要高,比如大多数Andorid手机的内存都有1GB,而iPhone 4S只有512MB内存,但用过iPhone的人都知道Android手机在使用的时候总感觉没有那么顺滑,究竟为什么会出现这种现象呢?一位软件工程师和前Google实习生Andrew Munn解释说是因为Android系统UI的框架设计的问题。
在iOS中UI渲染过程具有绝对的优先等级,当用户接触到iPhone的触摸屏后,iOS中所有的进程都将停止,系统会将所有资源用于渲染UI过程。而在Android系统中UI渲染过程的优先级别却没有那么高,也就是说当你触摸Android手机屏幕的时候,系统后台的程序并没有停止,仍然在继续运行之中,比如下载和查收短信,这样系统UI获得的资源就不够,这就是Android系统不流畅的原因。由于这个原因,新发布的Galaxy Nexus,甚至配备四核处理器的话说EeePad Transformer Prime平板电脑都无法保证顺滑的操作体验,这些设备只能与3年前的iPhone顺滑程度相比,那么Android团队为什么不从根本解决这个问题呢?实际上,Android的开发工作在第一代iPhone发布之前就已经开始了,原始Android原型体被设计成为使用键盘手机的设备,也就是黑莓手机的竞争对手。UI渲染优先级别在有键盘的手机上并没有那么重要。但是在iPhone发布之后,Android小组为了快速推出能与iPhone竞争的产品,迅速将Android改成触摸屏手机系统,但那时重写UI框架已经不可能了。因为如果这样Android应用市场中的所有程序将变得不可用,这种关系将一直处于恶性循环之中。难怪乔布斯在传记中表示Android是偷来的产品,哪怕苹果倾家荡产也要将其消灭。
SockMon网络安全监控系统
本来打算不再参加这次比赛,可是临时开变了主意,花了一个周的时间完成了这个小东西,重在参与。这次抄了星际盟主和北极星2008不少代码,在此公开感谢一下。话不多少,介绍程序吧。
SockMon网络安全监控系统
软件简介:
SockMon(SocketMonitor)网络安全监控系统是一款为电脑专业人员打造的一款出色的安防监控软件。在如今这个恶意软件,攻击,木马,病毒泛滥的年代,它就像您电脑的贴身保镖一样保护着您的电脑和个人信息的安全。随着人类IT技术的不断进步,恶意软件和攻击已从原有的类似于&熊猫烧香&这样的Ring3级程序,进步到类似于&BIOSKIT&这样的Ring0级程序。恶意软件轻易地进入到个人电脑的&心脏&&&内核,我们的个人电脑变得千疮百孔。但是,本软件采用各种高级内核驱动技术,可以轻易有效地查找并杀死您电脑上甚至于&RootKit&级的&幕后黑手&。下面,就让我们一起领略SockMon的威力!
软件部署:
软件主体由三个部署构件组成:
KsBinSword.sys驱动程序,LSP.dll动态链接库和SockMon.exe客户端。
软件开发:
&SockMon客户端采用C++编写(少量核心代码采用汇编语言直接编写),开发环境为VS2008,MFC平台。
&KsBinSword驱动程序采用C语言和汇编语言编写,开发环境为VC++6.0 ,Windows DDK 。
&LSP动态链接库采用C++编写,开发环境为VS2008,MFC平台。
功能简介:
该软件的功能主要由以下几部分组成:
1.网络数据流量实时监测
2.Snifer网络数据包实时捕获
3.网络数据IP报文解析
4.数据收发进程Hook追踪
5.高危进程基本信息查看
6.高危进程线程信息查看
7.高危进程模块信息查看
8.高危进程内存信息查看
9.高危进程PE文件查看
10.高危内核级进程查杀
11.高危线程查杀
12.高危模块卸载
详细功能介绍:
程序主界面
程序主界面(大流量时段)
程序主界面(小流量时段)
程序主界面由四部分组成:最上方的网络实时流量监控
网络流量实时监控软件可以将每时每刻捕获到的数据包转化成为走势图的形式,方便用户观察,用户可以通过它直观的感受当前网络状况并作出分析。
在走势图上方我们可以进行刷新,手动安装驱动,卸载驱动,提升用户权限,改变线条样式,获得当前IP,获得收包和发包个数。
中间靠左边的Snifer网络数据包实时捕获
Snifer模块可以将所有从本机发出和本机收到的数据包进行截获并解析。解析后我们可以获得数据包的长度,类型,源IP,源端口,目的IP,目的端口等信息。
程序对当今主流协议都进行了数据定义,可以解析的协议类型包括:
{IP, ICMP, IGMP, GGP, IPV4, TCP,PUP, UDP, IDP, IPV6, ROUTING, FRAGMENT, ESP, AH, ICMPV6, NONE, ND, RAW}。
中间靠右边的网络数据IP报文解析
单击Snifer模块中的任意一条记录,都可在右边的IP报文解析模块中将该数据包在IP层的原有形式按照IP报文的格式进行解析,显示的信息有:Version域,IP Head Length域,
Typeof Service域,Total Length域,Identification域,Flags域,Fragment Offset域,Time To Live域,Protocol域,Header Checksum域,Source Address域,Destination Address域。
所有信息都转换为十六进制显示。
最下方的数据收发进程Hook追踪
数据收发进程Hook追踪模块以树型控件的形式将具体到每个进程的数据收发情况进行显示,树型控件分为三级菜单,第一级菜单显示具体的进程路径,第二级菜单显示数据包类型归类,第三级菜单显示具体的数据信息,包括:收发类型,源地址,目的地址,数据大小,错误码。
单击任何一级菜单选项都会打开所选进程的信息查看窗口。
&&&&&&&&&&&& 高危进程查看窗口
& 窗口上方为高危进程的基本信息:
1.进程ID&& 2.进程名& 3.父进程ID& 4.句柄数量
5.线程数量& 6.进程系统路径&7.页错误数量
8.非分页池峰值使用情况& 9.非分页池使用情况
10.分页池峰值使用情况& 11.分页池分配使用情况
12.工作集峰值大小& 13.工作集大小&
14.页面文件峰值使用情况& 15.页面文件使用情况
窗口下方为该进程的线程和模块信息:
线程信息:1.线程ID& 2.使用计数& 3.大小& 4.BasrPri& 5.DeltaPri
& 模块信息:1.模块ID&& 2.模块名称& 3.模块系统路径&4.模块大小&5.模块基地址
& 利用进程信息查看窗口,专业人员可以很快的对该进程进行判断,判断是否为危险进程,并对其进行操作。
双击您所感兴趣的一列会弹出菜单,列出以下功能任
1.普通杀进程,该方法为用户态功能,可以安全使用。
2.驱动杀进程,该方法采用内核驱动&清零&法杀进
程,有一定危险性,如果杀掉和系统有关的进程可能
会造成蓝屏死机。
3.普通杀进程,该方法为用户态功能,可以安全使用。
4.卸载模块,该方法为用户态功能,可以安全使用。
5.查看进程内存信息。
6.查看进程可执行文件的PE信息。
如果操作成功则会有相应的提示。
选择进程内存查看,打开窗口:
选择进程内存查看会出现该窗口。该窗口右边实时显
示当前PC的虚拟内存状况,显示信息有:
1.页大小& 2.最小地址& 3.最大地址& 4.总物理内存
5.总页面文件&6.总虚拟内存&7.可用物理内存&8.可
用页文件& 9.可用虚拟内存
窗口右边会显示该进程地址空间里每个地址的详细信
1.地址编号& 2.大小& 3.状态& 4.类型& 5.初始保护&
6.访问保护
用户并且可以选择要查看&提交&&保留&&空闲&三
种不同类型的地址信息。
通过进程内存信息和PE信息查看可以确保专业人员
进一步确该进程是否为恶意进程,并对其进行操作。
哈哈,同学看到我的软件,说:我靠,打眼一看还以为是NASA在分析射电望远镜的数据,,
把界面和流量统计算法 改进了一下,界面显得更加简洁和专业,还剩危险进程的警告和查杀了
发现Win7和XP一个不起眼的小不同,在XP下当一个窗口覆盖到另一个窗口上或者窗口大小发生改变时都会引起窗口的重绘,触发WM_PAINT消息,但是在Win7下却不会触发WM_PAINT消息,但是窗口确实重绘了,那在Win7下这一重绘到底是由什么消息引起的呢?哪位同学有兴趣研究一下
网络期中论文写的MFC抓包程序..Snifer模块采用传统的混乱监听,进程数据包捕获模块则是自己编写DLL注入LSP服务,然后Hook掉自己感兴趣的协议函数就行啦~和之前的ProcMon不同的是这次没有写驱动程序,所以有些被内核Hook掉的数据包会“逃过”本软件的捕获~嘿
如何获得当前模块在进程地址空间中的位置
(w)WinMain的hInstanceExe参数实际值是一个内存基地址;系统将可执行文件的映像加载到进程地址空间中的这个位置。例如,系统打开可执行文件,并将它加载到地址0x,则(w)WinMain的hInstanceExe参数值为0x.
为了知道一个可执行文件或DLL文件被加载到进程地址空间的什么位置,可以使用GetModuleHandle函数来返回一个句柄/基地址
HMODULE GetModuleHandle(PCTSTR pszModule)
调用这个函数是,要传递一个以0为终止字符的字符串,它指定了已在主调进程的地址空间中加载的一个可执行文件或DLL文件的名称。如果系统找到了可执行文件或DLL文件名称,GetModuleHandle就会返回可执行文件/DLL文件映像加载到基地址。如果没有找到文件,系统将返回NULL。&
GetModuleHandle的另一个用法是为pszModule参数传入NULL,这样就可以返回主调进程模块的基地址。如果我们的代码在一个DLL中,那么可利用两种方法来了解代码正在什么模块中运行。第一个办法是利用链接器提供的伪变量__ImageBase,它指向当前正在运行的模块的基地址。这是C语言运行库启动代码在调用我们的(w)WinMain函数时所做的事情。
第二种方法是调用GetMoudleHandleEx,将GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS作为它的第一个参数,将当前函数的地址作为第二个参数。最后一个参数是一个指向HMODULE的指针,GetModuleHandleEx会用传入函数(即第二个参数)所在DLL的基地址来填写该指针。以下代码对这几种方法进行演示。
extern "C" const IMAGE_DOS_HEADER __ImageBvoid DumpModule(){ HMODULE hMoudle = GetModuleHandle(NULL); _tprintf(TEXT("with GetModuleHandle(NULL) = 0x%x\r\n"),hMoudle); _tprintf(TEXT("with _ImageBase = 0x%x\r\n"),(HINSTANCE)&__ImageBase); hMoudle = NULL; GetModuleHandleEx(
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(PCTSTR)DumpModule,
&hMoudle); _tprintf(TEXT("with GetModuleHandleEx = 0x%x\r\n"),hMoudle);}int _tmain(int argc, _TCHAR* argv[]){ DumpModule(); return 0;}
VS开发Windows应用程序建错工程时的几种解决方案
开发Windows应用程序的程序员经常会有建错工程的时候,例如开发人员可能选择一个新的Win32应用项目,但创建的入口点函数是main。生成应用程序时,编译器会报告一个链接错误,因为Win32应用程序会设置/SUBSYSTEM:WINDOWS链接器开关,但WinMain或wWinMain函数并不存在。此时,开发人员有以下4种选择。
1.把main函数改为WinMain。这通常不是最佳方案,因为开发人员真正希望的可能是创建一个控制台程序。
2.在Visual C++中创建一个新的Win32控制台程序,然后在新项目中添加现有的源代码模块。这个办法过于繁琐,相当于从头开始。
3.在项目属性对话框中,定位到Configation Properties(配置属性)/Linker(链接器)/SubSystem(子系统)选项,把/SUBSYSTEM:WINDOS开关改为/SUBSYSTEM:CONSOLE。这是最简单的方法。
4.在项目属性对话框中,删除/SUBSYSTEM:WINDOWS开关。这种方法能带来最大的灵活性。现在,链接器会根据源代码中实现的函数来执行正确的操作。
”当程序员是否能当好,取决于你对问题的理解是否够深刻“,昨天突然发现这句话的正确性,自从科技局的项目做完后将近大半年没有碰.net了,一直在搞底层的东西,昨天突然要拿.net写个小程序,本以为会比较生疏,但是没想到思路,算法,架构都是一气合成,只是查了几个简单的函数的用法就很快的完成了任务。。反思一下,觉得这还是对底层基础设施有了深刻理解后产生的效果~
如何成为Windows开发高手
&& & & &Windows平台可谓是当今最为流行的平台之一(甚至可以没有之一)其用户量远远超过了Linux,Mac,Unix等主流PC操作系统平台。作为一名程序员,选择Windows作为自己的开发平台无疑是一个正确的选择。但是,由于Windows开发人员数量的庞大,使得Windows开发人员的&价值&显得普遍没有Linux,Max等平台下的高。换句换说,就说庸庸碌碌之辈太多。从一个某某培训机构学上几个月的.net的人就自称是Windows开发高手了,这当然会让人笑掉大牙。其次由于Microsoft的开发平台和工具通常很容易入手,所以使得许多程序员误以为这就是开发Windows应用,认为Windows开发理应简单。&& & & &作为一名学生,我从自己的角度谈谈如何真正成为一名Windows开发高手。注意,以下说讲的都是在自己的语言关已过的前提下,你应该熟练结构化程序设计,对面向对象程序设计有一定的理解。为什么不是精通面向对象?面向对象这潭水真的太深了,做了一辈子开发的程序员也许都不敢说自己完全掌握了面向对象程序设计精髓。&&& & &1&熟练掌握Windows SDK编程&& & &掌握Windows SDK开发其实是对WIndows操作系统进行一次初步的探究。虽然MFC已经将SDK进行了很好的封装,但是想要真正掌握Windows程序设计的精髓,还是要从SDK开始。如果初学者一开始就拿着一本《深入浅出MFC》来看的话,我相信是看不下去的。从C语言控制台编程跨向Windows程序设计其实是需要花一点功夫的。初学者往往在学习Windows程序设计时第一个不习惯的地方是大量MicroSoft定义的宏和结构体。这些&旁枝&往往成为初学者的一大障碍,是的初学者将精力往往放在了这些不重要的地方,而不是放在Windows消息机制,窗口架构等主要的地方。MFC这一点做的更为深入,所以建议初学者一定要从Windows SDK进行学些。&&& &推荐读物:&《Windows程序设计》------经典中的经典,Windows开发人必备读物,由微软中国的员工翻译过来的,现在已经是第五版了。
&& & & & & & & & & & & &&《Windows核心编程》------站在一个更高的层次审视Windows。&&& & &2&熟练掌握MFC编程&& & &有很多人说MFC已经过时了。的确,这一点不得不承认,Windows自从将重点放在.net战略上后,基本上对传统C/C++开发这一块基本上属于放羊式管理。到现在为止都没有一套像样的界面库。那么,我们为什么还要学习MFC。&& & 首先,学习MFC学习的是一种思想,是从Windows SDK结构化程序设计跨向面向对象程序设计的一个坚实的桥梁。虽然不能说这座桥梁有多么完美,但是历经了这么长时间的考验任然没有被淘汰,一定有它存在的价值。MFC的架构是我们必须要学习的地方,他是.net Form开发的基础。也许有很多人一开始就进行.net Form开发,C# ,VB用的很舒服,但是这仅仅是知其然不知其所以然。这样的开发者永远只是停留在表面,而不知道整个.net Form的架构是怎样的。稍微遇上一些比较复杂的问题,就束手无策了。所以MFC是必须要掌握的。&& 其次,MFC是直接调用Win 32API对Windows进行操作的,效率要比在虚拟机上运行的.net高很多,其次C++语言的效率也是要高于C#的。这就是为什么和图形图像有关的编程一般都会选择C++了。在高性能的某块通常都会选择C/C++进行开发,C#,VB等来调用。并且.net对传统Win32 API的调用是一度受限的。有的时候不得不用P/INVOKE的方式进行Win32 api的调用。&&& &推荐读物:《VC++深入详解》--------孙鑫写的书,非常适合MFC的初学者。
&& & & & & & & & & & & &《深入浅出MFC》---------侯捷大师对MFC做了一次完美的外科手术,读懂它,反复钻研咀嚼,你将会完全掌握MFC的精髓所在。&&& 3&掌握Windows操作系统的核心机制&& 通过上面两步的学习,初学者应该已经对Windows有一定的了解了,初学者通过一种较为轻松的方式学习Windows。现在是时候对Windows进行一些深入的了解了。之前我们都是站在程序员的角度对Windows进行审视,角度可能有所单一。现在则是需要站在一名系统设计师的角度对Windows操作系统进行研究。&& &推荐读物:《深入解析Windows操作系统》------这本书是将带你全面的了解WIndows操作系统的各个方面&& & & & & & & & & & & &《Win32多线程程序设计》-----站在并发的角度更为深入的了解Windows机制。&& 读者在有了1,2的基础后学习3,相信不会有太大的难度。&&& 4&掌握.net&& 作为一名Windows程序员,.net是你不得不去学习的一门技术。无论是学习还是工作你一定会遇到它。在有了以上基础的情况下,学习.net是一件十分轻松的事。.net平台下有众多语言可以选择,不过这里推荐大家首选C#,理由就不用多说了。看看每个月的编程语言排行榜就一目了然了。&&& 推荐读物:《C#入门经典》-------Wrox公司的红宝书,讲的很全面。
&& & & & & & & & & & &&《C#高级编程》--------同样是Wrox公司的书,讲的更加深入。
&& & & & & & & & & & &&《C# via CLR》--------讲述.net的核心机制。
&& & & & & & & & & & & &《WPF高级编程》------新一代图形界面技术,你应该了解。&&5&掌握Win32 asm&& 人都是希望自己能越来越牛,而不是永远停留在一个初级程序员的位置。如果你想真正掌握Windows真正成为一名计算机大牛的话,汇编是你必须要掌握的。&& 汇编是你进行Windows下的软件调试,逆向工程,商业破解,内核研究,设备驱动开发的基础。是否精通汇编语言是普通程序员和大牛之间的一道分水岭。&&& 推荐读物:《王爽汇编语言》-------初学汇编的入门书籍
&& & & & & & & & & & &&《Inter汇编语言程序设计》------开始进入保护模式下的汇编学习
&& & & & & & & & & & &&《Orange&S一个操作系统的实现》--------让你了解汇编语言究竟有多牛&& & &&&6&掌握Windows内核编程&& 总有一部分人想要刨根问底,将Windows操作系统彻彻底底的搞明白。那么,就开始Windows内核编程吧。掌握Windows内核编程,可以说在Windows平台上你将可以为所欲为了。不过,Windows内核编程无疑是对程序员的一大考验。就算是有丰富Win32开发经验的程序员在面对复杂的Windows内核时也会显得束手无策。这时,汇编是你唯一可以借助的工具,自己调试,自己Crack,你所面临的问题往往是Google,baidu都无法解决的。&推荐书籍:《Windows驱动开发技术详解》-----内核驱动的入门好书
&& & & & & & & & &&&《寒江独钓Windows内核安全编程》----- -一本向初学者展现内核编程魅力的书
&& & & & & & & & & &《Windows内核原理与实现》----- 潘爱民大师的书,采用WRK源码让你真正走进windows内核
&& & & & & & & & & &《Windows内核情景分析》------- 经典中的经典,毛德操大师的书,你必须反复研读,这本书会给你带来本质上的提高&&&
由于种种原因,可能不会参加此次程序设计大赛了,虽然不舍,但必须做出选择。是时候放下一切,全力奔跑了。
站长在关注

我要回帖

更多关于 程序员源代码 的文章

 

随机推荐