PowerBuilder prevents decompilation: pbkiller cannot parse the Longlong type and the error is a mess.
Pbkiller2.5.18 cannot parse the Longlong type. Once you declare that the Longlong type cannot be decompiled, the value is incorrect because Longlong uses a pointer-like method to store the value.
As long as you write in the Code as follows:
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
Decompilation:
Integer AAAS = 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
Supplement:
Similarly, as long as there is a Longlong literal, there will be issues that cannot be parsed.
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
After decompilation:
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: When I wrote a demo today, we found that pbkiller had a problem in parsing the list of parameter reference objects:
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 tworkflow
Service t134
Simpletypedefinition t135
Singlelineedit t136
Sslcallback tstrap
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 Tsung
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
The red question mark cannot be parsed. Generally, the system has a total of 177 built-in objects. I added 100 more menu objects. Obviously, the author believes that up to 255 references can be referenced. Actually not. Up to 32768 parameter reference objects can be created.
// 20090820: Supplement
Type strc_111 from Structure
String ccc
String ccc1 [12] // source is ccc1 [2 to 12]; it seems that no declaration method is completed.
String ccc2 [65535]
String ccc3[ 255,255]
String ccc4 [255,255,255]
String ccc5 [255,255,255,255]
End type
// 20090821:
Declare two int variables in the uo or win instance and shared areas:
Instance: int ii_111 = 65535 // decompiled to-1
Shared: int si_222 = 65535 // decompilation is 65535. In terms of storage nature, it is okay, but there will be problems when you participate in other computing improvements.
// 20090822
The enumerated type cannot be decompiled to obtain the initial value.
Alignment lal_111 = left!
Alignment lal_222 = right!
Alignment lal_333 = center!
// 20090823
The Declaration format of a variable is {access-right, accessread, accesswrite} datatype {size} {precision} varname.
Pbkiller does not parse the access part, that is, public, private, and protected. Constant is not parsed, and size and precision are not parsed, as shown in other articles: blob {255} var1 and Dec {4} var2 are not parsed. It can be seen that it is still very lacking.
// 20090903
Uing U1 = 65537 // The modulo should be U1 = 1, but it is not processed. Only display 65537.
// 20090903:
Real = 100.01. The Decompilation value is incorrect. C ++'s unsigned int may be used to take the value and convert it to double. The proof is wrong. Real should be converted to C ++ float. I made the same mistake when I was doing decompiler.
Float F1;
Memcpy (& F1, & uint1, 4.
// 20090903
Ulong C3 = 4294967294 decompile to-2
Ulong C4 = 4294967295 decompile to-1
The variable Initial Value of Dec {16} dec {17} dec {18} is incorrect.
Obviously, C ++'s unsigned _ int32 is used to obtain the four-digit ulong value of Pb, but inttostr () is required for display. This function supports int and _ int64, obviously, the author did not perform a forced conversion, resulting in the error of-2,-1.
Given that pb6-9 is currently widely used. Here we will remind you that the bug of pbkiller can be used to prevent key data. If the author does not update the data, the data will not be updated because Pb is no longer popular. And the software is free of charge and lacks motivation .) These problems will always exist. We make good use of it.