powerbuilder防止反編譯: pbkiller無法解析的部分公布

來源:互聯網
上載者:User

powerbuilder防止反編譯: pbkiller無法解析longlong類型而且錯得一塌糊塗

 

pbkiller2.5.18無法解析longlong類型,一旦你申明longlong類型無法反編譯出類型,值也不對,因為longlong採用類似指標的方式存放值。

 

只要在代碼中如此寫:

int aaa =100
long bbb = 1000
longlong ccc = 20000
boolean ddd = false
datawindow dwx

aaa = 2 - 3
bbb = 1 -2
ccc = ((((((aaa + ccc *aaa + ccc))))))

return 1

 

反編譯出來是:
integer aaa = 100
long bbb = 1000
 ccc = 8
boolean ddd = false
datawindow dwx

aaa = 2 - 3
bbb = 1 - 2
ccc.commit using aaa;
aaa.pbm_bmgetstate.commit using pbm_bmgetstate;
return
return
return

 

 

補充:

同樣的,只要出現longlong類型的字面量,都會出現解析不到的問題

source:

return 1
return 10
return 100
return 1000
return 10000
return 100000
return 1000000
return 10000000
return 100000000
return 1000000000
return 10000000000
return 100000000000
return 1000000000000
return 10000000000000
return 100000000000000
return 1000000000000000
return 10000000000000000
return 100000000000000000
return 1000000000000000000
return 10000000000000000000

 

反編譯後:

do

 do

  do

   do

    do
     return 1
     return 10
     return 100
     return 1000
     return 10000
     return 100000
     return 1000000
     return 10000000
     return 100000000
     return 1000000000
     return
     return
     destroy(?????)
     return
     return
     return
     return
     return primary
     return
     return
    loop while 0

   loop while "       "

  loop while

 loop while

loop while

return

 

/*================*/

20090822:今天在寫一個demo時,發現pbkiller在解析參引對象列表時存在問題:

