- 积分
- 412
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2010-4-23 21:02:15
|
显示全部楼层
只移植了SL7Cv47的。ELC1v41的直接搜索就可以得到。SL7C需要IDA反汇编。。。
第二个地址,可以发现直接搜索特征码就OK
- ;SL7Cv47035B09C: C8F014E9 C046C046
复制代码
第一个地址前后取偏移搜索了几次发现搜索不到。
上溯到ELC1v41的基地址5DA158: 9471E3A8FFFF0000FF7F0000,发现红色部分是一个RAM地址。
取特征码A8FFFF0000FF7F0000,在SL7Cv47fubu中搜索,运气好,搜索到了地址。稍作对比发现两个fubu中从这里开始的数据结构一样。。。
于是把对应的ELC1v41 5DA18C-5DA350反汇编出来。第二个hook已经在这中间,ok
同样把SL7Cv47从029C49C开始选一段地址反汇编出来。我一直反到了029C6FE
;SL7Cv47ROM:A029C49C C5 4B LDR R3, 0xA029C7B4
ROM:A029C49E 98 42 CMP R0, R3
ROM:A029C4A0 63 D0 BEQ loc_A029C56A
ROM:A029C4A0
ROM:A029C4A2 04 33 ADD R3, #4
ROM:A029C4A4 98 42 CMP R0, R3
ROM:A029C4A6 65 D1 BNE loc_A029C574
ROM:A029C4A6
ROM:A029C4A8 87 F1 90 E8 BLX 0xA04235CC
ROM:A029C4AC 65 E0 B loc_A029C57A
;ELC1v41ROM:A05DA18C D5 4B LDR R3, 0xA05DA4E4
ROM:A05DA18E 98 42 CMP R0, R3
ROM:A05DA190 67 D0 BEQ loc_A05DA262
ROM:A05DA190
ROM:A05DA192 04 33 ADD R3, #4
ROM:A05DA194 98 42 CMP R0, R3
ROM:A05DA196 65 D1 BNE loc_A05DA264
ROM:A05DA196
ROM:A05DA198 41 F2 D2 EB BLX 0xA081B940
ROM:A05DA19C 77 E0 B loc_A05DA28E
完全相同的结构:
ELC1转到A05DA28E
SL7C转到A029C57A
ELC1的A05DA28E往上看,发现有一个地址
很接近目标hook,A05DA328
ROM:A05DA27E loc_A05DA27E ; CODE XREF: ROM:A05DA1A4j
ROM:A05DA27E 56 E0 B loc_A05DA32E
但是SL7Cv47中不容易找到对应的地址。
只好老老实实从A05DA28E往下看:
ROM:A029C5AC   <->  ROM:A05DA2BA
ROM:A029C5CA   <->  ROM:A05DA2DA
ROM:A029C5F0   <->  ROM:A05DA300
ROM:A029C612   <->  ROM:A05DA322  ①
好,到这里,很接近目标了,发现两个fubu从①开始又有点不同了。
ELC1是,直接条件跳转到我们的目标hook了。
条件跳转就是CMP R0, #1,如果R0里的数据是1,就B到loc_A05DA328  (BEQ=B if equal)
- ROM:A05DA324 00 D0 BEQ loc_A05DA328
复制代码
不妨直接看目标hook的内容。。。
ROM:A05DA328 41 F2 16 EB BLX 0xA081B958
我们就打开winhex跳转到081B958: 00C09FE51CFF2FE1A33A97A0 这是跳转到蓝色地址去的。。。
看SL的这部分
ROM:A029C61C 86 F1 48 E9 BLX 0xA04228B0
我们用winhex跳转到04228B0: 00C09FE51CFF2FE13B489AA0,也是同样的跳转。
把蓝色部分跳转双位取反对比一下。
ELC1:A0973AA3  ;SL7C: A09A483B  //用winhex分别定位到0973AA3和09A483B,还是看不出是否相同。。。
再看原始非IDA反汇编代码。。。
ROM:A029C61C loc_A029C61C ; CODE XREF: ROM:loc_A029C582j
ROM:A029C61C 86 F1 48 E9 BLX 0xA04228B0
ROM:A029C620 D1 E7 B loc_A029C5C6
ROM:A029C620
ROM:A029C622 ; ---------------------------------------------------------------------------
ROM:A029C622 ED F7 8F FA BL sub_A0289B44
ROM:A029C622
ROM:A029C626 ED F7 E2 FA BL sub_A0289BEE
ROM:A029C626
ROM:A029C62A CC E7 B loc_A029C5C6 ROM:A05DA328
ROM:A05DA328 loc_A05DA328 ; CODE XREF: ROM:A05DA324j
ROM:A05DA328 41 F2 16 EB BLX 0xA081B958
ROM:A05DA32C 0E E0 B loc_A05DA34C
ROM:A05DA32C
ROM:A05DA32E ; ---------------------------------------------------------------------------
ROM:A05DA32E
ROM:A05DA32E loc_A05DA32E ; CODE XREF: ROM:loc_A05DA27Ej
ROM:A05DA32E 40 F2 F4 EC BLX 0xA081AD18
ROM:A05DA332 0B E0 B loc_A05DA34C
基本上也已经可以确定A029C61C就是我们要的hook了。
我也懒得做更多对比了。这样基本上是没问题的,如果谨慎点,应该在081B958-04228B0这里做一个反汇编再对比。
如果这里的结构是一样的,证明我们的目标hook跳转到的地方执行的功能是一样的,证明hook移植对了。
测试吧。补丁都是这么移植出来的。ELC1自己动手。我只对跨平台的感兴趣。。。
;关闭滑盖时不跳到桌面v2
;v2 现在不会提示 “是否继续?”
;SL7Cv47
;(p)loquat
029C61C: 86F148E9 C046C046
035B09C: C8F014E9 C046C046
移植记录也上传了。里面有标明颜色的。。。 |
|