SYMBIAN 平台的手机软件破解教程
2010-08-20 01:47:00 来源:WEB开发网替换的时候注意,先把后台运行的callcounter给shutdown掉。替换后重新运行,放到后台,再调到前台,哈哈,那个延时的对话框已经消失了!不过。。不要高兴太早,搞xx和开发一样,要拿出专业精神,多测试测试。好像没什么问题吧?不多菜单 里面还有个Register Now的选项,让人看着不舒服,也可能表示并没有完全xx哦。我们注意到上面的代码,R0的值是从一开始R0所在的内存地方取出来重新赋予的。所以我想,如果一开始就把那个地方写成非0,程序一启动的时候就认为是完全版,就没有register now菜单的出现和任何时间限制了。
好,重新来,继续看右边的Name window窗口,往下拉,找啊找,找啊找。。发现aThankYouForReg这个字符串很醒目,不是么?模仿上面的步骤,跳两次,就找到这些代码了:
.text:100030C0 CMP R0, #0x13 ; Set cond. codes on Op1 - Op2
.text:100030C2 BLE loc_100030D0 ; Branch
.text:100030C4 ADD R4, SP, #0x298 ; Rd = Op1 + Op2
.text:100030C6 LDR R1, =aThankYouForReg ; Load from Memory
.text:100030C8 B loc_100030D4 ; Branch
咦?又拿R0和20天比较?我们看看它能跳到哪里,一看,也是一个感谢注册的信息aThankYouForR_0,后面多了个0,哦,不过没什么差别,都是注册成功,只不过有一个提醒你重新启动手机。不管了,往上走,非常近的地方,关键来了。。
.text:1000309C ADD R0, R7, #0 ; Rd = Op1 + Op2
.text:1000309E MOV R1, SP ; Rd = Op2
.text:100030A0 BL sub_1000340C ; Branch with Link
.text:100030A4 CMP R0, #0 ; Set cond. codes on Op1 - Op2
.text:100030A6 BEQ loc_1000318C ; Branch
.text:100030A8 MOV R0, #0x90 ; Rd = Op2
.text:100030AA BL sub_100061A0 ; Branch with Link
看到了吗?判断R0是否为0,如果是0,就跳到loc_1000318C,如果非0,就显示注册成功的信息。这段代码肯定是尝试输入注册码之后执行的,在这里我们不想通过NOP掉BEQ这段代码来实现注册成功,因为我们并不想自己去输入注册码,而是想直接修改内存中的信息来实现注册。所以,现在就必须看看sub_1000340C这个函数了,右击函数,选择jump immediately,就跳到这个函数了,往下拉,使劲拉啊,一般给R0赋值都在函数快结束的时候哦,好,就在这里:
.text:10003496 BNE loc_1000349A ; Branch
.text:10003498 MOV R1, #1 ; Rd = Op2
.text:1000349A
.text:1000349A loc_1000349A ; CODE XREF: sub_1000340C+8A
.text:1000349A CMP R1, #0 ; Set cond. codes on Op1 - Op2
.text:1000349C BNE loc_100034A2 ; Branch
.text:1000349E MOV R0, #0 ; Rd = Op2
更多精彩
赞助商链接