摘要:
有时候用XueTr能发现内核模块是未知的,很想知道这个未知的内核模块到底是个什么文件,躲在硬盘的哪个角落?可以用WINDBG 更改物理内存,这样就会蓝屏,然后再用WINDBG 分析dump文件。先反汇编那个未知模块某个地址处(用XueTr是可以看到未知模块的地址的)的代码,然后u XXXXXXXX,反汇编用eb XXXXXXXX 12 34 56 78 把XXXXXXXX地址处的数据修改为12 34 56 78,一般会蓝屏的,然后用windbg打开dump文件,就可以知道是哪个模块了。 阅读全文
摘要:
窗口→线程ID→线程开始地址→关键代码在破解一些软件的时候,程序经常会弹出一些对话框,说注册码不对啊之类的,用vc6.0的spy++可以这个对话框的一些信息,比如HANDLE name class 还有这个窗口所在的线程ID和进程ID,有了线程ID能不能得到线程开始的地址呢? 能,XueTr能够根据TheadID获取到线程的开始地址,网上看了下相关资料,是用 ZwQuerySystemInformation的9号实现的。找到线程开始的地址,那么就离关键跳转不远了。呵呵。 阅读全文
摘要:
这段代码是网上找来的,自己消化精简了一下。void CaptureWindow(HWND hwnd){ //获取窗口的width和height RECT rect; GetWindowRect(hwnd,&rect); //这个函数得到的是整个窗口的Rect,包括非客户区,而近要得到客户区的rect,请使用GetClientRect DWORD width =rect.right-rect.left; DWORD height =rect.bottom-rect.top; //获取窗口的DC HDC hdc = GetWindowDC(hwnd); //如果这里用GetDC(hwnd) 阅读全文
摘要:
今天心血来潮,在MSDN中看到了一篇Obtain file name from Handle的文章,貌似是这么个标题,看到文章中用到了一个很重要的函数GetMappedFileName,缺点就是只能获得自己进程打开的文件,其它进程打开的文件貌似不行。基本思路就是根据HANDLE 创建映射文件,调用GetMappedFileName获得一个DosDevice路径,然后GetLogicaDriveStrings获得盘符字串,依次读取盘符字串获得对应的DosDevice路径,看之前的DosDevice路径中是否有现在的DosDevice路径(strstr),有的话,就拿到盘符字串,然后把之前的Dos 阅读全文
摘要:
patch代码或者数据一定要先调用VirtualProtect函数来修改内存的属性为最起码有可写属性,patch完毕要把内存的属性修改回来,最后FlushInstructionCache一下。 阅读全文
摘要:
PDF文件加密器是利用acrobat SDK开发的一款APP。用这个APP加密的文件有好几种情况,我说的是知道了阅读密码,但是有阅读次数限制和阅读时间限制的情况,加密后的文件为一个exe文件,exe文件运用了BoxedAppSDK把解密后的pdf文件释放到内存中而不是硬盘上,下面细细说来。先说下我对BoxedAppSDK的一些理解吧。"BoxedAppSDK能够创建虚拟文件和虚拟注册表,你的应用程序会认为这些虚拟的文件确实存在,在运行过程中不会有临时文件生成",这是官方网站上面说的。什么是虚拟文件呢,简单的说就是这个文件并不存在于你的硬盘上,比如你电脑里面没有M盘,但是某程 阅读全文
摘要:
PDFEncrypt这个工具是利用acrobat SDK开发出来的应用程序,它可以用来加密pdf文件,加密后的文件是一个exe文件,运行exe文件之后输入password才能查看pdf文件,对于保护pdf格式的电子书还是比较有用的,这个exe会anti vmware,如果再虚拟机中跑的话,会有msgbox,另外还会kill 录频软件一些进程ly.exe,某些安全软件 XueTr,最后exe文件中还运用了BoxedAPP技术。 阅读全文
摘要:
前几天从卡饭样本区发现了一个456游戏的样本,该样本被恶意捆绑了远控,具体步骤是这样的,456游戏安装包安装完成之后,会在桌面生成一个快捷方式,这个快捷方式指向的却是一个52hxw.exe,52hxw.exe是一个白文件,它会加载目录下的hxw.dll并调用其中的EnableConversion导出函数,作者恶意构造了一个hxw.dll文件并导出EnableConversion函数,这个函数会运用内存加载技术把一个名为WebGame.dll加载到内存中,我用Xuetr把它dump出来,据PEID和FFI的检测是PE文件,但是用OD就是加载不起来,很是郁闷。后来又换了一种思路,既然它要把WebG 阅读全文
摘要:
int main(int argc, char* argv[]){ WSAData wsadata; WSAStartup(MAKEWORD(2,2),&wsadata); char file[MAX_PATH]="c:\\WebGame.dll"; HANDLE hFile=CreateFile(file,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL); int filesize=GetFileSize(hFile,0); BYTE *a=(BYTE*)malloc(fil 阅读全文
摘要:
__beginthread函数的第三个参数是线程函数的地址,第四个参数是可以是一般的变量,也可以是一个函数的地址,如果是后者别玩了忘记分析这个函数,我遇到太多这种情况了,把线程函数分析了,却忘记了第四个参数也可能是一个函数。 阅读全文