TC官方合作论坛

标题: 如何找游戏里的call [打印本页]

作者: luqinlong    时间: 2015-11-20 23:18
标题: 如何找游戏里的call
万事具备就差call了,ollydbg这个不会用急人啊,,那位大侠能带我找一次call可以给新版人民币

作者: milai5201    时间: 2015-11-20 23:46
汇编没那么简单,路还长,慢慢沉淀吧,call不是找一找就能学会的
作者: fa7865211    时间: 2015-11-21 20:28
某宝去买教程吧很便宜的 也就才十多块钱
作者: somyyy    时间: 2015-11-21 23:10
本帖最后由 somyyy 于 2015-11-21 23:15 编辑

1、OD是现在逆向工程的利器(破-解、脱壳、写挂必备,学OD追码也是高手的必备技能),也叫动态调试器,不过很多游戏会检测OD(也就是你说的OllyDebug),所以首先要找到一个可以过检测的OD;
2、要看你需要找什么CALL了,需要有针对性的下断点也就是:bp+需要下断点的函数;这个函数是什么很重要,这和你需要的数据有关,需要对API函数有一些了解才能找准断点函数;
3、一般要寻找游戏CALL,单独用OD稍微麻烦点,一般人都需要配合内存查找数据来一起寻找数据CALL或是常量数据的,常用的内存查找工具是CE;很多游戏也会检测它,所以也要找一个能过检测的版本;
4、即便找对了函数地址,函数的参数也是需要分析OD中的汇编代码才行,目前TC不支持汇编代码,可以考虑大漠插件(估计需要收费功能才行),所以如果没有接触过,路还很漫长。。。
关于OD的使用教程很多,举个简单的例子:
比如:一个软件限制本地时间才能使用,否则过期不许使用------这时用OD调试这个软件就需要载入软件后下断点bp GetLocalTime,这时候游戏或软件只要调用这个函数,就会自动断在API处,然后才能一步步往回追码,最后找到需要修改的地方;
但是,游戏或软件不会这么傻裸着发送软件任由你修改,一般都会加壳,加了壳的软件就不能用OD直接修改或调试,有的直接检测到OD就退出了,所以加了壳就需要脱壳后再修改调试代码,加壳与脱壳技术随着时间的发展到今天,也不是谁都能弄得了的,用高深莫测不也为过;
所以,要选择学习OD走入逆向的天地并走的更远的话,那需要的就是:知识储备+耐心+经验+运气;路漫漫其修远兮。。。。
啰嗦一堆,其实我也只是入门菜鸟一只,学过一点汇编,破过几个软件,会脱几个常见壳而已,不知是否有用,只是抛砖引玉。。。

作者: 剑仙十号    时间: 2015-11-22 10:23
找call写call吧,百度贴吧。
作者: 剑仙十号    时间: 2015-11-22 11:15
求教。按Ctrl+F9是回到哪个方向的代码。
比如:我写了一个软件,限制本地时间使用,过期不许使用。
代码设计思路:
按键盘10次。
检测本地时间,
如果没有时间过期,
    按鼠标20次。
    按鼠标20次。
如果时间过期,
    获得自身句柄,关闭程序。

编译软件,载入软件后下断点bp GetLocalTime,这时候游戏或软件只要调用这个函数,就会自动断在API处,然后才能一步步往回追码,最后找到需要修改的地方;

OD自动断在API处,这时按几次Ctrl+F9。
按Ctrl+F9是回到按鼠标方向的代码 /获得自身句柄方向的代码,

还是回到按键盘方向的代码。


作者: 剑仙十号    时间: 2015-11-22 11:17
somyyy 发表于 2015-11-21 23:10
1、OD是现在逆向工程的利器(破-解、脱壳、写挂必备,学OD追码也是高手的必备技能),也叫动态调试器,不过 ...

求教。按Ctrl+F9是回到哪个方向的代码。
比如:我写了一个软件,限制本地时间使用,过期不许使用。
代码设计思路:
    按键盘10次。
检测本地时间,
如果没有时间过期,
   按鼠标20次。
   按鼠标20次。
如果时间过期,
   获得自身句柄,关闭程序。

编译软件,载入软件后下断点bp GetLocalTime,这时候游戏或软件只要调用这个函数,就会自动断在API处,然后才能一步步往回追码,最后找到需要修改的地方;

