由EDY转载来!菜鸟ELF图文教程之三——更为简单地制作ELF补丁并自定义偏移量!
做这个教程,有这么几个目的:
1、将TANK大大的PortKit & SDK通俗化,在高手与菜鸟之间架个桥梁,高手们要花时间研究好东东,没办法一一解释。我就做个二传手吧!个人感觉TANK的PortKit & SDK非常好用和实用!
原帖http://edy.5d6d.com/thread-4237-1-1.html
2、解决不少朋友之前用PortKit制作的ELF补丁不能使用的问题;以及让更多的朋友使用自己CG1做的ELF补丁和elfloader.lib.
3、大家通过使用相同偏移地址来制作ELF补丁,以响应鸡蛋曾经的号召:统一ELF补丁偏移量,实现elfloader.lib公用!
强烈建议:统一ELF补丁为以下偏移,这也是PortKit & SDK里面推荐的偏移地址:
CG1文件名=elfpack偏移地址[register.fpa偏移地址]
E398_LTE_R373_49R_ELEV0.2=0x00C72EB0[0x0025A430]引用:
引用:
原帖由 chinawrc 于 2008-1-31 23:42 发表
我想咱们是不是可以统一一下ELF补丁的偏移量,那样可能elfloader.lib
就能实现公用了。
不啰嗦了,开始吧!以E398为例,其他机型也可参照(只要将机型修改下即可,下面会提到)
一、
先下载下面我已放好所需文件的PortKit & SDK并解压(刚弄这个时,为添加文件弄了一头汗!现在有现成的了,大家就不用费心了!)。
二、打开PortKit & SDK文件夹,将自己的CG1(SMG格式的)放入EDY文件夹里,CG1必须是没打过ELF补丁的!打过的要先撤销掉!
再将已添加新函数的PAT文件或下载更新的libgen里的文件替换PortKit & SDK\libgen里的。不会添加新函数可参照菜鸟ELF教程一。(见下图)
我这里的libgen是采用libgen_by_Macho_for_ALL_models_v1[1].3,截止到08.4.12的。
三、在offset.txt里定义ELF补丁偏移量,E398推荐elfpack偏移地址定义为0x00C72EB0,register.fpa偏移地址为0x0025A430。
注意:offset.txt里填写的elfpack偏移地址必须是你想定义的偏移地址-1(至少减1,在16进制1-10范围内均可),例如你想定义为0x00C72EB0,那就要在offset.txt里填上0x00C72EAF。我这里已添加好了推荐的偏移地址了(我填的是-10即00C72EA0,也可以)。
另外:1、offset_help.txt里面有各机型建议的偏移地址,其他机型的可参考下。2、不是E398的还要在obj文件夹里修改sysinfo.c以适应你的机型,398的就不要动了。(见下图)
四、点击PortKit_shell.cmd,然后输入make,再回车。按提示一步一步做下去(如图)。
五、收货吧!在PortKit & SDK\build文件夹里会新生成一个你CG1名称的文件夹,里面就有你要的ELF补丁及库函数了——elfloader.lib、elfpack.fpa、Register.fpa。用文本打开后两个看看补丁偏移地址是不是你定义的。
另外还有一个“CG1名称.O”文件生成在SDK\obj里面,这个文件是用来做ELF的,对一般菜鸟包括我基本上都是没用的,不要管它了.
制作过程中不清楚的可以参照我的"菜鸟ELF教程一"。
PortKit & SDK的其他功能参照TANK的贴慢慢琢磨吧!
还有一个补充下,我在单位的电脑里将PortKit & SDK放在电脑文件夹子目录下,就无法使用PortKit & SDK,放在分盘区的根目录下才行(如放在F盘的根目录下可以,放在F盘其他文件夹里就不行),不知道什么原因?提醒不能用的朋友查下是否也是这个原因。
感谢TANK和他的PortKit & SDK!
[
本帖最后由 摩托教父 于 2008-4-19 01:14 编辑 ]