>Which means it afterall may be helpful And I'll repeat that, in relation to native code compilation, they are a waste of money and, frankly, a con. And often use carefully worded sentences to hide their limitations ... > by extracting some part of the real sourcecode No, they can't do this. Really (or at least not in any meaningful sense). The nature of the optimizing compiler is such that there is no one-to-one correspondence between the compiled code and the original source. At best they take a guess at what the source code may have been (and earlier versions of VB Decompiler were more honest about this and pretty much state as much in the documentation) Here, for example, is the full code of a simple VB program: CODEOption Explicit
Private Sub Command1_Click() Text1.Text = "Hello World" End Sub and here is (part of) VB Decompiler 8.1's decompilation of that code (or rather, as previously stated, a disassembly): CODEPrivate Sub Command1_Click() '401AF0 loc_00401AF0: push ebp loc_00401AF1: mov ebp, esp loc_00401AF3: sub esp, 0000000Ch loc_00401AF6: push 00401096h loc_00401AFB: mov eax, fs:[00h] loc_00401B01: push eax loc_00401B02: mov fs:[00000000h], esp loc_00401B09: sub esp, 00000014h loc_00401B0C: push ebx loc_00401B0D: push esi loc_00401B0E: push edi loc_00401B0F: mov var_C, esp loc_00401B12: mov var_8, 00401080h loc_00401B19: mov esi, arg_8 loc_00401B1C: mov eax, esi loc_00401B1E: and eax, 00000001h loc_00401B21: mov var_4, eax loc_00401B24: and esi, FFFFFFFEh loc_00401B27: push esi loc_00401B28: mov arg_8, esi loc_00401B2B: mov ecx, [esi] loc_00401B2D: call [ecx+04h] loc_00401B30: mov edx, [esi] loc_00401B32: xor edi, edi loc_00401B34: push esi loc_00401B35: mov var_18, edi loc_00401B38: call [edx+00000300h] loc_00401B3E: push eax loc_00401B3F: lea eax, var_18 loc_00401B42: push eax loc_00401B43: call [00401018h] [magenta]; Set (object)[/magenta] loc_00401B49: mov esi, eax loc_00401B4B: push 00401524h [/magenta]; "Hello World"[/magenta] loc_00401B50: push esi loc_00401B51: mov ecx, [esi] loc_00401B53: call [ecx+000000A4h] loc_00401B59: cmp eax, edi loc_00401B5B: fclex loc_00401B5D: jnl 401B71h loc_00401B5F: push 000000A4h loc_00401B64: push 0040153Ch loc_00401B69: push esi loc_00401B6A: push eax loc_00401B6B: call [00401010h] loc_00401B71: lea ecx, var_18 loc_00401B74: call [00401078h] loc_00401B7A: mov var_4, edi loc_00401B7D: push 00401B8Fh loc_00401B82: jmp 401B8Eh loc_00401B84: lea ecx, var_18 loc_00401B87: call [00401078h] loc_00401B8D: ret Good luck in extracting your source from that ... |
|