6688经验半月谈( 三 )


CALL 39491A,我们在56中找到这个地方,拷贝一定数量的字节,然后在5508中寻找相同的部分,我找到两处,在去除跳跃地址的影响,和对后面的比对,找到一处在3C7F4 。然后搜索DAD3F4C7,找到一处0x3634a6 。比对和56其他部分,发现相同 。因为除调用地址不同,其他指令应该相同 。认定这就是5508中#键的处理 。在根据和56中相同的偏移量找到表示符15 04(0415),然后从SL456688i的修改中,找到收件箱的地址和标示 。分别为DAD360A0:38 01 把此值放于对因位置 。写入开机,发现#的功能已变为收件箱 。当然这是很幸运的,估计更多的时候是错误,因为这里有很多的猜测和运气 。但这是一种方法,你可以用这个来测试其他的函数入口 。因为Crack本来就需要很多的猜测和运气 。比如我看到"读C"得下一个地址DAD15A06 (31065A),放进去,发现是用户群组 。
好了,很累了,就先写这些吧!另外我发现写MAP只是写了上面的四个Block,根本不必非的在98下写,我会在写一篇关于如何写MAP的 。
本来还向介绍一下西门子的函数库Bfb95eg.dll的一些内容,这个库是很重要的,有很多的软件用它来和手机进行通讯,它可以把启动代码载入到手机上执行,读写一些块更是小意思 。国外的一些网站对它研究很深,他们把它反汇编了,然后再还原成Dephi代码 。他对写和西门子的手机通讯程序很有用,比如你想写一个修改手机某些 Block的程序 。如下供参考 。
Function WmobileOn(MobHandle : TmobHandle; Baud : DWord) : Dword; cdecl; external "BFB95EG.DLL"
Disassembled function fith some my coments:
Code:
.text:10011670 ; Exported entry 211. WMobileOn
.text:10011670
.text:10011670 ; --------------- S U B R O U T I N E ------------------------------------
.text:10011670
.text:10011670 ; Attributes: bp-based frame
.text:10011670
.text:10011670 public WMobileOn
.text:10011670 WMobileOn proc near
.text:10011670
.text:10011670 BaudRate = dword ptr -4
.text:10011670 MobHandle = dword ptr 8
.text:10011670
.text:10011670 push ebp
.text:10011671 mov ebp, esp
.text:10011673 push ecx
.text:10011674 lea eax, [ebp BaudRate] ; LOAD Effective Address
.text:10011677 push eax
.text:10011678 mov ecx, [ebp MobHandle]
.text:1001167B push ecx
Get Com port Baud rate Code:
.text:1001167C call WGetComConfiguration ; Call Procedure
.text:10011681 add esp, 8 ; Add
.text:10011684 test eax, eax ; Logical Compare
.text:10011686 jnz short Configure_ComPort ; Jump if Not Zero (ZF=0)
If Success then jump to configure Com port, else jump to ErrorRet label Code:
.text:10011688 xor eax, eax ; Logical Exclusive OR
.text:1001168A jmp ErrorRet ; Jump

推荐阅读