一些反汇编操作的经验.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:3 大小:31KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

一些反汇编操作的经验.doc

一些反汇编操作的经验.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

最近要做驱动程序,需要用到反汇编。在网上收集了一些资料,了解到一些常用工具名称,一些反汇编操作的经验总结,有一篇文章说QQ大厅多开的破解,很有意思。看起来最简单了,我也试验一下,拿我很喜欢的小游戏《宝石迷阵》做实验。打这个游戏当年我还创造了13万的高分,至今没有人能超越。前几天也是拿他作查找/修改内存试验,效果很不错。//2006-10-3这几天收集整理了大批的反汇编工具,有Cheatengine,Ollydbg,PEExplorer,IDAPro,W32ASM。IDA不能用,老是说过期了。CheatEngine是修改游戏内存的工具,反汇编用不上。不过还是很好玩的工具,和我写的程序效果差不多,可以不断检索,很快找到内存位置。今后可能要通过程序动态检索修改内存,所以这样的工具我不会下功夫继续做下去。Ollydbg很好用,正在掌握中。W32ASM和Ollydbg差不多,只是界面、代码看着更整洁一些。//2008-10-6HMODULEhModule=GetModuleHandleA(appName);if(hModule==5A4D){ecx=hModule+3C;exc+=eax;if(ecx==4550){eax=}}用Ollydbg做跟踪,开两次游戏,004AB9BF./741FJESHORTWinBej.004AB9E0跳转到004AB9E0>\8379740ECMPDWORDPTRDS:[ECX+74],0E在这里004ABA91.F645C801TESTBYTEPTRSS:[EBP-38],1进行测试,是否有一个句柄。发出ZwRaiseException后退出游戏。CPUDisasmAddressHexdumpCommandComments004AB9FE|./7508JNESHORT004ABA08CPUDisasmAddressHexdumpCommandComments004ABA0F|./7508JNESHORT004ABA19这里是发生跳转的点//2008-10-8CreateMutexA昨晚在看雪论坛下载到一个可用的IDA,他也是反汇编好工具。早上安装使用,发觉他有一个优点,可以用图形的方式列出过程,子过程也可以建立新窗口查看。从起点PUSH60H开始跟,记录下每一次进入的子过程的地址。多开-路径004AB97F-004AB98D-004AB9A9-004AB9B6-004AB9E0-004AB9E6-004AB9EE-004AB9F4-004ABA08-004ABA19-004ABA32-004ABA58-004ABA69-004ABA7C-004ABA97-004ABAA0-004ABAA6-跳转Over单开-路径004AB97F-004AB98D-004AB9A9-004AB9B6-004AB9E0-004AB9E6-004AB9EE-004AB9F4-004ABA08-004ABA19-004ABA32-004ABA58-004ABA69-004ABA7C-004ABA97-004ABAA0-004ABAA9callsub_40BA8C启动程序经过前几天的努力,感觉前面不会是问题所在,因为运行过程一模一样,感觉sub_40BA8C里面有原因。用新的窗口打开这个子过程。又打开了几个以后,突然出现了很多很多代码,我想这里是InitApp的主体吧。在里面找寻了一会,看到CreateMutexA函数。它下面有一句Cmpeax,0B7h估计是检查创建结果,用VC的错误查询器查看0B7h,是"当文件已存在时,无法创建该文件"。这样的错误很明显说明Mutex已经存在,无法继续创建。得,这就是问题的原因了。sub-40BA8C-跟踪441047callds:CreateMutexA创建互斥矩阵44105Dcmpeax,0B7h创建失败GetLastError()==0xB7183(0xB7)错误,当文件已存在时,无法创建该文件。441062jnzshortloc_441082eax-0B7h!=0则跳转再用Olldbg启动游戏,在44105D处修改一下错误代码,0B7h改为0B6h,继续运行,多开运行成功。总结一下:用Olldbg很多天都找不到问题的原因,是因为用OD我一直在main函数里面打转转,根本没有进入到真正初始化的函数里面,原因是程序的跳转太多了,很难一个一个子程序都进入,进入多了以后自己都不知道转到了哪里。而且OD所有过程在一个文件里面,看着容易糊涂。IDA的过程方式用图表,子过程又在新的窗口里面,很清楚下面去了哪里。很容易就找到目标。用OD5天没有解决的问题,IDA半天就连学带用掌握了。OD查询函数很麻烦,用了那么久依然不熟练。IDA修改汇编命令我还