上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 70 下一页
摘要: CRC原理及其逆向破解方法 介绍: 这篇短文包含CRC原理介绍和其逆向分析方法,很多程序员和破解者不是很清楚了解CRC的工作原理,而且几乎没人知道如何逆向分析它的方法,事实上它是非常有用的.首先,这篇教程教你一般如何计算CRC,你可以将它用在数据代码保护中.第二,主要是介绍如何逆向分析CRC-32,你可以以此来分析程序中的CRC保护(象反病毒编码).当然有很多有效的工具用来对付CRC,但我怀疑它是否会说明原理. 我要告诉你,这篇短文里中应用了很多数学知识,这不会影响一些人,而且会被一般的 程序员与逆向分析者很好理解.为什么?那么如果你不知道数学是如何被应用在CRC中, 我建议你可以停止... 阅读全文
posted @ 2012-01-01 09:53 oayx 阅读(10528) 评论(0) 推荐(0) 编辑
摘要: 在工程文件中, WinMain函数里加上以下代码(此代码在BCB6.0下运行): HANDLE hMutex = CreateMutex(NULL, false, "Process"); if (GetLastError() == ERROR_ALREADY_EXISTS) { CloseHandle(hMutex); MessageBox(Application->Handle, "程序已经在运行中,不能重复启动!", "提示", MB_OK +MB_ICONWARNING); Application->Terminat 阅读全文
posted @ 2012-01-01 09:23 oayx 阅读(1050) 评论(1) 推荐(0) 编辑
摘要: 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME_WAIT的过程:BOOL bDontLinger = FALSE;setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLing 阅读全文
posted @ 2011-12-29 10:37 oayx 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 1 bool Juge(int dat, int x){return !(dat & ~(1 << x));}2 cout << boolalpha << ((i & (i - 1)) ? false : true) << endl; 阅读全文
posted @ 2011-12-20 09:34 oayx 阅读(784) 评论(0) 推荐(0) 编辑
摘要: 手把手叫你玩转网络编程系列之三 完成端口(Completion Port)详解 ----- By PiggyXP(小猪)前 言 本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,终于决定开始动笔了,但愿还不算晚….. 这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。 我的初衷是希望写一份互联网上.. 阅读全文
posted @ 2011-12-19 19:35 oayx 阅读(29080) 评论(18) 推荐(22) 编辑
摘要: 默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。 即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。 比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。 如果是同一台机器内的话,能起多少线程也是受内存限制的。每个线程对象都要站用非页面内存 阅读全文
posted @ 2011-12-15 19:38 oayx 阅读(28330) 评论(0) 推荐(0) 编辑
摘要: 我的观点基于以下几点:若显卡不支持非2的次幂纹理,则:1:若使用IDirect3DDevice9::CreateTexture创建非2的次幂尺寸图像将失败2:若使用D3DXCreateTexture创建非2的次幂图像将被扩充成2的次幂3:若使用D3DXCreateTextureFromFileInMemoryEx创建非2的次幂图像将被扩充成2的次幂(就算用了D3DX_DEFAULT_NONPOW2也没用)只有一个函数比较特殊:D3DXCreateTextureFromFileEx,用它创建图像可以完美支持非2的次幂图像,但实际游戏中很少用这个函数,故总体上,创建一个非2的次幂纹理,还是显卡说了 阅读全文
posted @ 2011-12-15 09:55 oayx 阅读(2041) 评论(0) 推荐(0) 编辑
摘要: 一 今天碰到一个问题,UI有个界面模糊,其他界面正常,原因是:美术给的图片非2的N次方,而用D3DXCreateTextureFromFileEx创建纹理时,大小设置的是D3DX_DEFAULT,这样D3D默认会把问了创建为2的N次方,也就是会放大纹理。但是使用时又会按原始大小使用,相当于又把创建的纹理缩小,导致模糊的产生二 修改方式1 D3DXCreateTextureFromFileEx使用D3DX_DEFAULT_NONPOW2设置大小2 美术修改图片到2的N次方大小三 其他1 D3DX_DEFAULT_NONPOW2有些显卡可能不支持,需要检测设备能力2 D3DX_DEFAULT_NO 阅读全文
posted @ 2011-12-15 09:48 oayx 阅读(911) 评论(0) 推荐(0) 编辑
摘要: 2010-04-07 00:16:34|分类: 网络开发 |标签: |字号大中小订阅 考虑到以后可能要用到服务器程序,如果没有现成的、稳定的代码,到时候可能会遇到麻烦。所以,最近一有空,就写服务器的框架代码。问题一:select模型如何得知连接中断?select模型只有三种套接字集合:发送、接收、异常。那么,怎么知道远程客户端中断了网络连接呢?跟踪调试发现,当远程客户端主动中断连接时,服务器接收到长度为0的数据包。这一点很好理解。因为TCP连接中断时,客户端和服务器会相互发送通知数据包。这个数据包没有内容,只有TCP/IP报头。所以,内容长度为0,这是可以理解的。于是,在接收到长度为0的数据包 阅读全文
posted @ 2011-12-13 17:54 oayx 阅读(1975) 评论(1) 推荐(0) 编辑
摘要: 之前的测试都是,手动强制关闭客户端进程,然后查看服务器的情况,结果往往是,服务器收到了客户端关闭的事件。其实,我一直忽略了一个问题,我没有拔掉网线来测试! 上面的手动关闭客户端进程,事实上并不能测试出想要的结果,因为进程是在应用层的,所以,这种测试方法不能保证网络驱动层也不发送数据报文给服务器。经过测试发现,当应用层强制结束进程时,对于TCP连接,驱动层会发送reset数据包!而服务器收到这个数据包就可以正常关闭了! 那么,如果拔掉网线呢,服务器收不到这个数据包,就会导致死连接存在! 所以,心跳包是必要的,或者使用TCP协议本身的Keep-alive来设置。 之所以产生前面的误解,也是由... 阅读全文
posted @ 2011-12-13 12:31 oayx 阅读(6595) 评论(1) 推荐(1) 编辑
上一页 1 ··· 26 27 28 29 30 31 32 33 34 ··· 70 下一页