反编译的三种方式
反编译的三种方式:
一、修改数据
说明:通过修改内存数据直接达到结果的操作,比如修改植物大战僵尸的阳光值
方法:
1.基址+偏移直接赋值。
2.写内存字节直接替换内存数据
二、修改逻辑
说明:通过修改代码逻辑达到执行动作改变,比如收获阳光时,阳光数值+50,修改为+1000
方法:
1.如果代码修改后的字节与修改前相同,可以使用写内存字节直接替换
2.人造指针,在空白内存开辟一块可以容纳修改代码的空间,然后写入修改的代码,再将原代码改成跳转到我们新开的空间处进行执行,执行完成后再跳转回原代码处
三、函数调用(call、动作调用)
说明:程序的通用功能被封装进一个一个的call中,使用时添加入参再调用就完成了某个功能,比如喊话公告,只用找到喊话call,然后添加喊话内容、喊话类型等参数,再调用这个call,这样喊话就完成了
方法:
1.找到功能call,分析所需参数,使用人造指针的方式开辟空间就行参数的赋值,最后调用call即可。
2.置入代码方式,此方式也与上述一致,只是使用esp+4、esp+8接收参数,转换成编码执行。
特征码:
说明:特征码是多个汇编码组成的一串唯一码,拥有唯一性,极少变动性
作用:可以使用特征码定位基址、call地址、重要逻辑片段
注意:收集特征码时,避免出现基址、地址和偏移的代码,尽量使用多个汇编码,如果实在无法避免,使用*或者?替代,一个好的特征码应该是没有替代符、尽量较短和能划分所处内存的范围
^_^ Be the first to comment.
Comment
Nickname
Email (Reply notice)
Website
Content (can use Markdown syntax)