|
[原创]惊天大事件--本人原创
这个还有很多。例如用记事本时: -启动后输入“联通”(不包括引号),关闭记事本,选“是”。再次打开你刚才保存的文本文件......晕倒...... -启动后输入“1”,Tab键一下,“2”,Tab键一下,“3”,Tab键一下,...你可以打到9”(都不包括引号),最后关闭记事本,选“是”。再次打开你刚才保存的文本文件......再次晕倒...... |
|
[求助]换新工作,开发应用程序...
补充: 1.对数字图像处理懂得不多。但也做过()。 2.熟悉各种软件如下: .Microsoft Office Word / Visio。 .Microsoft Virtual PC、VirtualBox、VMware、VirtualNES、Virtual Boy Advance、epsxe / VGS /pcsx2。 .Nero Suits / Alcohol 120% / DaemonTools / VirtualCD v9 / CloneCD / Isobuster Pro,熟悉CD/DVD光盘刻录、虚拟光驱(带模拟拷贝保护)。 .WinRAR / WinACE / WinUDA,了解KGBArchiver。 .Adobe PhotoShop / ImageReady,并用于创建编辑应用程序GUI资源及图标的美化。 .IDAPro 。SoftICE和各类如Filemon等工具。 3.日常的操作系统及其驱动程序维护、安装,会用启动盘及Ghost、刷新主板、光驱、显卡固件。 4.因为看美语片多,对其文化及表达方式算比较了解。 |
|
[求助]换新工作,开发应用程序...
臭脾气我改。我改还不行吗... 对于病毒,我已经累了。研究这东西就像研究别人的心理...你永远也不知道什么时候是尽头。退一步,其实都是软件自身的错... 现在还在把数据库拣起来... 对3d的实现很感兴趣。 |
|
Welcome English Area
Hey guys! If someone needs help in chinese here, i'm waiting 4 u. But... as a return, perhaps u have to teach me in english as well... Deal? Come on, oil! |
|
[下载]C32asm 特别版本
又找到源代码了... |
|
[原创]Nfo文件阅读器 和 图标光标修改提取工具
如果你要修改nforeader察看文档的字体、颜色等,要先把文件AniMouse2\Products\NfoReader_Aml.dat的只读属性去掉。 |
|
|
|
[求助]换新工作,开发应用程序...
谢了,坛主。本人长期潜水,不好意思啦(主要原因就是本人沾上了程序员的臭脾气和不愿得罪人)。500多人申请一个职位,让我回忆起高考作文... |
|
问一个API hook的问题,有没有通用的解决方法?!
nnhy:对了。我就是这个意思。 whtyy:多谢了!我并不是说这些都不能。只是想知道有没有表述上更“通用”的方法...比如下个断点,我可以写相应地址0xcc,但也可以写setbreak(lpAddrTo),这样就不必考虑移植mips/ia64(自己编那些函数就免了,劳而无功...) 此前我修改过很多代码尝试移植,反正发现只要不涉及代码段读写的都不是难事 |
|
[求助]MFC中如何做实现那个coolcool的界面
你在线?拜托... 比如SetWindowRgn(这个还是我看了 win32汇编语言程序设计 知道的),具体的用法查msdn,兼容9x\NT\longhorn;Layered Window系列API,兼容NT\longhorn,具体的函数及他们的用法 自己查msdn,需要配合窗体副属性WS_EX_LAYERED。其它更复杂的你得找本书看。至于DX覆盖我看还是放一放,因为除了vista,其他的OS性能...会让你的东东不受欢迎的。重载窗体类最简单,这都要问我你就要去找块豆腐那个什么去了... |
|
[求助]学C还是C++?
C和C++完全不同(虽然非常像)。比如,想你的代码在主函数运行前就开始运行/主函数运行结束还运行吗?只有C++能办到(这里先不说C/C++外的语言)。C和C++的堆/栈方式... |
|
[求助]MFC中如何做实现那个coolcool的界面
要看那种。简单的你可以重载窗体类、用网页嵌入,不然就用GDI+、directX覆盖。至于奇形怪状的窗体可以用专用API。怎么会翻篇了msdn,和mfc类库手册都没有?可以查查Win32SDK的资料。MFC的功能不全。找到后注意在你的代码处API函数名称前加"::" |
|
问一个API hook的问题,有没有通用的解决方法?!
Osris:我找了那个病毒的源代码,正在研究中...另外我爱好兼容,不能兼容总感觉放不下心。有没可能实现手动分页切换(无驱)的方法?(这个问题可能太傻... ) NaX:多谢赐教!我正在看的一本书。问题2我看过有通过解析PE跳到其导入表打内存补丁的例子,这个文章的一部分(来源我忘了): “API Hook 理论 通过对Win32 PE文件的分析(如果你还不熟悉PE文件格式,可以看看Iczelion的PE教程或者LUEVELSMEYER的<<The PE File Format>>)。我们知道在PE文件中的IMPORT TABLE内存储着API函数的很多信息。其中包括API的函数名,调用地址等等。而操作系统在执行PE文件时会先将其映射到内存中。在映射的同时还会把当前版本操作系统中API函数的入口地址写入IMPORT TABLE中一组与API调用相关的结构体内,用于该应用程序的API调用。当应用程序调用API时,他会在自己内存映像里寻找API的入口地址,然后执行CALL指令。如此一来,我们通过修改应用程序内存映像的IMPORT TABLE中API函数的入口地址,就可以达到重定向API的目的。将API地址改为我们自己函数的地址,这样我们的函数就可以完成对API的监视和控制了。 API Hook 的实现 /* 1 */HANDLE hCurrent = GetModuleHandle(NULL); /* 2 */IMAGE_DOS_HEADER *pidh; /* 3 */IMAGE_NT_HEADERS *pinh; /* 4 */IMAGE_DATA_DIRECTORY *pSymbolTable; /* 5 */IMAGE_IMPORT_DESCRIPTOR *piid; /* 6 */pidh = (IMAGE_DOS_HEADER *)hCurrent; /* 7 */pinh = (IMAGE_NT_HEADERS *)((DWORD)hCurrent + pidh->e_lfanew); /* 8 */pSymbolTable = &pinh->OptionalHeader.DataDirectory[1]; /* 9 */piid =(IMAGE_IMPORT_DESCRIPTOR *)((DWORD)hCurrent + pSymbolTable->VirtualAddress); /*10 */do { /*11 */ IMAGE_THUNK_DATA *pitd,*pitd2; /*12 */ pitd = (IMAGE_THUNK_DATA *)((DWORD)hCurrent + piid->OriginalFirstThunk); /*13 */ pitd2 = (IMAGE_THUNK_DATA *)((DWORD)hCurrent + piid->FirstThunk); /*14 */ do { /*15 */ IMAGE_IMPORT_BY_NAME *piibn; /*16 */ piibn = (IMAGE_IMPORT_BY_NAME *)((DWORD)hCurrent + *((DWORD *)pitd)); /*17 */ PROC *ppfn = (PROC *)(pitd2->u1.Function); /*18 */ if (!strcmp("MessageBoxW",(char *)piibn->Name)) { /*19 */ oldMsg = (MsgBoxType)(ppfn); /*20 */ DWORD addr = (DWORD)MyMessage; /*21 */ DWORD written = 0; /* 改变内存读写状态 */ /*22 */ DWORD oldAccess; /*23 */ VirtualProtect(&pitd2->u1.Function,sizeof(DWORD),PAGE_WRITECOPY,&oldAccess); /*24 */ APIAddress = (DWORD)&pitd2->u1.Function; /* 向内存映像写入数据 */ /*25 */ WriteProcessMemory(GetCurrentProcess(),&pitd2->u1.Function, &addr,sizeof(DWORD), &written); /*26 */ } /*27 */ pitd++;pitd2++; /*28 */ } while (pitd->u1.Function); /*29 */ piid++; /*30 */} while (piid->FirstThunk + piid->Characteristics + piid->ForwarderChain + piid->Name + piid->TimeDateStamp); 分析: 寻觅IMPORT TALBE 在/*1*/中我们使用GetModuleHandle(NULL)来返回当前进程在内存中映像的基地址。但这个值在文档中仅仅被描述为"a module handle for the specified module",虽然他确实是进程内存映像的基地址。如果你不太放心的话也可以使用,GetModuleInformation函数来获得基地址,只不过你要额外包含psapi.h和psapi.lib了(这个库在VC6里没有,所以我就没有用这个函数了)。在/* 6 */里我们先找到IMAGE_DOS_HEADER结构,他的起始地址就是映像的基地址。/*7*/通过IMAGE_DOS_HEADER给出的PE文件头的偏移量,找到IMAGE_NT_HEADERS结构。顺藤摸瓜,IMAGE_NT_HEADERS里的OptionalHeader中的DataDirectory数组里的第二个元素正是指向我们想要的IMPORT TABLE的地址。在/*9*/中我们将其转化为一个IMAGE_IMPORT_DESCRIPTOR的结构指针存入piid中。 替换的API函数入口地址 在/*12*/和/*13*/中我们分别取得OriginalFirstThunk和FirstThunk结构,用于以后得到API函数的名称和入口地址。/*10*/的do循环让我们遍历每一个IMAGE_IMPORT_DESCRIPTOR结构也就是应用程序引用的每个DLL。在/*14*/的循环中我们遍历DLL中的IMAGE_THUNK_DATA结构来一一查询API的信息。/*16*/中我们将OriginalFirstThunk转换为IMAGE_IMPORT_BY_NAME结构用于获得API函数的名称进行比对。在/*18*/我们找到MessageBoxW函数之后,在/*19*/保存其原始入口地址便于以后恢复时使用。在/*23*/我们需要用VirtualProtect改变一下内存区域的读写性,因为一般应用程序的映像都是只读的,直接写入会造成一个非法访问的异常出现。在/*25*/我们写入自己函数的地址。 这样就基本完成一个API函数的重定向。 其他......” |
|
编了个Nfo文件读取器,支持保存为位图。
here you go... |
|
[求助]为什么要用指针呢???
看没有指针,不可能访问堆,也不可能访问数组和不定长的数据块。如果说可以用类访问,这样的类的编写本身就成问题。 |
|
[求助]XP下运行UCDOS的问题
别想了。TSR驻留程序。没法在ntvdm里稳定使用。实在要用,搞个虚拟机装上,在那里面装ucdos。 |
|
编了个Nfo文件读取器,支持保存为位图。
我倒“由于你权限不够,不能使用附件功能。多参与讨论,自然会有上传附件的权限(发帖数>20或精华帖>0)。”哭... |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值