- 博客(60)
- 资源 (21)
- 收藏
- 关注
原创 使用IE控件来分析网页结构,模拟测试爬虫,使用scrapy+selenium来执行网页爬虫
通常我们使用scrapy来进行网页内容的收集,但使用起来非常的不方便:1. 需要使用工具,或者手动来计算得到网页元素的xpath。2. 对一些网页内需要ajax的运行才显示的内容处理起来并不方便。我通过找相关的工具,研究爬虫方案,找到了一个比较合适的工具软件,和方便易用的处理流程:工具软件的名字是掘金数据处理平台,界面如下:scrapy辅助界面如下:使用方法:1...
2018-11-28 14:19:39 1817
原创 【转】开源代码审计工具备忘
开源和非商业公司2.3.1.1 .NET (C#, VB.NET and all .NET compatible languages)• Reflector.CodeMetrics — (an add-in for the essential Reflector) • CCMetrics • CRPlugin (plugin for DxCore) • FxCop — Free
2013-04-07 09:14:28 3741
转载 Pushing the Limits of Windows: Paged and Nonpaged Pool
转自:http://blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspxIn previous Pushing the Limits posts, I described the two most basic system resources, physical memory and virtual
2012-08-03 13:43:25 1918
原创 常用X86指令的二进制代码
837d byte_param1 byte_param2 837d 表示EBP基地址 + byte_param1偏移 得到地址中的双字值 和 byte_param2进行比较
2012-07-26 09:42:54 1601
转载 ANDROID 经典开源项目
Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/个人记账工具 OnMyMeans http://sourceforge.net/projects/onmymeans/developAndroid电池监控 Android Battery Dog http://sourceforge.net/projects/andba
2012-07-25 13:00:10 1583
原创 NDIS PACKET结构,如何COPY?
NDIS PACKET封装了一个网络数据包,在以太网中,就是以太网封包,有时需要对数据进行拷贝再进行特殊的处理,如何做,它的结构体是什么样了?基本框架结构:typedef struct _NDIS_PACKET{NDIS_PACKET_PRIVATE Private;union{struct // For Connection-less miniports{
2012-04-19 09:11:37 2278
转载 VC 调试收集
调试的时候,可以通过修改 eax来改变函数的返回值。 VC调试技巧收集整理 - 程序之艺术 - 51CTO技术博客博客登录VC调试技巧收集整理 调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却
2011-09-01 11:27:18 941
原创 如果目标数据是一段内存区的话,该使用什么HASH算法比较合适?
如果目标数据是一段内存区的话,该使用什么HASH算法比较合适? 算法的选择标准:尽量在不同的输入的情况下产生在合法区间的离散,不重复的输出。 有两种计算方法比较容易产生离散的输出:1.异或运算2.局部移位运算 基于以上思想,可以使用如下算法:以字长为单位,将内存区从开始直至最后进行以上两种运算,直到余下的长度不够字长为止。以字节为单位,对内存区余下的部分
2011-06-15 17:22:00 1395
原创 fs:[0]到底表示什么?fs段寄存器在WINDOWS系统中的作用
fs:[0]到底表示什么?TEB,PEB,TIB,PCRB结构的表示。fs段寄存器在WINDOWS系统中的作用
2011-04-29 15:13:00 17817 1
原创 一个并行计算系统的初级模型
并行计算系统至少包括两个部分:计算者计算资源分发和结果综合者 这里有一个开源项目,实现了基础性的并行计算功能,它的架构是这样的: 同一局域网络下机器通过安装一个计算客户端,接收特殊端口的广播包,来发送自己的相关信息。它们属于计算的执行者。其中一台机器做为计算资源的分发者,它通过接口得到计算资源后,先发送主播包,识别所有在同网络的计算者,使用特定的方法,将资源分解后,分发...
2011-03-08 01:19:00 1165
原创 一条语句计算所有递增序列的结果
1.递增序列的概念:一串数的序列,相领两个数之间的差值是固定的,则此数列递增序列,如:1,2,3,4,5,6,7,8,9,10(差1) 1,3,5,7,9,11(差2)大家一般都会了解,它的规律是第1个数与倒数第1个数的和,与第二个数与倒数第二个数的和是一样的。这样可以有这样的计算方法:(Begin + End ) * ( End - Begin ) / 2 就会计算出它的所有数值的总和。但以上情况是在数值总数量为偶数是有效的,如果是奇数,则需要加入未计算的数值:( (Begin + End ) * ( E
2011-02-17 16:26:00 1162
原创 LIB/PE/COFF文件分析开源项目
<br /> 这里有一个开源项目:PE-MASTER,用来进行OBJ文件的抽取,PE/LIB文件分析。PE文件修改。SVN:https://pe-master.googlecode.com/svn/trunk,如果大家对这个项目有兴趣,希望加入的话,请联系我。<br /> <br />这里是对LIB文件格式的解析(转载):<br /> <br /> 上一篇文章介绍了COFF目标文件的结构。如果你试着做一个应用程序的连接器(Linker),就会发现,仅仅有目标文件是不够的。我们在连接程序时,不仅仅
2011-02-17 11:09:00 2193
原创 ARP协议,ARP攻击的原理,网络执法官的具体实现
ARP协议解析:ARP协议的格式:typedef struct _ARP_HDR{ USHORT HdType; USHORT ProtType; BYTE HdSize; BYTE ProtSize; USHORT Opcode; BYTE SenderMacAddr[ 6 ]; ULONG SenderIPAddr; BYTE DstMacAddr[ 6 ]; ULONG DstIPAddr; } ARP_HDR, *PARP_HDR; 其中:HdType 表示数据链路层的类型。(一般会
2011-02-09 13:53:00 2992
原创 NDIS6过滤驱动的编写
<br />NDIS6是在WINDOWS VISTA及之后版本的WINDOWS引入的,这时NDIS5的HOOK方式是无法使用的,MSDN推荐的方式是使用过滤驱动,其实也可以使用Intermediate(中间层驱动),下面谈一下它们的利弊,还有一些原理性的东西:<br />1.为什么NDIS6不动NDIS5的HOOK:<br />1.因为NDIS6使用了新的函数集和新的数据结构,最重要的是NET_BUFFER替代了NDIS_PACKET,原先所有的使用NDIS_PACKET的PROTOCOL或MINIPORT
2011-01-02 23:13:00 5151
原创 VS2005的并行计算功能支持
<br />VS2005中的VC是支持OPENMP2.0协议的,使用OPENMP2.0可以让编译器为你的多核CPU提供并行程序编译支持。<br />一个例子:<br />#include <omp.h><br />#include <stdio.h><br />int main() {<br />#pragma omp parallel<br />printf("Hello from thread %d, nthreads %d/n", omp_get_thread_num(), omp_get_num_t
2010-06-27 09:37:00 1649
原创 快速排序算法实现
<br />快速排序算法的原理:<br />将数列中任取一个数,将其左部放置比其小的数,其右部放置比其大的数。然后,对其左,右部递归执行这种分割过程。<br /> <br />源码如下:<br /> <br />INT32 SortedData[] = { 1, 3, 2, 112, 3854, 2382, 28392,1283,483,839,7, 1838,18289,9, 848,8, 7, 18, 1, 38392, 192938493, 81928374, 48393291, 3848392, 4
2010-06-22 13:31:00 914
原创 VC内联汇编实现strcpy+汇编性能分析
这是VC编译器生成的代码:char *__memsetc (dst, value, count)char *dst;char value;unsigned int count;{//push ebp //mov ebp,esp //sub esp,44h //push ebx //push esi //push edi //// char *start = dst;//mov eax,dword
2010-06-21 15:28:00 2221 1
原创 启动进程流程
LINUX启动进程时设置了CS,ESP等各个寄存器的值,这是相应的宏:voidstart_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp){ loadsegment(fs, 0); loadsegment(es, 0); loadsegment(ds, 0); load_gs_index(0); regs->ip = new_ip; regs->sp = new_sp; percpu_write(old_rs
2010-06-20 21:45:00 1076
原创 多CPU支持下的 percpu 变量分析
/* *使用一个数组,来记录对于每个特定的CPU的变量的地址偏移量。 *有些CPU有自己独特的技术来实现。 */#ifndef __per_cpu_offsetextern unsigned long __per_cpu_offset[NR_CPUS];#define per_cpu_offset(x) (__per_cpu_offset[x])#endif /*
2010-05-30 12:04:00 5295
原创 C++语法巧题(一般被用做面试题)
题1:int ArrayParamFun( char Param[100] ){ int ParamLen; ParamLen = sizeof( Param ); prinf( "The array param length is %d/n", ParamLen );} int main(){ char TestParam[100];
2010-03-31 22:42:00 1688 1
原创 Windows蓝屏代码含意速查表
代码 含意 0 0x0000 作业完成。 1 0x0001 不正确的函数。 2 0x0002 系统找不到指定的档案。 3 0x0003 系统找不到指定的路径。 4 0x0004 系统无法开启档案。 5 0x0005 拒绝存取。 6 0x0006 无效的代码。 7 0x0007 储存体控制区块已毁。 8 0x0008 储存体空间不足,无法处理这个指令。
2009-06-24 15:05:00 1676
原创 基本INF文件格式
[Version]Signature="$Windows NT$" ;通知用户此驱动使用在什么平台Class=Sample ;驱动的类型ClassGUID={C3077FCD-AE7F-3D86-9C1A-46A8181923E} ;驱动类型的GUIDProvider=%MFGNAME% ;开发商名称CatalogFile=basic.bat DriverVer=01/23/20
2009-06-16 15:30:00 3548
翻译 TS (Transport stream) 格式:
包:包是TS中最基本的数据单元.它内部包含固定的1个同步字节,值为0x47.之后是3个比特标志字段和13个比特的包ID字段(PID),然后是4个比特的连续计数器字段,下面还可以有其它可选附加的字段,如可靠用来提供支持信息的字段.其余部分就是数据载荷。每个包的长度为188字节,但通信媒介为包添加错误校检字节。如DVI-ASI使用204字节和ATSC使用208字节做为包长度.ATSC添加了
2009-06-12 15:23:00 7216 3
原创 强化任务管理器(CTRL+ATL+DEL热键)执行功能(IT人必看)
TASKMGR.EXE是大家频繁使用的一个WINDOWS系统管理工具程序,主要用来查看系统的各种资源的使用状态和进程的当前工作状态及管理当前进程。 但有很多比它功能强大进程分析程序,如Sysinternal工具包中的Process Exporer,它可以显示更全面的系统,进程内部信息,更强大的管理功能。可以从这里下载到:http://technet.microsoft.com
2009-04-28 17:23:00 1741
原创 软件的创新思想与他人思想的整合
当今软件知识到处都是,一问题在互联网上会搜到一大把的相关信息,软件开发越发的变为了对别人思想和接口的调用和纯粹的拷贝. 这样的工作方式需要你的两种能力:1.对计算机语言知识的基本掌握,2.计算机的基本应用能力.门槛很低,软件开发变成了计算机语言的代码组合过程. 这样的开发可能也可以生产出软件产品,但有什么问题呢?1.首先就是不会有专业知识的理解,你仅仅只是知道一个接口而
2009-04-23 15:22:00 1101
原创 MATROSKA 文件格式
MATROSKA 文件格式1.EBML (Extensible Binary Meta Language):EBML语言使用不定长整数,这种方式相对于固定长度的32位/64位字长的整数值更节约空间.放置的位置也不受字节对齐约束..这种长度编码方式来自于UTF-8编码规范. 不定长度的无符号整数值(“vint”):长度的计算方法:长度 = 1 + 整数前缀0比特的个数.使
2009-03-07 23:47:00 4946
原创 使NT支持长路径名的参考代码
在某些情况下,会有使用长路径(大于MAX_PATH/260字符)的需求,如网络文件管理之类的,WindowsNT之后的NTFS文件系统其实是支持这样的操作的,但需求毕竟比较特殊,而且Explorer资源浏览器都不支持它,所以很少被认识到. 这里我写了一个子目递归调用函数,原型:INT32 LongPathFileFind(LPWSTR lpPath, //被搜索路径
2009-02-11 18:57:00 1132
翻译 写一段小型溢出代码(译自:Writing Small Shellcode)
背景: 这篇文章描述了一次以尽可能小体积来实现一个WIN32 ShellCode的尝试,来完成一个通用的且有很多特性受限制的任务,试验的最终结果是一个绑定某端口的,没有空字符的(/0),大小为191字节的服务器端ShellCode,同时过程也描述了写一个小型的ShellCode的通用方法。 体积对于ShellCode来说是非常重要的,因为当对已经编译好的二进制码来说,Shell
2009-01-08 17:30:00 2478
原创 线程的退出与其相关资源的释放
线程是可访问进程资源的独立运行的一系列代码(过程),它使用的资源有两种:1.进程中所有线程共享的资源。2.线程私有的资源。那么如果线程退出的话,第2种资源也就没有存在的意义了。线程退出的方式:1.线程的入口函数执行完毕,这是最自然的退出方式,也是最佳的退出方式。2.使用ExitThread系统API函数,在类UNIX系统的相应函数是pthread_exit。3.使用TerminateThrea
2009-01-04 15:35:00 17147 2
转载 OllyDbg教程-快捷键
预备知识 大多数壳都有一个共同的特点。在壳准备开始解压时都要执行PUSHAD,当壳解压 完时都要调用POPAD。到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将 所有普通寄存器顺序进栈的指令,POPAD是所有普通寄存器顺序出栈指令。POPAD的出 栈顺序和PUSHAD相反。壳为了保护寄存器,便在解压前将所有寄存器进栈保护起来, 当解压完成后又将寄存器出栈,恢复其原貌,并
2008-12-30 01:25:00 2438
转载 各种EDA软件的PCB文件后缀名
很多朋友在工作过程中经常会碰到各种不同格式的PCB设计文件,本人总结了下文件后缀对应的格式,希望对大家能有帮助. 1).pcb。最常见的后缀,很多PCB设计文件都是这一后缀,其中最常见的是Protel、PADS,此外还包括有ZUKEN公司的Cadstar、CR5000,Altimum的P-CAD等,笔者还碰到过后缀是pcb的gerber文件,用CAM350可以打开。 2).brd。Cadenc
2008-12-22 16:05:00 21513
原创 使用OutputDebugString输出调试信息,使用DebugWindow来捕获它
OutputDebugString API函数包括MultiChar和Unicode两种版本:OutputDebugStringA和OutputDebugStringW,原型:如下:void__stdcallOutputDebugStringA( const char* lpOutputString );void__stdcallOutputDebugStringW( co
2008-12-15 16:35:00 9361
转载 使用热转印纸快速自制线路板【转】
多年来制作线路板是每个电子爱好者的拦路虎,能快速地完成线路板的制作则是每个电子爱好者的心愿。工艺原理:主要采用了热转移的原理.利用激光打印机的“碳粉”(含黑色塑料微粒)受激光打印机的硒鼓静电吸引,在硒鼓上排列出精度极高的图形及文字,在消除静电后,转移于经过特殊处理的专用热转印纸上,并经高温熔化热压固定,形成热转印纸版,再将该热转印纸覆盖在敷铜板上,由于热转印纸是经过特殊处理的,通过高分
2008-12-14 23:16:00 1939
原创 Linux boot flow
Linux BootFlow: BIOS Post Setup->MBR(GRUB/LILO)->Kernel->Kernel self-extract->Kernel StartKernel Start:Create the process that ID is 1->The first process create other kernel threads->The kernel th
2008-12-10 17:16:00 1210
转载 PTHEAD原理
引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用多
2008-11-17 15:44:00 2104
原创 软件开发中的自动化技术
实际的工作中,很多时候都需要在项目编译完成后做一些工作,或是在编译前做一些准备工作,它们是重复性的,如果手动操作是一件很麻烦的事情,VS中提供了生成前/生成后执行命令,使用脚本就可以完成大部分需要的操作.例子(生成后自动将头文件和库文件放置在合适的位置)whenbuilded.batcopy /y ..*.h .D:/MyLib/Includecopy /y ../Debug/*.lib
2008-11-05 13:37:00 1362
原创 wchar_t类型的实质
VC++编译器中包括一种本机类型,用来支持长字符串,它就是wchar_t,它所占用的内存长度为2个字节,同时VC++编译器2个字节长度的类型有short, unsigned short。(参考链接:http://msdn.microsoft.com/zh-cn/library/dh8che7s(VS.80).aspx)它们相互之间其实是可以进行类型转换而不会发生内存定位错误的,如: (在打
2008-09-03 15:31:00 3184
转载 #pragma directive
一:#pragma warning指令该指令允许有选择性的修改编译器的警告消息的行为指令格式如下:#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]#pragma warning( push[ ,n ] )#pragma warning( po
2008-09-03 10:08:00 1194
简智数据处理平台 1.0
2017-08-31
PE-MASTER(用来分析WINDOWS PE, LIB, COFF文件)
2013-11-18
ArpShield(Easy anti-arp attack from Netrobocop)
2011-02-08
WinKrnlMgr(WINDOWS系统内核功能管理器) (WINDDK 驱动)
2011-01-15
网络流量管理器(TDI 网络过滤驱动)
2010-10-09
NetMointor
2008-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人