WEB开发网
开发学院手机开发Symbian 开发 SYMBIAN 平台的手机软件破解教程 阅读

SYMBIAN 平台的手机软件破解教程

 2010-08-20 01:47:00 来源:WEB开发网   
核心提示:LDR是load from memory的意思,从内存中读取这个字符串,SYMBIAN 平台的手机软件破解教程(2),在下面不远的地方,你会看到有多少天试用时间剩余的信息:.text:10000620 LDR R1, =aDayLeft_ ; Load from Memory这一堆的代码是未注册版本才会调用的,这是BE

LDR是load from memory的意思,从内存中读取这个字符串。在下面不远的地方,你会看到有多少天试用时间剩余的信息:

.text:10000620 LDR R1, =aDayLeft_ ; Load from Memory

这一堆的代码是未注册版本才会调用的,以提示用户还有多少天可用。要xx它,就必须跳过这些代码的执行。我们往上检查代码,注意左边红色的线条,这都是条件判断的转向,就是xx的关键。上面不远处我们发现了:

.text:100005C2 B loc_10000678 ; Branch

B就是无条件跳转,程序运行到这里,都会无条件转到loc_10000678处继续运行,右击loc_10000678,选择jump immediate,就能跳到该处,到这里一看,注意了没有,已经跳过了剩余多少天的提示信息代码的执行。如何让这个B得以执行呢?继续往上走:

.text:10000576 CMP R6, #0x13 ; Set cond. codes on Op1 - Op2

.text:10000578 BLE loc_100005C4 ; Branch

第一行是比较R6和16进制数13的大小,13h就是十进制的20,就是该软件的试用期限,BLE表示如果R6小于或等于20的时候,会跳转到 loc_100005c4,就是说在试用期之内啦。我们到那儿看看,发现下面就是显示你还有多少天剩余的信息了,不过这个跳转已经跳过了我们要找的B,所以,B执行的条件就是超过20天后,哈哈,原来我们刚才要找的B的执行结果却是软件过期的提示。。

那我们只好继续往上走了,想想,如果是已经注册版本,不就不会检查试用天数么?看来我们必须要它跳过比较R6和0x13的命令。同上面一样,不远的地方,我们找到了:

.text:1000054E LDR R0, [R0] ; Load from Memory

.text:10000550 CMP R0, #0 ; Set cond. codes on Op1 - Op2

.text:10000552 BEQ loc_10000556 ; Branch

.text:10000554 B loc_1000068A ; Branch

看来R0的值是个关键,如果R0等于0,就会按照BEQ的命令,去检查试用天数,如果R0不等于0,就B到loc_1000058A,跟过去看看,这段程序已经基本结束了。看来R0如果非0,就表示是注册版本。

好了,我们开始动手,把BEQ loc_10000556这段代码“注释”掉,用NOP命令填充,用鼠标点一下BEQ的位置,看看状态栏的显示000005CE,然后用 UltraEdit打开callcounter.app文件,转到0x5CE位置,看两个字节:00 D0,这是BEQ loc_...这条命令的二进制表示。在ARM的thumb方式汇编中,NOP的二进制是C0 46,现在我们可以用c0 46来替换00

Tags:SYMBIAN 平台 手机

编辑录入:coldstar [复制链接] [打 印]
赞助商链接