type strc_333 from structure
 blob  aaa
 blob  aaax[255]
 blob  aaay[255,254,253,252]
 blob  aaa1
 blob  aaa2
 boolean  bbb
 char  ccc
 date  eee
 datetime  fff
 decimal  ggg
 decimal  ggg0
 decimal  ggg1
 decimal  ggg2
 decimal  ggg3
 decimal  ggg4
 decimal  ggg5
 decimal  ggg6
 decimal  ggg7
 decimal  ggg8
 decimal  ggg9
 decimal  ggg10
 decimal  ggg11
 decimal  ggg12
 decimal  ggg13
 decimal  ggg14
 decimal  ggg15
 decimal  ggg16
 decimal  ggg17
 decimal  ggg18
 double  jjj
 integer  kkk
 long  lll
 ???????  mmm
 string  nnn
 time  ppp
 uint  qqq
 ulong  rrr
 real  sss
 any  ttt
 accessibility  t1
 accessiblestate  t2
 adoresultset  t3
 application  t4
 arraybounds  t5
 checkbox  t6
 classdefinition  t7
 classdefinitionobject  t8
 commandbutton  t9
 connection  t10
 connectioninfo  t11
 connectobject  t12
 contextinformation  t13
 contextkeyword  t14
 corbabadcontext  t15
 corbabadinvorder  t16
 corbabadoperation  t17
 corbabadparam  t18
 corbabadtypecode  t19
 corbacommfailure  t20
 corbacurrent  t21
 corbadataconversion  t22
 corbafreemem  t23
 corbaimplimit  t24
 corbainitialize  t25
 corbainternal  t26
 corbaintfrepos  t27
 corbainvalidtransaction  t28
 corbainvflag  t29
 corbainvident  t30
 corbainvobjref  t31
 corbamarshal  t32
 corbanoimplement  t33
 corbanomemory  t34
 corbanopermission  t35
 corbanoresources  t36
 corbanoresponse  t37
 corbaobjadapter  t38
 corbaobject  t39
 corbaobjectnotexist  t40
 corbapersiststore  t41
 corbasystemexception  t42
 corbatransactionrequired  t43
 corbatransactionrolledback  t44
 corbatransient  t45
 corbaunion  t46
 corbaunknown  t47
 corbauserexception  t48
 cplusplus  t49
 datastore  t50
 datawindow  t51
 datawindowchild  t52
 dividebyzeroerror  t53
 dragobject  t54
 drawobject  t55
 dropdownlistbox  t56
 dropdownpicturelistbox  t57
 dwobject  t58
 dwruntimeerror  t59
 dynamicdescriptionarea  t60
 dynamicstagingarea  t61
 editmask  t62
 enumerationdefinition  t63
 enumerationitemdefinition  t64
 environment  t65
 error  t66
 errorlogging  t67
 exception  t68
 extobject  t69
 function_object  t70
 graph  t71
 graphicobject  t72
 graxis  t73
 grdispattr  t74
 groupbox  t75
 hprogressbar  t76
 hscrollbar  t77
 htrackbar  t78
 inet  t79
 internetresult  t80
 jaguarorb  t81
 line  t82
 listbox  t83
 listview  t84
 listviewitem  t85
 mailfiledescription  t86
 mailmessage  t87
 mailrecipient  t88
 mailsession  t89
 mdiclient  t90
 menu  t91
 menucascade  t92
 message  t93
 multilineedit  t94
 nonvisualobject  t95
 nullobjecterror  t96
 olecontrol  t97
 olecustomcontrol  t98
 oleobject  t99
 oleruntimeerror  t100
 olestorage  t101
 olestream  t102
 oletxnobject  t103
 omcontrol  t104
 omcustomcontrol  t105
 omembeddedcontrol  t106
 omobject  t107
 omstorage  t108
 omstream  t109
 orb  t110
 oval  t111
 pbtocppobject  t112
 pbxruntimeerror  t113
 picture  t114
 picturebutton  t115
 picturehyperlink  t116
 picturelistbox  t117
 pipeline  t118
 powerobject  t119
 profilecall  t120
 profileclass  t121
 profileline  t122
 profileroutine  t123
 profiling  t124
 radiobutton  t125
 rectangle  t126
 remoteobject  t127
 resultset  t128
 resultsets  t129
 richtextedit  t130
 roundrectangle  t131
 runtimeerror  t132
 scriptdefinition  t133
 service  t134
 simpletypedefinition  t135
 singlelineedit  t136
 sslcallback  t137
 sslserviceprovider  t138
 statichyperlink  t139
 statictext  t140
 structure  t141
 systemfunctions  t142
 tab  t143
 throwable  t144
 timing  t145
 traceactivitynode  t146
 tracebeginend  t147
 traceerror  t148
 traceesql  t149
 tracefile  t150
 tracegarbagecollect  t151
 traceline  t152
 traceobject  t153
 traceroutine  t154
 tracetree  t155
 tracetreeerror  t156
 tracetreeesql  t157
 tracetreegarbagecollect  t158
 tracetreeline  t159
 tracetreenode  t160
 tracetreeobject  t161
 tracetreeroutine  t162
 tracetreeuser  t163
 traceuser  t164
 transaction  t165
 transactionserver  t166
 treeview  t167
 treeviewitem  t168
 typedefinition  t169
 userobject  t170
 variablecardinalitydefinition  t171
 variabledefinition  t172
 vprogressbar  t173
 vscrollbar  t174
 vtrackbar  t175
 window  t176
 windowobject  t177
 m_1  t200
 m_2  t201
 m_3  t202
 m_4  t203
 m_5  t204
 m_6  t205
 m_7  t206
 m_8  t207
 m_9  t208
 m_10  t209
 m_11  t210
 m_12  t211
 m_13  t212
 m_14  t213
 m_15  t214
 m_16  t215
 m_17  t216
 m_18  t217
 m_19  t218
 m_21  t220
 m_22  t221
 m_23  t222
 m_24  t223
 m_25  t224
 m_26  t225
 m_27  t226
 m_28  t227
 m_29  t228
 m_31  t230
 m_32  t231
 m_33  t232
 m_34  t233
 m_35  t234
 m_36  t235
 m_37  t236
 m_38  t237
 m_39  t238
 m_41  t240
 m_42  t241
 m_43  t242
 m_44  t243
 m_45  t244
 m_46  t245
 m_47  t246
 m_48  t247
 m_49  t248
 m_51  t250
 m_52  t251
 m_53  t252
 m_54  t253
 m_55  t254
 m_56  t255
 m_57  t256
 m_58  t257
 m_59  t258
 m_61  t260
 m_62  t261
 m_63  t262
 m_64  t263
 m_65  t264
 m_66  t265
 m_67  t266
 m_68  t267
 m_69  t268
 m_71  t270
 m_72  t271
 m_73  t272
 m_74  t273
 m_75  t274
 m_76  t275
 m_77  t276
 m_78  t277
 m_79  t278
 m_81  t280
 m_82  t281
 m_83  t282
 m_84  t283
 m_85  t284
 ??????  t285
 ??????  t286
 ??????  t287
 ??????  t288
 ??????  t290
 ??????  t291
 ??????  t292
 ??????  t293
