爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1279|回复: 12
收起左侧

[讨论建议] loquat老兄,有空搞点移植不定之类的教程吧

[复制链接]
发表于 2009-6-3 20:34:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
最好是把你从刚开始学搜集到的关于移植补丁类的资料
以及学习的过程循序渐进写个教程
俺可是很仰慕你
热心人啊
最近移植的人少了,有时求不到干着急。
所以我也想尝试着学习学习。
叨扰了!
再次感谢热心的loquat同志!
推荐loquat为区域版主!
发表于 2009-6-3 21:38:22 | 显示全部楼层
一直搁浅了,没空弄。
学校课时很紧张
这里有一个简单的教程,可以先看看消化一下,练习一下一些目前已经移植成功的补丁
http://bbs.0110.cn/viewthread.php?tid=412690
然后附件里是还没有完成的内容,很难有时间弄也很难再有兴趣弄了
回复 支持 反对

使用道具 举报

发表于 2009-6-3 22:05:30 | 显示全部楼层
附件太慢,直接传到这里,未完成的教程。
包含了一个简单的示例
http://www.rayfile.com/files/485 ... -b734-0014221b798a/

其实简单的补丁移植:
假设补丁的格式A: B C
1、最简单的只需要找对应的地址,A替换就行,rayfile中的那个示例就是我说的教程系列I的内容,就是这个类型的
2、稍微难一点的需要换A和B或者是要换A和C
上面的链接中的教程系列II就是替换的A和C
替换A和B的也大体相似,反正就是搜索,不行就换数据搜索,要会用winhex和smelter搜索,就是搜索
3、更难一点的A、B、C都要替换
C部分如果不是跳转一般是不用替换的,跳转要用跳转工具计算,或者会用smelter计算也行,国外有教程。
在将来可能存在的教程中,我只会讲用Thumb跳转计算和ARM跳转计算工具计算。smelter容易出错懒得说了。
其中原始补丁的跳转一般都是Thumb模式的,如果是ARM模式的跳转,可以用经验法确定其跳转到的位置。
或者直接用IDA反汇编确定其跳转到的位置。
所以,要熟练掌握的工具,IDA、ABraGen0.22、ARM_tool_1.1、winhex、smelter
有时候会比较方便的,双位取反工具和文本对比工具,fubu对比工具
然后就是编译,IAR,编译我也刚起步,刚给自己移植编译了几个补丁,有几个通过了测试。
4、基本上掌握了以上部分,基本大部分补丁都能自己移植了
   有些补丁地址的寻找,要看技巧和经验