OD自动断在API处,这时按几次Ctrl+F9。
按Ctrl+F9是回到按鼠标方向的代码 /获得自身句柄方向的代码,

还是回到按键盘方向的代码。
作者: 剑仙十号    时间: 2015-11-22 11:22
somyyy 发表于 2015-11-21 23:10
1、OD是现在逆向工程的利器(破-解、脱壳、写挂必备,学OD追码也是高手的必备技能),也叫动态调试器,不过 ...

就是说,OD在断点停下来后,如果不停地按Ctrl+F9,汇编代码是回到程序的开头代码,
还是回到程序的结尾代码。
作者: somyyy    时间: 2015-11-22 14:58
本帖最后由 somyyy 于 2015-11-22 15:17 编辑

首先,看你写的代码是不是要调试TC程序啊?
这个TC貌似生成的程序有加壳的,你用PEID查一下,我记得查过好像有壳的,如果有壳代码不能直接修改;
关于OD的使用教程很多,追码最好从单步追源码开始练习,比如写一个C程序的Hello World源码或Delphi的源码跟踪一下,找找感觉;
然后学学教程常见的脱壳方法,单步跟踪-ESP定律等等很多经典好好吸收,对汇编语言也要知道一些基本理论,否则找到关键位置也没信号没感觉,可能就错过了。
程序是向下执行的,除非你强制跳转,否则只能向结尾走;另外如果你学过OD,应该知道,单步跟踪法的要旨就是不让程序向上跳转,一直往下追踪,适合于脱任何壳寻找关键点;
单步跟踪法是脱壳的最基本操作方法,其他脱壳方法都是源于此基础,高手也是从这个方法中总结经验找到更快的办法的。如果真的扎进脱壳的领域去,没有几年是出不来的,不过会强迫你学很多底层知识。
你说的F9是常见的OD操作:
Ctrl+F9 运行至ret,就是遇到返回就停;
Alt+F9 运行至上层调用的下句,就是回到上次调用结束,指针指向下一句开始,一般回到用户代码(因为我们下的断点是在API上,程序运行空间不是用户代码空间),
Shift+F9 忽略异常运行,和F9差不多,即便运行过程遇到异常也忽略继续执行的意思。





作者: luqinlong    时间: 2015-11-23 19:16
不知道停在哪里了,我把注入游戏的dll都写好了就等着call它的功能函数了,每次下用bp send下个断点不知道停在哪很迷茫
作者: 剑仙十号    时间: 2015-11-23 19:41
somyyy 发表于 2015-11-22 14:58
首先,看你写的代码是不是要调试TC程序啊?
这个TC貌似生成的程序有加壳的,你用PEID查一下,我记得查过好 ...

“按Ctrl+F9,除非你强制跳转,否则只能向结尾走;”

我总结一下,是不是这样的:
OD在断点停下来后,代码处在系统领空,就是一些Win32Api的汇编代码。

按两三次Ctrl+F9,进入程序领空的汇编代码。

继续不停地按Ctrl+F9,
执行点来到程序的
开始代码,
中间代码,
一直到程序的结束代码。


作者: somyyy    时间: 2015-11-23 21:30
剑仙十号 发表于 2015-11-23 19:41
“按Ctrl+F9,除非你强制跳转,否则只能向结尾走;”

我总结一下,是不是这样的:

应该是这样的,
1、程序首先正常执行;
2、遇到你设置的“检测本地时间”,就断下了,进入API领空;
3、完成API的相关命令,这中间有很多return,具体多少视函数而不同(不确定);
4、完成你设置的“检测本地时间”命令,跳回你设置的下一条命令;
直接ALT+F9,从API领空的一堆rtn就就略去了,指针就直接就到了你设置的“检测本地时间”命令下一条开头(中间自动执行完了);
Ctrl+F9也能最后运行到下一条命令,不过需要多执行几次罢了,麻烦点,具体多少次这个与断点函数需要执行的代码多少有关,不确定;
     不知是否理解了?


作者: 剑仙十号    时间: 2015-11-24 08:21
somyyy 发表于 2015-11-23 21:30
应该是这样的,
1、程序首先正常执行;
2、遇到你设置的“检测本地时间”,就断下了,进入API领空;

非常感谢。
我用Delphi写好程序,再开OD慢慢体会一段时间。





欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1