end type

 

紅色問號部分為無法解析的部分。一般而言,參引對象列表系統的一共177個內建對象。我又加了100個menu對象。很明顯作者認為最多可以引用255個。其實不然。參引對象可以多達32768個。

 

//20090820:補充

type strc_111 from structure
 string  ccc
 string  ccc1[12]                              //source為ccc1[2 to 12];看來沒有搞定所有的聲明方式。
 string  ccc2[65535]
 string  ccc3[255,255]
 string  ccc4[255,255,255]
 string  ccc5[255,255,255,255]
end type

 

//20090821:

在uo或win的instance和shared區分別申明兩個int變數:

instance : int ii_111 = 65535      //反編譯為-1

shared:    int si_222 = 65535     //反編譯為65535,從儲存本質來看,是沒問題,但是參與其他提升計算就會有問題。

//20090822

發現枚舉類型它無法反編譯得到初始值。

alignment lal_111= left!
alignment lal_222= right!
alignment lal_333= center!

 

//20090823

一個變數的申明格式如:{access-right,accessread,accesswrite} datatype{size}{precision} varname

pbkiller對access部分沒有解析,也就是public,private,protected等。對constant也沒解析,對size部分和precision部分都沒有解析,就是其他篇裡指出的如:blob{255} var1和dec{4} var2這樣的情況沒有得到解析。可見,其還是非常欠缺的。

 

//20090903

uing u1 = 65537    //模數應該是 u1 = 1,但是它沒有處理。只是顯示65537.

 

//20090903:

real = 100.01,測試反編譯值是錯誤的。可能是用c++的unsigned int去取值,然後轉成double處理的。證明是錯誤的。real應該轉c++的float才是正確的。我在做decompiler時也犯同樣錯誤,後面改為

float f1;

memcpy(&f1,&uint1,4),這樣處理即ok。

 

//20090903

ulong c3 = 4294967294  反編譯為-2
ulong c4 = 4294967295  反編譯為-1

dec{16} dec{17}dec{18}的變數初值錯誤。

 

很明顯是用c++的unsigned __int32去取得pb的四位ulong值,但是顯示時要IntToStr(),這個函數支援int和__int64兩種,很明顯作者並未進行強制轉換,致使出現-2,-1的錯誤。

 

 

鑒於目前pb6-9使用很普遍。這裡給大家提個醒,可以利用pbkiller的bug防止關鍵資料。如果作者不更新的話(目前看的使用形式看,他不會更新了,因為pb已經不熱了。而且他軟體是免費的,缺少原動力。)這些問題永遠都會存在的。我們善加利用之。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.