中国移动的败笔?
乱翻Google的产品时,发现了个好东西
Google短信搜索
一阵兴奋,进去一看。。。得

居然不支持中国移动~sigh,只能说这是中国移动的一大败笔~
乱翻Google的产品时,发现了个好东西
Google短信搜索
一阵兴奋,进去一看。。。得

居然不支持中国移动~sigh,只能说这是中国移动的一大败笔~
QQ空间臃肿,花俏,不和口味,开完后一直想关掉,终于找到了个办法,从别人blog 上看见。
申请关闭QQ空间的网址:http://imgcache.qq.com/qzone/web/load_login_2.htm
点击这个链接,如果跳到http://imgcache.qq.com/images/warning.gif,那就将链接复制到地址栏再打开即可。
RT
发现大部分的WP主题前台都没有发表新文章的链接,只能点管理之后再点发表新文章,对我这种在线发布博文的人来说,很是不爽,今天没事,粗略看了下php,改了下,以下付更改方法。
具体找到正在用的主题的sidebar.php在其适当地方添加如下代码:
1 2 3 | <?php if (is_user_logged_in()):?> <li><a href="wp-admin/post-new.php"><?php _e('Add New Page')?></a></li> <?php endif;?> |
RT,打球不可不知规则!!!!
国际羽联对21分制做了最后修订,并宣布新规则将从2006年2月1日起正式实施。据介绍,新规则的最大变化是取消了发球得分制,另外将所有单项的每局获胜分统一定为21分。
具体规定如下:
单打
1、每场比赛采取三局两胜制;
2、率先得到21分的一方赢得当局比赛;
3、如果双方比分打成20比20,获胜一方需超过对手2分才算取胜;
4、如果双方比分打成29比29,则率先得到第30分的一方取胜;
5、首局获胜一方在接下来的一局比赛中率先发球;
6、当一方在比赛中得到11分后,双方队员将休息1分钟;
7、两局比赛之间的休息时间为2分钟。
双打
1、改双发球权为单发球权;
2、后发球线保留,现行规则适用;
3、比赛开始前,双方通过投掷硬币方式确定由哪一方来选择是先发球或后发球。
国际羽联最新规则(21分制)双打规则改变 阅读全文…
这是很久之前玩杂志打包工具时的副产物,这个是比较原始的一个版本,改进的版本可以支持从exe等文件中提取图标。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <classes.hpp> #pragma pack(push,1) typedef struct ICONDIRENTRY { BYTE bWidth; BYTE bHeight; BYTE bColorCount; BYTE bReserved; WORD wPlanes; WORD wBitCount; DWORD dwBytesInRes; DWORD dwImageOffset; }ICONDIRENTRY; typedef struct ICONDIR { WORD idReserved; WORD idType; WORD idCount; }ICONDIR; typedef struct GRPICONDIRENTRY { BYTE bWidth; BYTE bHeight; BYTE bColorCount; BYTE bReserved; WORD wPlanes; WORD wBitCount; DWORD dwBytesInRes; WORD nID; }GRPICONDIRENTRY ; typedef struct GRPICONDIR { WORD idReserved; WORD idType; WORD idCount; GRPICONDIRENTRY idEntries[]; }GRPICONDIR ,*lGRPICONDIR; #pragma pack(pop) AnsiString icongroupname; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include "modifyico.h" bool CALLBACK EnumIconProc(HMODULE hModule,LPCTSTR lpszType,LPTSTR lpszName,LONG lParam) { icongroupname=lpszName; } bool __fastcall changefileicon(AnsiString filename,AnsiString iconfile){ HMODULE hexe=LoadLibrary(filename.c_str()); if(NULL==hexe)return false; EnumResourceNames(hexe,RT_GROUP_ICON,(ENUMRESNAMEPROC)EnumIconProc,0); FreeLibrary(hexe); ICONDIR stID; ICONDIRENTRY stIDE; GRPICONDIR stGID; HANDLE hFile; DWORD nGSize, dwReserved; HANDLE hUpdate; BOOL ret; hFile = CreateFile(iconfile.c_str(), GENERIC_READ, NULL, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return false; } ZeroMemory(&stID, sizeof(ICONDIR)); ret = ReadFile(hFile, &stID, sizeof(ICONDIR), &dwReserved, NULL); TList *list=new TList(); TStringList *sizelist=new TStringList(); int i=0; nGSize= stID.idCount*sizeof(GRPICONDIRENTRY)+6; BYTE *GIcondata=new BYTE[nGSize]; ZeroMemory(GIcondata,nGSize); int offset=0; *((WORD*)(GIcondata+offset))=0; offset+=2; *((WORD *)(GIcondata+offset))=1; offset+=2; *((WORD *)(GIcondata+offset))=stID.idCount; offset+=2; for (i = 0; i < stID.idCount; i++) { ZeroMemory(&stIDE, sizeof(ICONDIRENTRY)); SetFilePointer(hFile,i*sizeof(ICONDIRENTRY)+sizeof(ICONDIR),NULL,FILE_BEGIN); ret = ReadFile(hFile, &stIDE,sizeof(ICONDIRENTRY), &dwReserved, NULL); CopyMemory(GIcondata+offset,&stIDE,12); *((WORD*)(GIcondata+offset+12))=0x1000+i; SetFilePointer(hFile, stIDE.dwImageOffset, NULL, FILE_BEGIN); BYTE *icondata=new BYTE[stIDE.dwBytesInRes]; ret=ReadFile(hFile,(LPVOID)icondata, stIDE.dwBytesInRes, &dwReserved, NULL); if(!ret) { CloseHandle(hFile); list->Free(); delete [] icondata; delete []GIcondata; sizelist->Free(); return false; } list->Add(icondata); sizelist->Add(IntToStr(stIDE.dwBytesInRes)); offset+=sizeof(GRPICONDIRENTRY); } hUpdate = BeginUpdateResource(filename.c_str(), false); ret = UpdateResource(hUpdate, RT_GROUP_ICON, icongroupname.c_str(), GetSystemDefaultLangID(), (LPVOID)GIcondata, nGSize); i=0; for (i = 0; i < stID.idCount; i++) { ret = UpdateResource(hUpdate, RT_ICON, MakeIntResource(0x1000+i), GetSystemDefaultLangID(), (LPVOID)list->Items[i], StrToInt(sizelist->Strings[i].c_str())); } EndUpdateResource(hUpdate, false); if (!ret) { CloseHandle(hFile); list->Free(); sizelist->Free(); delete []GIcondata; return false; } CloseHandle(hFile); list->Free(); sizelist->Free(); delete []GIcondata; return true; } |
继续补全之前blog的博文~~
FLASH吸血鬼是众多网友用来从exe可执行文件中提取swf的利器,其直接读取内存,从内存中取出swf文件。
经过分析,发现其原理还是比较简单的。
第一步。通过GetWindowThreadProcessId函数获得进程PID。为以后基本的进程内存搜索奠定基础。
第二步。通过OpenProcess打开前面获得的pid的进程对象。
第三步。通过VirtualQueryEx函数和ReadProcessMemory函数遍历进程的内存,在内存中搜索swf文件的文件头“CWS”和“FWS”。如果搜索到,则进行解密,并输出swf文件。
Anti-vampire的启示:
1、阻止吸血鬼得到窗口句柄
2、阻止吸血鬼打开程序内存
3、使swf文件不完整的存在于程序内存中
其中第一种实现后用起来很怪异,第二种强度凑合,但是如果吸血鬼采取一定的跟进措施,很容易搞定,第三种就目前来说,算是比较有效的。
【09.06.15更新】
收到官方email知会,uae,asv停止更新,请不要再询问下载信息~
RT,only a game
game是有规则的,此game规则如下:
1、这里提供Url action editor 6 pre-release 2原版文件。
2、提供由购买者给出的用户名和邮箱算出来的注册文件。
3、获得此版本软件和注册文件者严谨私自对外提供,或转某些不受本人欢迎的论坛,如520du。
4、需要此版本软件者,留言回复本文,留下需要的用户名及邮箱,之后会email到此邮箱。
5、来自520du者请勿回复本文,回复后也是没结果的,不用浪费彼此时间。
6、无售后服务。本game仅用于研究,请勿用于商业用途,使用软件造成一切后果自负。
7、部分本人不愿与之合作的id,本人有权选择不发送email,SO,如果长时间没收到email,也不用再次找我了。
8、一旦发现有违规则的事出现,例如私自对外提供等,本人无条件终止game。
9、本人不会每时每刻在线,但会保证每天最起码上线一次,解决之前的回复。