|
palm软件破解DIY
- @7 o- K& U' ^5 s# j# r1 q( E1 Y
- Q( D2 V6 k% r: E# _4 \# m1、需要的基础 需要有一定的汇编知识,对PalmOS的API有初步了解,如果想自己写一个注册机,则还要求你掌握至少一种高级语言编程(如C、VB、Delphi等)。 1.1 68K汇编知识 如果你对汇编一无所知,那可能需要先熟悉一下汇编的基础知识和几条68K汇编指令。其实搞破解并不要求你精通汇编,在破解过程中经常碰到的也就是那么几条指令,遇到确实不能理解而又必须理解它意思的其它指令时可以查相关手册。在此我先简单地介绍一下常用的68K汇编指令。 在破解过程中,经常会碰到几种寄存器,它们是数据寄存器D0、D1、…D7,地址寄存器A0、A1、…、A7(上述两种寄存器都是4字节的,每个字节由8个二进制位构成),还有一个状态标志寄存器(它由几个二进制状态标志位组成,每一位根据当前机器所运行的指令进行置1或清0,常用的标志位有:Z零标志位,C进位标志,V溢出标志,N辅助进位标志等),这些状态标志位常用作程序跳转的条件,即根据某一状态标志位是0还是1执行不同的代码。地址寄存器A7在68K中是用作堆栈指针的,A5一般是用于指定程序中全局变量存放的基地址,而A6经常在函数调用时作为所传递的参数指针。 指令的通用格式: 指令码 <源操作数> <目的操作数> 指令执行的结果一般都会放入目的操作数,有些指令可能没有操作数,也可能只有一个操作数(此时它可能即是源操作数,也是目的操作数)。 数据传送指令MOVE。它相当于其它高级语言中的赋值语句,是将一个源操作数赋值给一个指定的目的操作数,操作数有很多种,具体情况在碰到时再加以说明。MOVE指令有许多变种,如MOVEQ、MOVE.B、MOVE.W、MOVE.L、MOVEA.L等等,意思都差不多,只是操作数的位数或者对象不同(B表示8位的字节操作、W表示16位的字操作、L表示32位双字操作,而MOVEA指令专用于操作地址寄存器),如MOVE.B D0, D1指令,就是指将数据寄存器D0的低8位数据送入D1的低8位。 加法指令ADD,同样根据所操作的位数的不同,也有一些变种。如ADDQ.L #4, A2指令(其中的#4代表这是一个10进制数),是将地址寄存器A2的值加4,结果仍存放在A2中。有时在PrcEdit中会出现ADDI.W #127!$7f, D0这样的指令,#127!$7f其实只是一个数,#127是这个数的十进制表示,而$7f是这个数的十六进制表示,这条指令是将D0的低2字节加上127。 减法指令SUB,和加法指令很类似。 乘法指令MULU及MULS,前者是不带符号位,后者是不带符号位的乘法。 除法指令DIVU及DIVS,和乘法指令类似。 清零指令CLR,将指定寄存器或指定内存地址的内容清零。 交换指令SWAP,将一个指定32位数的低16位和高16位进行交换。 还有各种跳转指令,如BNE,BEQ,BCS,BRA,JSR等等,这是在破解时最常碰到的,如果遇到不清楚的跳转指令,可以查阅相关手册,一定要搞清楚跳转的条件,不要弄错了。' ~6 h! m3 w& U z3 B, f9 p' u
8 e* G2 A, O( c
1.2 PalmOS基础2 a* l2 m$ d5 z) M4 z9 E
在反汇编后的代码中,会出现一些以sysTrap字符串开头的PalmOS的API函数,如sysTrapFrmInitForm,它们一般都需要以当前堆栈中的数据作为参数,很多时候还会返回一个值。在具体碰到时你可以查阅相关的PalmOS SDK文档。 1.3 参考文档 基础的东西就简单说这么多,在此列出一些有用的参考文档,以便在需要时方便查阅。 M68000程序员参考手册,这是一本介绍68K系列CPU指令的手册。 Palm-Keygenz-HandBook,一份很好的破解教学资料,建议详细阅读。 Palmwarez - Cracking Tutorial,也是一个破解教学,主要介绍用Southdebugger软件来 破解软件的方法,虽然Southdebugger软件在PalmOS5的模拟器上不能使用, 但其中所介绍的一些方法仍值得借鉴。 Palm编程加密方法,加密与破解是一对孪生兄弟,所以有必要看一看。 Palm OS Reference,PalmOS SDK的API参考,需要时可以查阅。 下面我以一个实例来讲述如何生成一个注册机。
4 _2 b& D9 m4 y6 \9 p6 q3 D) R
8 m& q% m2 R7 ]1 W2、反汇编工具及要破解的软件 在这里,我所使用的反汇编工具为PrcExplorer1.0版和PrcEdit 2.3版,准备破解的软件为BatteryLine1.31。
! P, t, k8 v, Q; j
4 T- I2 W8 ?2 j$ K# ?7 y 2.1 用PrcExplorer查找需关注的资源标识 PrcExplorer主要是方便查看软件运行时的各种界面,这样不需要在模拟器或实际的PDA上安装该软件就可以大致了解软件的运行情况。PrcExplorer的运行界面如图1所示。
2 e: t/ s$ F! ?/ @+ q6 m# R9 K: K0 c& S3 `% U& ?2 R
自己下载附件慢慢看。。。 |
|