热血传奇 od怎么进入call用od查找使用技能call

帖子521&精华0&积分2899&豌豆81 &阅读权限50&在线时间673 小时&注册时间&最后登录&
续章2.0.0.38 基址、参数、call用OD查找方法
脱掉2.0.0.38mir4.dat的壳
用OD载入,到达入口,步入到第一个call
进入,然后就跟以往寻找参数基址CALL的方法进行查找。
帖子237&精华0&积分253&豌豆0 &阅读权限30&在线时间66 小时&注册时间&最后登录&
能不能详细点呀........
帖子15&精华0&积分20&豌豆10 &阅读权限10&在线时间8 小时&注册时间&最后登录&
楼主~~~看不明白呀~详细点行不~~~谢~~~~
帖子128&精华0&积分257&豌豆139 &阅读权限30&在线时间1623 小时&注册时间&最后登录&
你还不如直接发一个来,这样找好辛苦的
帖子115&精华0&积分108&豌豆73 &阅读权限30&在线时间75 小时&注册时间&最后登录&
楼主是个好人啊
帖子641&精华0&积分847&豌豆678 &阅读权限40&在线时间171 小时&注册时间&最后登录&
楼主~~~看不明白呀~详细点行不~~~谢~~~~
[通过 QQ、MSN 分享给朋友]您还可以使用以下方式登录
当前位置:&>&&>& > OD菜鸟的福音(经典讲解CALL的找法)
菜鸟学call 视频教程 OD菜鸟的福音(经典讲解CALL的找法)
你可以把自己的插件添加到OllyDbg中,以增加新的功能。OllyDbg 的插件能够
访问几乎所有重要的数据的结构、能够在OllyDbg的窗口中添加菜单和快捷键,能够使用100个以上的插件API函数。插件API函数有详细的说明文档。默认安装已经包含了两个插件:命令行插件和书签插件。
UDD:OllyDbg 把所有程序或模块相关的信息保存至单独的文件中,并在模块重新加载时继续使用。这些信息包括了标签、注释、断点、监视、分析数据、条件等等
更多:这里介绍的功能,仅仅是OllyDbg的部分功能。因为其具有如此丰富的功能,以至于OllyDbg能成为非常方便的调试器!
一、一般原理[General prnciples]
我希望你能对80x86系列处理器的内部结构有所了解,同时具有一定的编写汇编程序的能力。对于Microsoft Windows方面的知识,你也要熟悉。
OllyDbg是运行在Windows 95、Windows 98、Windows ME、Windows NT 和 Windows 2000系统下的一个单进程、多线程的分析代码级调试工具。它可以调试PE格式的执行文件及动态链接库,并可以对其打补丁。“代码级”意味着你可以直接与比特、字节或处理器指令打交道。OllyDbg 仅使用已公开的 Win32 API 函数,因此它可以在所有 Windows 操作系统及后继版本中使用。但是由于我没有对 XP 系统进行彻底测试,因此不能保证OllyDbg功能的充分发挥。注意:OllyDbg 不支持对 .NET 程序的调试。
OllyDbg不是面向编译器的。它没有特别的规则规定必须是哪一个编译器产生的代码。因此,OllyDbg可以非常好的处理通过编译器生成的代码,或是直接用汇编写入的代码。
OllyDbg可以并行调试程序。你无须暂停执行程序,就可以浏览代码和数据,设置断点、停止或恢复线程,甚至直接修改内存。(这可以视为一种软件调试的模式,与之相对的硬件模式则是当进程在运行时调试器被阻滞,反之亦然)。假使所需的操作比较复杂,OllyDbg会让进程终止一小段时间,但是这种暂停对于用户来说是透明的。有时进程会发生非法操作。你可以把OllyDbg设置成即时[just—in—time]调试器,它会挂接出错程序,并停在程序产生异常的地方。
通过OllyDbg,你可以调试单独的DLL[standalone DLLs]文件。操作系统不能直接运行 DLL 文件,因此OllyDbg将一个可以加载 DLL 的小程序压缩到资源里,这个程序允许你调用最多10个参数的输出函数。
OllyDbg是完全面向模块[module—oriented]的。模块[Module]包括可执行文件(扩展名通常为.EXE)和在启动时加载或需要时动态加载的动态链接库(扩展名通常为.DLL)。在调试期间,你可以设置断点[breakpoints]、定义新的标签[labels]、注释[comment]汇编指令,当某个模块从内存中卸载[unload]时,调试器会把这些信息保存在文件中,文件名就是模块的名称,扩展名为.UDD(表示 用户自定义文件[User—Defined Data])当OllyDbg下一次加载该模块时,它会自动恢复所有的调试信息,而不管是哪一个程序使用这个模块。假设你正在调试程序Myprog1,这个程序使用了Mydll。你在 Mydll 中设置了一些断点,然后你开始调试Myprog2,这个程序同样使用了Mydll。这时你会发现,所有 Mydll 中的断点依然存在,即使 Mydll 加载到不同的位置!
一些调试器把被调试进程的内存当作一个单一的(并且大部分是空的)大小为2 ^32字节的区域。OllyDbg采用了与之不同的技术:在这里,内存由许多独立的块组成,任何对内存内容的操作都被限制在各自的块内。在大多数情况下,这种方式工作得很好并且方便了调试。但是,如果模块包含好几个可执行段[executable
sections],你将不能一次看到全部代码,然而这种情况是非常少见的。
OllyDbg 是一个很占用内存的程序[memory—hungry application]。它在启动时就需要 3 MB,并且当你第一次装载被调试的程序时还需要一到两兆的内存。每一次的分析、备份、
你调试一个很大的项目,发现程序管
理器显示有 40 或 60 兆内存被占用时,请不要惊慌。
为了有效地调试一些不带源码的程序,你必须首先理解它是如何工作的。OllyDbg 包含的大量特性可以使这种理解变得非常容易。
首先,OllyDbg包含一个内置的代码分析器。分析器遍历整个代码,分出指令和数据,识别出不同的数据类型和过程,分析出标准API函数(最常用的大约有1900个)的参数并且试着猜出未知函数的参数数目。你也可以加入自己的函数说明[your own function descriptions]。它标记出程序入口点和跳转目的地,识别出跳转表[table—driven switches]和指向字符串的指针,加入一些注释,甚至标示出跳转的方向等等。在分析结果的基础上,调用树[call tree]显示哪些函数被指定过程调用(直接或间接)并且识别出递归调用、系统调用和叶子过程[leaf procedures]。如果需要的话,你可以设置解码提示[decoding hints]来帮助分析器解析那些不明确的代码或数据。
OllyDbg还包含Object扫描器[Object Scanner]。如果你有库文件[libraries]或目标文件[object files],扫描器会在被调试的程序中定位这些库函数。在全部函数调用中,对标准函数的调用占很重要的一部分(据我估计可达70%)。如果你知道正要被调用的函数的功能,你就不必把注意力集中在这个函数上,可以简单地单步步过[step over]这个call。分析器知道400多个标准C函数,比如fopen和memcpy。然而我必须承认当前版本的OllyDbg不能定位很短的函数(比一个return命令多不了多少的)或相似的函数(只在重定位上有不同)。Object扫描器[Object scanner]也能够识别输入库[import libraries]。如果某个DLL是按序号输出的,你不会看到函数名,只会发现一堆无意义的神秘数字。这种DLL的开发者通常会提供一个输入库来实现函数符号名与序号间的对应。让OllyDbg使用这个输入库,它就会恢复原始的函数符号名。
面向对象的语言(如C++),使用了一种叫做名称修饰[name mangling]的技术,把函数类型和参数都加入函数名中。OllyDbg 可以解码[demangle]这种函数名,使程序更易读。译者注:C++的名称修饰是编译器将函数的名称转变成为一个唯一的字符串的过程,这个字符串会对函数的类、其命名空间、其参数表,以及其他等等进行编码。 C++的名称修饰适用于静态成员函数,也适用于非静态成员函数。静态函数的名称修饰的一个好处之一,是能够在不同的类里使用同一个名称来声明两个或者更多的静态成员函数————而不会发生名称上的冲突。
OllyDbg完全支持 UNICODE,几乎所有对 ASCII 字符串的操作都可以同样应用于 UNICODE。
汇编指令都是很相似的。你经常会搞不清自己是不是已经跟踪过某一段代码。在OllyDbg中你可以加入自己的标签[labels]和注释[comments]。这些极大地方便了调试。注意一旦你注释了某个DLL,以后每次加载这个DLL时,注释和标签都有效————尽管你在调试不同的程序。
OllyDbg可以跟踪标准的栈帧[stack frames](由PUSH EBP; MOV EBP,ESP所创建的)。现代编译器有禁止产生标准栈框架的选项,在这种情况下分配栈[stack walk]是不可能的。当程序运行到已知的函数时,栈窗口[stack window]解析它的参数,调用栈[Call stack]窗口显示到达当前位置所调用函数的序列。
Structured Exception
Handling,SHE]的技术。SHE窗口[SEH window] 可以显示异常处理链。
多种不同的搜索[search]选项可以让你找到二进制代码或数据、命令或命令序列、常量或字符串、符号名或在 Run跟踪中的一条记录。
对于任何地址或常量,OllyDbg 可以找出参考[referencing]到该地址或常量的全部命令的列表。然后你可以在这个列表里找出对你来说是重要的参考。举例来说,某个函数可能被直接调用,或者经过编译器优化后把地址放入寄存器间接调用,或者把地址压入堆栈作为一个参数————没问题,OllyDbg 会找出所有这样的地方。它甚至能找到并列出所有和某个指定的位置有关的跳转。
OllyDbg 支持所有标准类型的断点[breakpoints]————非条件和条件断点、内存断点(写入或访问)、硬件断点或在整个内存块上下断点(后两项功能只在 Window ME,NT,2000,XP中有效)。条件表达式可以非常复杂(“当 [ESP+8] 的第 2 位被设置,并且 123456 位置处的字[word]小于10,或者 EAX 指向一个以“ABC”开头的 UNICODE 字串,但跳过前10次断点而在第11次中断”)。你可以设定一条或多条指令,当程序暂停时由OllyDbg传递给插件插件[plugins]。除了暂停,你还可以记录某个表达式的值(可以带有简短的说明),或者记录OllyDbg已知的函数的参数。在Athlon 2600+、Windows2000 环境下,OllyDbg 可以每秒处理多达 25000 个条件断点。
另一个有用的特性是跟踪。OllyDbg 支持两种方式的跟踪:hit和run。
在第一种情况下,它对指定范围内的每条指令上设置断点(比如在全部可执行代码中)。当到达设断的指令后,OllyDbg清除断点并且把该指令标记为hit。这种方法可以用来检测某段代码是否被执行。Hit跟踪速度惊人的快,在一个很短时间的启动后程序几乎达到了全速(译者注:这应该是与不进行调试时速度相比而言)。因为INT3断点可能对数据有灾难性的影响,所以我建议不要使用模糊识别过程。当代码没有被分析时Hit跟踪是不可以使用的。
Run跟踪[Run trace]是一步一步地执行程序,同时记录精确的运行历史和所有寄存器的内容、已知的参数和可选的指令(当代码是自修改时会有帮助)。当然,这需要大量的内存(每个指令需要15至50个字节,取决于调试的模式)但是可以精确地回溯和分析。你可以只在选定的一段代码甚至是一条指令中进行Run跟踪,或者你可以跳过无关紧要的代码。对于每个地址,OllyDbg能够计算这个地址在Run跟踪日志中出现的次数,虽然会导致执行缓慢但是可以得到代码执行的统计。比如说,某命令让你在每个已识别的过程入口处进行Run跟踪,那么统计[profile]就会给你每个过程被调用的次数。在到达某条指令、某个地址范围或指令计数器达到某一数值时Run跟踪可以自动地暂停[pause]。
在多线程程序里OllyDbg可以自动管理线程[threads],如果你单步调试或跟踪程序,它会自动恢复当前线程而挂起其它线程。如果你运行程序,OllyDbg 会恢复先前的线程状态。
你可以为内存块建立快照(叫做备份)。OllyDbg会高亮显示所有的改动。你可以把备份保存到文件或从文件中读取出来,从而发现两次运行的不同之处。你可以查看备份,搜索下一处改动,恢复全部或选定的改动。补丁管理器[Patch manager]记录了上次应用到程序中的所有补丁,在下次调试时可以再次应用它们。你可以很容易地把你的补丁加在可执行文件上。OllyDbg 会自动进行修正。
你不能在带有 Win32 的16位 Windows 下使用 OllyDbg。这种32位扩展操作系统无
欢迎转载:
推荐:    博客访问: 71323
博文数量: 21
博客积分: 1401
博客等级: 上尉
技术积分: 220
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
超级菜鸟找CALL入门
代码:现在还有好多连简单CALL都不会的朋友加进这个队伍,我就有事没事发个帖说说CALL的找法,当然是找无参数的,这样才容易验证是否找对了。现在以找打坐CALL为例:用OD打开武林(或附加)bp send 下断,喝口龙井茶等OD断下来,按F9直到OD左上角显示的是“运行”,回到画面,按“0”键开始打坐,在按“0”键的时候要确保OD左上角显示的是“运行”,如果变成暂停了,又要回到OD中按F9直到它一直显示运行按“0”键打坐被OD断下来后,取消断点,左手按住左CTR键,然后右手连续按F9键4次,就到达打坐CALL了&& |. /74 0A && &&& je && short elementc.&& |. |E8 B5F21300&& call elementc. && && && && ;&& 打坐0045465B&& |. |B0 01 && &&& mov al, 10045465D&& |. |C2 0400 && retn 4&& |& \E8 6BF21300&& call elementc. && && && && ;&& 停止打坐这个打坐CALL在DELPHI里是这样写,编译好后按按钮8就看到人物开始打坐了procedure TFrm_Pop.Button8Click(Sender: TObject);varAddress:PbeginAddress:=Pointer($);asm&& pushad&& call address&&+++++++++++++++++++++++++++++++++++++++++++++++++再加两个CALL给新手练练死亡回城CALL $普通攻击CALL $这两个都不用参数,普攻是在选中怪物再调用这个CALL打的+++++++++++++++++++++++++++++++++++++++++++++++++关于为什么下断后要等OD先自断一次:因为游戏是隔一定时间就发送一次消息,如果我们下断的时候刚好游戏发送消息,那断下来的是游戏的其它CALL发送的消息,所以要等游戏先断一次,按F9运行后赶快切换到游戏里做我们想要做的事,这样断下来的才是我们要找的CALL发送的消息为什么要按4次CTR+F9:一个分很多层,什么高级层低级层,具体的原理我看过也忘了,只是通过实验得出,网游在按CTR+F9前三次都是通讯用的,不信可以试试在游戏人物什么也不做的情况下,在前三层下断,隔一定时间都会自动断下来,一般按CTR+F9第三次看到的是发包CALL,所以按到4次就可以开始找CALL了,一般功能CALL在第4、5、6层,如果按CTR+F9看到的CALL是call near [edx+8] 之类的,就不能再往后找了,如不是下断没对那就是已过了要找的CALL,要从头再找
阅读(2665) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。通过CE和OD找游戏CALL _ 综合讨论 - 按键精灵论坛
腾讯微博:
软件版本:2014.05软件大小:76.8M更新时间:2-21
软件版本:3.2.5软件大小:62.5M更新时间:06-06
软件版本:1.2.7软件大小:29.2M更新时间:06-19
软件版本:1.1.0软件大小:12.3M更新时间:12-29
查看: 18325|回复: 40
本帖最后由 老虎拔牙 于
12:03 编辑 逛了几天了,没事做,瞎写了一通,希望对新手朋友们对CALL有所认识(原创啊,申请加精)首先我们要了解找CALL是什么意思专业的讲,就是找到游戏内部函数的入口地址通俗的讲,就是找到游戏事件如何去触发如加血,你吃了一个血瓶,游戏中如何判断呢,它会调用一个加血的函数一般会有几个参数,如血瓶种类,存放位置等等几乎所有的游戏动作,都可以用找CALL来实现打怪CALL,任务CALL,技能CALL等等等不说了看图(54.77 K) 21:16:23
(47.16 K) 21:16:24这是第一次搜索血瓶的数量,一般要搜素几次才能得到地址第二次搜素,得到了血瓶数量的准确地址(63.60 K) 21:16:26
(45.48 K) 21:16:27
(52.00 K) 21:16:28访问代码跟踪地址我吃了一个血瓶后的代码动作这里我就找到了函数的调用地址:005D9060今天就讲到这里,明天再来写有朋友说写得太少,多发点吧还是看图,打开OD,附加进程(167.56 K) 1:09:27
(155.87 K) 1:09:30
(215.99 K) 1:09:34(198.08 K) 1:09:38
(193.00 K) 1:09:44
(223.28 K) 1:09:48(199.07 K) 1:09:23转到地址 5D9060,向上找到该函数的入口地址;在入口地址下断,跟踪到CALL地址注意最后一幅图 call Client.005D76F0,这就是使用血瓶函数的入口地址(5D76F0)太晚了,要睡觉了,代码实现起床了再发吧
龙年勋章(360天)龙年纪念勋章(360天)按键精灵开发者2级可通过提升认证等级来升级勋章:
谢谢,先收藏了在细看
鹰眼勋章鹰眼注册用户专属勋章黄瓜勋章(永久)体验商业小精灵活动的奖励龙年勋章(360天)龙年纪念勋章(360天)马年勋章(360天) 马年纪念勋章(360天)按键精灵开发者4级可通过提升认证等级来升级勋章:
恭喜紫猫学院两周年!10月31日20点,YY频道期待您的到来!
听音乐的懒虫
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章发帖高手鼓励积极回复,但注意不要灌水哦龙年勋章(360天)龙年纪念勋章(360天)按键精灵开发者5级可通过提升认证等级来升级勋章:
。。。 多写点嘛。
龙年勋章(360天)龙年纪念勋章(360天)
我用这玩意也就是做做单机的
虽然很简单但是CE很实用
大家好好跟LZ学习啊
请叫我黯然
咋没人关注呢
本帖最后由 老虎拔牙 于
11:35 编辑 void UseRed()
//这里是内联汇编的起始符
//传参数,一般的函数传参在汇编里都是push,当然也有用别的指令的
mov eax,0x5d76f0
//将call地址放到寄存器eax
//直接调用
void MyCall()
h=::FindWindow(NULL,"GameCaption");
//取得游戏句柄
LPDWORD pid=&
//指针传递
::GetWindowThreadProcessId(h,pid);
//取线程ID
HANDLE hp=OpenProcess(PROCESS_ALL_ACCESS,false,id); //取得线程的权限
callbase=VirtualAllocEx(hp,NULL,0x3000,MEM_COMMIT|MEM_RESERVE,PAGE_EXECUTE_READWRITE);
//分配内存
if (callbase==NULL) //判断是否已获得内存地址
AfxMessageBox("申请空间失败");
if (!::WriteProcessMemory(hp,callbase,UseRed,0x3000,NULL)) //判断是否能写入内存地址,真值就可以调用内联汇编写入地址
AfxMessageBox("写入失败");
CreateRemoteThread(hp,NULL,0,(LPTHREAD_START_ROUTINE)callbase,0,0,&tid); //创建远程线程,并调用
千秋☆霸业
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章兔年勋章(360天)兔年纪念勋章(360天)龙年勋章(360天)龙年纪念勋章(360天)
berlin4444
发帖高手鼓励积极回复,但注意不要灌水哦
一个老男孩
按键元老资深按键用户的尊贵荣誉勋章学有所成学有所成勋章,新手步入按键学堂的第一枚勋章QUI设计大师QUI设计大师龙年勋章(360天)龙年纪念勋章(360天)小编勋章感谢你为按键精灵教科书做出的贡献按键精灵开发者6级可通过提升认证等级来升级勋章:按键15周年庆纪念勋章按键15周年庆纪念勋章(365天)
你们现在都是用最新版的按键9
还是按键8 啊 一些代码贴上去老是提示错误
这个是VC++的代码
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章龙年勋章(360天)龙年纪念勋章(360天)小编勋章感谢你为按键精灵教科书做出的贡献按键精灵开发者6级可通过提升认证等级来升级勋章:元旦勋章(30天)按键精灵元旦活动纪念勋章
踏步,没有蛀牙
好东西.学习了.
FingerMaster
学有所成学有所成勋章,新手步入按键学堂的第一枚勋章龙年勋章(360天)龙年纪念勋章(360天)
正需要这个
龙年勋章(360天)龙年纪念勋章(360天)学有所成学有所成勋章,新手步入按键学堂的第一枚勋章按键精灵开发者4级可通过提升认证等级来升级勋章:
。。。 多写点嘛。
kmcla 发表于
20:00 。。。 多写点嘛。找到CALL了,代码实现了,你还要我写啥啊
龙年勋章(360天)龙年纪念勋章(360天)
学习。。。期待下集}

我要回帖

更多关于 od找call视频教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信