******************************************************************************************
****				PowerBuilder反编译器 DEMO V2010.10.02				******
******************************************************************************************

功能：
反编译powerbuilder编译后的pbd文件，支持版本5；6.5；7；8；9；10；10.5；11；11.5；12；PKB2.5共计11个版本。
改进完善后主要用于工程文档丢失后的恢复，即工程恢复。

在此demo中释放出全部版本作为测试，囊括了5-12的全部常用版本。

*******************************************************************************************
DEMO限制说明

出于保护他人软件的考虑，本软件并不会完全开放或者免费提供。能从互联网上得到的该软件程序，一定是经过
条件编译有所限制的，是不可能通过破解来达到增加功能的目的。
*******************************************************************************************

Demo中有如下限制，使得本软件仅仅用于测试和评估，而不会对他人的权益造成危害。

请如此测试：
A。标记代码：
	请在对象的Instance var区增加如下两个变量：
	string is_demo = "aaaaaaaa.....aaaaaaaa"               //共200个字母a，小写；
	long il_demo = 123456789

	请同时在对象的Shared Var区增加两个变量：
	string ss_demo = "aaaaaaaa.....aaaaaaaa"               //共200个字母a，小写；
	long sl_demo = 123456789

	增加这四个变量申明后，将你自己的测试代码编译成pbd；

	但仍受到如下Demo限制，不要期望我发布一个"完全"版本给大家测试，这是永远不可能的。望见谅：
	1。只能查看包括对象在内的9个控件(根容器算一个控件，如w_main算第一个控件，他上面放一个按钮算第二个控件)，
	      每个控件下的事件和函数也只能看到不超过9个；
	2。SQL语句在一段代码中不得超过3个(包括select into,select blob,update blob,dynamic sql,cursor等)；
	3。条件判断和跳转语句，如if  end if，do while for next等逻辑判断和跳转结构体，总数量不超过12个；

B。非标记代码：
	1。只能查看包括对象在内的4个控件(根容器算一个控件，如w_main算第一个控件，他上面放一个按钮算第二个控件)，
	      每个控件下的事件和函数也只能看到不超过4个；
	2。SQL语句在一段代码中不得超过3个(包括select into,select blob,update blob,dynamic sql,cursor等)；
	3。条件判断和跳转语句，如if  end if，do while for next等逻辑判断和跳转结构体，总数量不超过12个；
	4。connect所在代码段无法看到；(保护数据库连接参数)
	5。disconnect所在代码段无法看到；(保护数据库连接参数)
	6。halt and halt close所在代码段无法看到；(保护数据库连接参数)
	7。行数大于40行的代码段无法看到。


被限制的代码段有提示：
	/*Expression is Empty or Demo Limit*/

另两种代码为空白的情况，是本身就是为空，不是反编译器无法解析：
	如果你自定义某个事件或者函数，然后删除它的全部代码，其函数名仍然保存着，反编译出来代码为空，也不会显示上面
	的提示，请注意区别，并不是程序原因造成，是因为代码本身就是空的。请核对你自己的源代码以了解这种情况。

	此外。这样的空代码也是经常存在的：
	on uo_yy.create
      	        //empty
	end on

	on uo_yy.destroy
	        //empty
	end on

********************************************************************************************
#	DataWindow请用RecoveryDW文件夹内的程序来恢复，它利用的是pb自己的函数来还原，它是pb开源代码。
#	本软件也可以直接打开PBL文件，读取里面的编译码和源码。当你没有安装所有的PB版本时，这个功能能帮你方便查看。
#	在右边的RichEdit中按住鼠标左键，滚动滑轮，可以放大文字。
# 	对于继承自父级的对象，需要先打开父级对象，如一个pbd中包含w_center,w_main；w_main继承自w_center，只打开一次pbd是无法
	得到它的所有属性的，因为他的属性首先得继承父对象的属性的public和protect。请选择打开该pbd，然后再次选择打开。第二次时
	将向前追溯第一个pbd中得到的w_center的属性作为w_main的继承属性。(因在一个pbd中，排列顺序决定了不一定先分析到w_center)
#	如果PowerShield混淆过的代码，会在文件列表处显示Encrypt字样,在代码段也会提示：//expression is Encryption!
	如果PBobfuscator混效过的代码，反编译器打开文件会卡死。
#	debug菜单中的灰色菜单是在正常使用时不需要的菜单，编译时已经变灰色；仅供作者打断点用。
#	默认的事件return语句：在编译时，只要你没有在event中的最后放置return语句，编译器都将自动放置一个。所以大家看到末尾的
	return不要惊奇。

********************************************************************************************
正在改进的是：
1。Export to PBL；
2。Find功能；
3。取系统内置对象的属性处仍需要改进，目前尚不时遇到0x001D错误；

********************************************************************************************
修改日志：
2010.10.01	修正了字符串续行(&)时排版不整齐问题，现已能对齐左值位置，并向右缩进2个tab。如：
		ls_1 = "aaa" &
			+ "bbb" &
			+ "ccc"
2010.10.01	修正了行缩进和排版
2010.10.01	修正了for...next识别不准的一个bug，减少了一个goto语句
2010.10.01	发布测试版开放所有版本测试
2010.09.29	校验pb5的PBM_EVENTID,修正pb5中select into 和cursor取sql字串时地址的偏差，
2010.09		发布测试版开放9和11
2010.04-09	发布混淆器DEMO和混淆器正式版，在半年期间，反编译与混淆器一起修除bug，完善
2010.03		研究Powershield混淆器原理，写出反混淆程序并验证其可靠性不足
2009.08-2010.03	开发完成反编译器90%工作量
2009.07		研究pbd文件格式

********************************************************************************************
下载位置：	http://chengg0769.download.csdn.net/  以及各大pb群组均有
blog:		http://blog.csdn.net/chengg0769
文字介绍：	http://blog.csdn.net/chengg0769/archive/2010/09/29/5913276.aspx

		请勿在有重要文件的电脑上用UltraEdit 和winhex打开本软件，也不要用任何调试器载入本软件。由此造成的任何后果自负。

********************************************************************************************
因操作简单，故本次demo仅仅说明这些内容，待正式版做成详细说明书。

有任何的意见或建议，请邮件联系。

联系：	chengang0769#21cn.com/chengang0769#google.com	QQ:273939617(不在线时请优先以邮件联系,每晚必收邮件)。
	
	chengang 2010.10.01(国庆 & 嫦娥二号奔月)



