作者:hacker 日期:2022-11-13 分类:网站黑客
笔者经过长时间的探索,总结了以下几种定位代码的方法。 信息反馈法所谓信息反馈法,是指先运行目标程序,然后根据程序运行时给出的反馈信息作为突破口寻找关键代码。在第 2 章中,我们运行目标程序并输入错误的注册码时,会弹出提示无效用户名或注册码,这就是程序反馈给我们的信息。通常情况下,程序中用到的字符串会存储在String.xml文件或者硬编码到程序代码中,如果是前者的话,字符串在程序中会以id 的形式访问,只需在反汇编代码中搜索字符串的id 值即可找到调用代码处;如果是后者的话,在反汇编代码中直接搜索字符串即可。 特征函数法这种定位代码的方法与信息反馈法类似。在信息反馈法中,无论程序给出什么样的反馈信息,终究是需要调用Android SDK 中提供的相关API 函数来完成的。比如弹出注册码错误的提示信息就需要调用Toast.MakeText().Show()方法,在反汇编代码中直接搜索Toast应该很快就能定位到调用代码,如果 Toast在程序中有多处的话,可能需要分析人员逐个甄别。 顺序查看法顺序查看法是指从软件的启动代码开始,逐行的向下分析,掌握软件的执行流程,这种分析方法在病毒分析时经常用到。 代码注入法代码注入法属于动态调试方法,它的原理是手动修改 apk 文件的反汇编代码,加入Log 输出,配合 LogCat查看程序执行到特定点时的状态数据。这种方法在解密程序数据时经常使用,详细的内容会在本书的第8 章介绍。 栈跟踪法栈跟踪法属于动态调试方法,它的原理是输出运行时的栈跟踪信息,然后查看栈上的函数调用序列来理解方法的执行流程,这种方法的详细内容会在本书的第8 章介绍。 Method Profiling(方法剖析)属于动态调试方法,它主要用于热点分析和性能优化。
反汇编是将机器码转换成改程序的助记符。内存挂是调用游戏本身的函数。
反汇编就是我们把一系列的机器码转换成改程序的助记符。如果我们拿到一份机器码程序,而我们想要知道他的功能和工作方式,可以对机器码进行反汇编。内存挂:数据方面依靠内存地址,操作方面调用游戏本身的函数,也就是人家说的关键CALL。
内存挂就是通过在内存中搜索游戏相关的数据,逐步缩小搜索范围,然后再修改,那样客户端获得的数据就是修改后的,然后返回给服务器的数据也是修改后的比如说攻击本来是打不死怪的,但是修改成攻击很高,一刀杀掉了。客户端就会返回杀死了怪的记录,然后服务器就会传递升级的信号,客户端就可以发现升级了,简单说就是数据拦截。反汇编指的是由已生成的机器语言(二进制语言)转化为汇编语言的过程,也可以说是汇编的逆向过程。
mspgcc支持GNU标准内联汇编特性‘asm’。在汇编程序里使用‘asm’,你可以用C表达式来指定指令的操作数,这意味着你不用管要使用的数据在寄存器或内存的位置。
你必须指定汇编程序指令模板,如同汇编程序语言一样,操作数用引号括起来
已有1位网友发表了看法:
访客 评论于 [2022-11-13 21:18:37] 回复
工作方式,可以对机器码进行反汇编。内存挂:数据方面依靠内存地址,操作方面调用游戏本身的函数,也就是人家说的关键CALL。内存挂就是通过在内存中搜索游戏相关的数据,逐步缩小搜索范围,然后再修改,那样客户端获得的数据就是修改后的,