比如我假设某个机型的补丁0443A98: 2008A1E1 3EF266FE
明显的3EF266FE是一个跳转,A0443A98: B loc_A0682768
假设原始机型为a,要移植到的机型b,原始补丁为A: B C ,移植成功的补丁为A': B' C'
假设A处数据90382FA0(B),则你要先把这个位置90382FA0(是一个功能地址,这个地址是可以移植的)
假设,找到这个功能地址在b中的对应数据为86452EA0,你需要在b中搜索86452EA0(B')以确定A'
有时候一个地址的找到要这么转换两三次,所以耐心很重要。
回复 支持 反对

使用道具 举报

发表于 2009-6-3 22:06:05 | 显示全部楼层
里面有一个调整空白的补丁
http://bbs.0110.cn/viewthread.php?tid=412690
回复 支持 反对

使用道具 举报

发表于 2009-6-3 22:19:30 | 显示全部楼层
下面是我自己DIY的实例,虽然目前想法还没成功,发出来给你看看。
有时候很多补丁在你面前,你修改一下就是一个新的补丁,实现新的功能。
  1. ;Turn off illumination during the call
  2. ;(c) ThE TrIFoN, Serega_1
  3. ;(p) loquat
  4. ;Version: 2.0
  5. 422A64: C986DEA0 A10054A1
  6. #pragma enable old_equal_ff
  7. 15400A0: 08B5024B9847024B984708BD,0xA09902EF
  8. 15400B0: 0xA0DE86C9
  9. #pragma disable old_equal_ff
复制代码
  1. ;ElfsInHotKeys.elf替换权限许可管理
  2. +155E800
  3. #pragma enable old_equal_ff
  4. 00: FFB58020C7DF2501061C06A18022C7DF 
  5. 10: 6C0100220021301C94DF301CC7DF2901
  6. 20: FFBD
  7. 24: "0:\\ZBin\\App\\ElfsInHotKeys.elf",00;注意路径和文件名的大小写
  8. #pragma disable old_equal_ff
  9. +0
  10. 0459C90: 2D6A34A0 01E855A1
复制代码
;发送短信成功执行某项功能
;此补丁已经被我恶意篡改,请不要尝试刷入手机,否则死机没商量

;05F6894: 8976547E 4EF3BCFB
;#pragma enable old_equal_ff
;094DDA0: 1F78898D9B0B500207CDF004A4DDFB0F
;094DDB0: 0020CDD950207BDF0000D300BF81B7A8
;094DDC0: B50804A0
;#pragma disable old_equal_ff


下面是我根据以上三个补丁组合DIY出来的补丁
;补丁本来我想实现的功能是播放音乐自动启动MediaPlayerPlus.elf,推出播放之后自动关闭elf
目前实现了,进入播放器就自动启动MPP.elf,但是bug多多,所以我把补丁都注释了
  1. ;#pragma enable old_equal_ff
  2. ;15400E0: 1F78898D9B0B500207CDF004A4DDFB0F
  3. ;15400F0: 0020CDD950207BDF0000D300BF81B7A8
  4. ;1540100: 0xA155E901
  5. ;#pragma disable old_equal_ff

  6. ;045A010: F35F34A0 C10054A1

  7. ;#pragma enable old_equal_ff
  8. ;15400C0: 08B5024B9847024B984708BD,0xA0345FF3
  9. ;15400D0: 00F006F8
  10. ;#pragma disable old_equal_ff

  11. ;+155E900
  12. ;#pragma enable old_equal_ff
  13. ;00: FFB58020C7DF2501061C06A18022C7DF 
  14. ;10: 6C0100220021301C94DF301CC7DF2901
  15. ;20: FFBD
  16. ;24: "0:\\ZBin\\App\\MediaPlayerPlus.elf",00;注意路径和文件名的大小写
  17. ;#pragma disable old_equal_ff
  18. ;+0
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-6-3 22:21:15 | 显示全部楼层
这段文件也应该是能理解的

  1. ;S7Cv47 - 密码保护部分功能 v1.0
  2. ;(c) avkiev, § AsteriX, lisugar
  3. ;(i) starfriend
  4. ;(p)loquat
  5. #pragma enable old_equal_ff
  6. 0x084600: 00B507480022026006214160F8218160
  7. 0x084610: 044AC260036158F34FF800BD024BEFE7
  8. 0x084620: 80F0A7A8ACC5E5A8D507BCA1
  9. #pragma disable old_equal_ff
  10. ;示例1,保护“我的文件夹”
  11. 045BB10: FB6134A0 314608A0
  12. 0084630: FFFFFFFFFFFFFFFF 004B,E5,E7,0xA03461FB ;我的文件夹
  13. ;示例2,保护“通讯录”
  14. 0457B10: E95934A0 394608A0
  15. 0084638: FFFFFFFFFFFFFFFF 004B,E1,E7,0xA03459E9 ;通讯录
  16. ;密码方式:00-PIN, 08-PIN2, 06-Phonecode(默认)
  17. ;0x084608: 06 06

  18. /*
  19. 补丁的原理: old_equal_ff是主程序;
  20. 045BB10: FB6134A0是需要保护的功能,前者是功能入口在fubu中的位置,后者是功能入口
  21. (在功能函数或者补丁中获取功能入口,比如我的文件夹A03461FB,用winhex在fubu中搜索FB6134A0就得到了045BB10)
  22. 主程序部分是要求输入密码
  23. 0457B10: E95934A0 394608A0是跳到后面一句
  24. 0084638: FFFFFFFFFFFFFFFF 004B,E1,E7,0xA03459E9(通过寻址跳到主程序部分要求输入密码,怎么寻址我不知道懒得研究.密码通过后执行0xA03459E9)
  25. 中文说明:
  26. 1.注意每个原始功能一般都拥有两个入口,普通菜单和极速菜单,最好一起保护。
  27. 2. 每保护一个入口,需要如下两条:
  28.       ADRADRAD: AAAAAAAA XXXXXXXX+1
  29.       XXXXXXXX: FFFFFFFFFFFFFFFF 004B,YY,E7,AAAAAAAA ; EBTRY_NAME
  30.              ADRADRAD-原始功能地址存储地址
  31.              AAAAAAAA-想保护的功能地址,请查看功能地址表
  32.              XXXXXXXX - 新的入口保护的地址,首个地址0084630,其它依次加8。
  33. 3.每增加一个功能保护,依次XXXXXXXX加上8,YY处减去4;
  34. 4.第一个保护0084630空着,从0084638开始,也没有关系,但是要保证对应的YY值正确。
  35.         0084630+0x8*x,则yy对应为E5-0x4*x,十六进位。
  36.         需且仅需上面的XXXXXXXX和YY一一对应即可。
  37. */
  38. /*
  39. 1、目前极速菜单还不能保护,原因已知要移植那个###返回极速菜单的补丁。
  40. 2、上面的示例1和示例2不互相影响。(仅需XXXXXXXX和YY一一对应即可)
  41. 3、bug是,返回键将不能退回到桌面,只能红键返回桌面
  42. 4、不知道mastercode为何物?不会用skey解锁的就不用刷此补丁了。
  43. 5、感谢jpg001帮忙理解
  44. */
复制代码
以上所有都能理解的话,也就不用我再写教程了
不过我估计没有多少人能理解得了
回复 支持 反对

使用道具 举报

发表于 2009-6-3 22:26:26 | 显示全部楼层
顺便占位子休息一下,教程啊教程,为什么高人却又不出?
回复 支持 反对

使用道具 举报

发表于 2009-6-4 13:44:03 | 显示全部楼层
很好,很强大......loquat是个好同学.
回复 支持 反对

使用道具 举报

发表于 2009-6-4 20:15:48 | 显示全部楼层
很好,很强大......loquat确实是个好同学.
回复 支持 反对

使用道具 举报

发表于 2009-6-4 22:09:11 | 显示全部楼层
高人太高了,高高在上
回复 支持 反对

使用道具 举报

发表于 2009-7-2 10:45:28 | 显示全部楼层
强大啊。
回复 支持 反对

使用道具 举报

发表于 2009-7-2 17:10:57 | 显示全部楼层
置顶里面,我签名里面也有。。。
回复 支持 反对

使用道具 举报

发表于 2009-7-2 19:32:19 | 显示全部楼层
似乎楼主,还没见你出手移植补丁哦。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-18 06:38

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表