Hướng dẫn sử dụng VBReFormer Desktop
Hướng dẫn sử dụng VBReFormer Desktop: cài đặt, kích hoạt giấy phép, đọc bảy chế độ xem, phân tích tệp nhị phân, xuất dự án VB6 mở lại được trong IDE.
Cập nhật ngày 20/09/202614 chương
Ứng dụng được cài đặt trên máy Windows của bạn. Nó mở các tệp thực thi Visual Basic 5 và 6 của bạn, tái tạo mã nguồn của chúng và trả lại cho bạn một dự án mà VB6 IDE có thể mở lại – cùng với bộ công cụ đầy đủ: byte, tài nguyên, trình thiết kế, đồ thị, tham chiếu chéo và bản vá nhị phân.
Lưu ý về bản dịch. Giao diện của ứng dụng máy tính để bàn có sẵn bằng tiếng Anh, tiếng Pháp và tiếng Tây Ban Nha; không có phiên bản tiếng Việt. Trong tài liệu hướng dẫn này, tên các menu và chế độ xem được trích dẫn bằng tiếng Anh đúng như hiển thị trong ứng dụng, kèm theo bản dịch tiếng Việt trong ngoặc đơn ở lần xuất hiện đầu tiên.
1. Cài đặt
VBReFormer Desktop được phân phối dưới dạng trình cài đặt MSI, mỗi ngôn ngữ giao diện một gói. Gói cài đặt tự chứa (self-contained): nó nhúng sẵn mọi thứ cần thiết, không có framework nào phải cài đặt trước.
| yêu cầu | |
|---|---|
| Hệ thống | Windows 10 phiên bản 1607 trở lên, hoặc Windows 11 |
| Kiến trúc | x64 |
| Framework | không – gói cài đặt tự chứa |
| Kết nối | cần thiết để dịch ngược và xác thực giấy phép |
| Ngôn ngữ giao diện | tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha |
Windows XP, Vista, 7 và 8 không được hỗ trợ. Ứng dụng dựa trên một nền tảng đòi hỏi tối thiểu Windows 10. Nếu máy của bạn cũ hơn, VBReFormer Online hoạt động trong mọi trình duyệt, trên mọi hệ thống – đó là con đường được khuyến nghị trong trường hợp này.
Nơi engine hoạt động
Ứng dụng chạy cục bộ; tuy nhiên, việc tái tạo mã diễn ra trên máy chủ của chúng tôi. Đó chính là ý nghĩa của tên phiên bản – Desktop + Cloud. Mọi thứ được đọc từ tệp – định dạng, byte, disassembly (phân rã mã máy), tài nguyên – đều được tính toán trên máy của bạn; mọi thứ được tái tạo đều đi qua dịch vụ.
Hộp thoại Help ▸ About (Trợ giúp ▸ Giới thiệu) cho bạn biết bất cứ lúc nào phiên bản của engine được kết nối, phiên bản của hợp đồng, và danh sách capabilities served (các khả năng được cung cấp) – hữu ích khi một tính năng không xuất hiện: nếu nó không có trong danh sách đó, thì không phải giao diện từ chối nó.
2. Kích hoạt giấy phép của bạn
Không có giấy phép, ứng dụng vẫn mở và hoạt động: bạn có thể khám phá một tệp nhị phân, đọc toàn bộ disassembly, byte, tài nguyên và trình thiết kế. Những gì giấy phép mở khóa là việc tái tạo mã VB6 và việc xuất dự án.
Mỗi lần một chỗ
Một giấy phép VBReFormer mở một máy trạm tại một thời điểm. Nếu bạn đang dùng nó ở nơi khác, ứng dụng nói rõ điều đó và đưa ra hai lối thoát: chuyển giấy phép sang máy này từ tài khoản của bạn, hoặc thêm một chỗ (seat).
Đó là một sự từ chối mềm: bạn đã thanh toán, không thiếu gì cả. Thông báo nói theo cách đó thay vì trả về một lỗi kỹ thuật.
Một trình duyệt đang mở VBReFormer Online cũng được tính là một chỗ: studio web và ứng dụng máy tính để bàn dùng chung cùng một giấy phép.
3. Cửa sổ
- Mở một tệp nhị phân. File ▸ Open a VB6 binary (Tệp ▸ Mở tệp nhị phân VB6,
Ctrl+O). Các định dạng được chấp nhận là.exe,.dll,.ocxvà.scr. Thanh trạng thái hiển thị quá trình phân tích đang diễn ra, rồi tên tệp và dạng biên dịch của nó – mã native hay P-code. - Duyệt ngăn PROJECT (Dự án). Ở bên trái, tệp nhị phân được trình bày theo cách VB6 nhìn thấy nó: form, lớp, mô-đun và các thủ tục của chúng. Cây được điền theo yêu cầu – mở rộng một nút sẽ yêu cầu các nút con của nó; không có gì được tính toán trước, điều này giữ cho việc mở nhanh ngay cả với một tệp thực thi lớn.
- Chọn một thủ tục. Các chế độ xem của nút đó xuất hiện ở bên phải. Nếu không có chế độ xem nào được cung cấp cho một nút, lý do được ghi trên màn hình thay vì một ngăn trống.
Các ngăn phía dưới
| tab | dùng để làm gì |
|---|---|
| Output (Đầu ra) | nhật ký các thao tác. Nó giữ nguyên ngôn ngữ mà mỗi dòng đã được viết, ngay cả khi bạn đổi ngôn ngữ giao diện – nhật ký là một bản ghi, không phải một màn hình hiển thị. |
| Diagnostics (Chẩn đoán) | những gì engine đã từ chối làm, và tại sao. Phản xạ cần có ngay khi một kết quả làm bạn ngạc nhiên. |
| Analyser (Trình phân tích) | tham chiếu chéo: các nơi gọi một thủ tục, các lần xuất hiện của một ký hiệu. Kết quả có thể nhấp vào. |
Phạm vi truy cập của thành viên
Mỗi thành viên trong cây mang phạm vi truy cập (visibility) đúng như tệp nhị phân khai báo – (Public),
(Private), (Friend). Đây là các từ khóa VB6: chúng không được dịch. Một thành viên mà phạm vi truy
cập không đọc được không mang dấu nào cả: chúng tôi không viết những gì chúng tôi không biết.
4. Bảy chế độ xem
Chúng được sắp xếp thành ba nhóm, và sự phân chia đó cho bạn biết những gì bạn đọc đến từ đâu. Đó là điều hữu ích nhất cần hiểu.
Nhóm “Code” – được tái tạo bằng phân tích
| chế độ xem | hiển thị gì | khi nào nên xem |
|---|---|---|
| Visual Basic 6 | mã nguồn được tái tạo, có cấu trúc | theo mặc định – đây là thứ bạn đang tìm |
| IR | biểu diễn trung gian | để xem engine đã hiểu gì |
| Disassembly | các lệnh máy x86 | để xem bộ xử lý thực thi gì |
| P-code | các opcode của máy ảo VB6 | chỉ với tệp nhị phân P-code |
Đi xuống danh sách này là đi về phía máy. Khi nghi ngờ về một dòng: Visual Basic 6 nói lên ý định, Disassembly nói lên sự thật.
Nhóm “Project files” – được đọc, không phải suy luận
Designer (.frm) (Trình thiết kế), Project (.vbp) (Dự án) và Structure (Cấu trúc). Không có gì ở đây đi qua quá trình tái tạo mã: mọi thứ đều được đọc từ các bảng trong tệp nhị phân, và những gì không đọc được thì được ghi rõ bằng lời thay vì được điền vào. Đây là nhóm đáng tin cậy nhất của sản phẩm, và là nhóm không phụ thuộc vào bất kỳ suy luận nào.
Nhóm “Resources”
Xem chương 9.
5. Quá trình biên dịch giữ lại gì, và vứt bỏ gì
Chương này giải thích tại sao một số phần mã của bạn quay lại gần như nguyên vẹn còn những phần khác lại mang tên kỹ thuật. Quy tắc rất đơn giản:
Những gì Visual Basic cần lúc chạy, nó đã ghi vào tệp: VBReFormer tìm lại được. Những gì nó không còn cần sau khi biên dịch, nó đã vứt bỏ – và không ai có thể khôi phục.
Những gì còn lại: tên form, lớp và mô-đun · tên điều khiển · trình xử lý sự kiện · thành viên public của lớp · mọi thuộc tính giao diện · lời gọi đến VB runtime (635 hàm) · Win32 API (15.680 chữ ký) · cấu trúc của mã · các chuỗi.
Những gì không có trong tệp: chú thích · tên biến cục bộ · tên tham số · hằng số có tên, bị thay
bằng giá trị của chúng · tên thủ tục trong mô-đun .bas · thụt lề gốc · Option Explicit và các
Enum.
Hệ quả thực tế. Các form của bạn quay lại rất dễ đọc. Các mô-đun
.bascủa bạn quay lại đúng, nhưng với tên kỹ thuật (proc_42C506). Chức năng Rename (Đổi tên,F2) tồn tại cho việc đó, và nó lan truyền tên mới đến mọi vị trí gọi trong dự án – xem chương 7.
Hai ví dụ có thể kiểm chứng
Các đoạn trích dưới đây lấy từ SETUP1.EXE, trình hướng dẫn cài đặt đi kèm Visual Basic 6. Microsoft phân phối mã nguồn của nó trong cùng thư mục – vì vậy bạn có thể tự mình làm lại phép so sánh.
Một thủ tục trong mô-đun .bas
Mã nguồn gốc, COMMON.BAS:
Sub AddDirSep(strPathName As String)
If Right(Trim(strPathName), Len(gstrSEP_URLDIR)) <> gstrSEP_URLDIR And _
Right(Trim(strPathName), Len(gstrSEP_DIR)) <> gstrSEP_DIR Then
strPathName = RTrim$(strPathName) & gstrSEP_DIR
End If
End Sub
Do VBReFormer kết xuất:
Public Sub proc_42C506(ByRef arg_8 As String)
If ((Right(Trim(arg_8), Len("/")) <> "/") And (Right(Trim(arg_8), Len("\")) <> "\")) <> 0 Then
arg_8 = (RTrim$(arg_8) & "\")
End If
End Sub
Logic giống hệt nhau, từng dòng một. Right, Trim, Len, RTrim$ được đặt tên; cách truyền
ByRef được suy luận đúng. Ngược lại, tên của thủ tục và tên của tham số bị mất, và các hằng số xuất
hiện dưới dạng giá trị của chúng – trình biên dịch đã thay thế chúng, không phải VBReFormer.
Một trình xử lý sự kiện
Mã nguồn gốc, BEGIN.FRM:
Private Sub cmdExit_Click()
ExitSetup Me, gintRET_EXIT
End Sub
Do VBReFormer kết xuất:
Private Sub cmdExit_Click()
Set var_18 = Me
basSetup1.proc_41CE2D var_18, var_1C
End Sub
Tên của form, tên của nút và tên của trình xử lý đều nguyên vẹn; Me được nhận dạng; mô-đun được
gọi có tên, cho bạn biết phải đi đâu. Chỉ có thủ tục được gọi, nằm trong một .bas, là giữ tên theo
địa chỉ.
Các dấu đánh dấu
VBReFormer không bao giờ đoán. Một giá trị không thể xác lập thì được đánh dấu thay vì bịa ra – một giá trị hợp lý nhưng sai là kết quả tồi tệ nhất mà một trình dịch ngược (decompiler) có thể tạo ra.
| dấu đánh dấu | ý nghĩa | nên làm gì |
|---|---|---|
proc_42C506 |
thủ tục được chỉ định bằng địa chỉ | đổi tên nó (F2) |
var_18, arg_8 |
biến cục bộ hoặc tham số | đọc cách nó được dùng, rồi đổi tên |
vtbl_3C |
lời gọi qua bảng ảo chưa được phân giải | Object Browser thường cho biết đó là thư viện nào |
? |
giá trị chưa xác lập | xem chế độ xem Disassembly tại cùng vị trí |
Một tệp chứa
?sẽ bị VB6 IDE từ chối. Dấu đánh dấu ở đó để bạn quyết định, không phải để được biên dịch lại nguyên trạng.
6. Các công cụ phân tích
Đây là nơi phiên bản máy tính để bàn khác biệt nhất: nó cung cấp một bộ công cụ hoàn chỉnh, trong khi studio web tập trung vào việc đọc, dịch ngược và xuất.
| công cụ | phím tắt | mang lại cho bạn gì |
|---|---|---|
| Analyse references (Phân tích tham chiếu) | Shift+F12 |
các nơi gọi một thủ tục, các lần xuất hiện của một ký hiệu – kết quả có thể nhấp vào, và độ bao phủ được định lượng: những gì phân tích không thấy thì được đếm, chứ không bị bỏ qua trong im lặng |
| Symbol list (Danh sách ký hiệu) | Ctrl+Shift+S |
bản kiểm kê đầy đủ, lọc được theo loại và theo phạm vi – nó phân biệt tên được đọc với tên được tổng hợp |
| Call graph (Đồ thị lời gọi) | Ctrl+Shift+A |
ai gọi gì, ở ba cấp độ, với các bộ lọc nơi gọi / nơi được gọi |
| Control-flow graph (Đồ thị luồng điều khiển) | Ctrl+Shift+G |
hình dạng của một thủ tục: các khối, vòng lặp, cạnh ngược, khối không thể đến được |
| Object Browser (Trình duyệt đối tượng) | Ctrl+Shift+B |
“cái này được định nghĩa ở đâu?” khi câu trả lời nằm bên ngoài tệp nhị phân |
| API Browser (Trình duyệt API) | Ctrl+Shift+P |
nguyên mẫu, bí danh và ghi chú của các khai báo Win32 |
| Cited libraries (Thư viện được tham chiếu) | Ctrl+K |
tệp nhị phân phụ thuộc vào những gì |
| Find VB programs (Tìm chương trình VB) | Ctrl+L |
tìm các tệp thực thi VB trong một thư mục |
| Find (Tìm) | Ctrl+Shift+F |
tìm kiếm văn bản trên các chế độ xem được cung cấp |
| Bookmarks (Dấu trang) | Ctrl+F2 |
đánh dấu các vị trí, quay lại chúng (F8 / Shift+F8) |
| Back / forward navigation (Điều hướng lùi / tiến) | Alt+← Alt+→ |
như trong một trình duyệt |
Tại sao độ bao phủ được định lượng. Đồ thị lời gọi native thấy các lời gọi trực tiếp; nó không thấy các lời gọi qua bảng ảo hay con trỏ hàm. Thay vì trình bày một danh sách không đầy đủ như thể đầy đủ, VBReFormer hiển thị những gì nó bỏ sót, có đếm. Khi đó bạn biết nên tin kết quả đến mức nào.
7. Đổi tên
Đó là thao tác trung tâm khi làm việc trên một tệp nhị phân: trình dịch ngược trả lại cho bạn logic,
bạn trả lại cho nó các tên. F2 trên một ký hiệu, hoặc từ danh sách ký hiệu.
Hộp thoại hiển thị ba điều mà các trình dịch ngược thường che giấu:
- nguồn gốc của tên hiện tại – do bạn đặt, do trình dịch ngược suy luận, hoặc được tái tạo;
- các đề xuất của trình dịch ngược, mỗi đề xuất kèm độ ưu tiên và nguồn mà nó đến từ;
- tên gốc, mà bạn luôn có thể quay lại.
Đổi tên có tính toàn cục. Đổi tên một thủ tục một lần, và các vị trí gọi trong các mô-đun khác sẽ theo sau – kể cả những mô-đun bạn chưa mở.
Một lần đổi tên bị từ chối luôn bị từ chối kèm lý do. Hai trường hợp thường gặp: engine không công bố khả năng đổi tên trên tài liệu này, hoặc chế độ xem hiện tại chỉ mang các mảnh từ vựng – đủ để tô màu văn bản, không đủ để chỉ định một thực thể. Trong cả hai trường hợp, thông báo nói rõ điều đó, thay vì không làm gì cả.
8. Byte và bản vá nhị phân
Navigate ▸ Show bytes (Điều hướng ▸ Hiển thị byte, Ctrl+Shift+H) mở chế độ xem hex có chú giải:
nó không chỉ hiển thị các byte, nó cho biết mỗi vùng đại diện cho gì. Go to address (Đi tới địa chỉ,
Ctrl+G) đưa bạn thẳng đến đó.
Sửa đổi tệp thực thi
Chế độ “raw” (thô) cho phép bạn ghi byte và tạo ra một tệp thực thi đã sửa đổi. Nó được đóng khung bởi bốn sự từ chối, và mỗi sự từ chối bảo vệ một điều gì đó:
| từ chối | tại sao |
|---|---|
| Tệp được phân tích không bao giờ là đích đến | engine không bao giờ mở nó để ghi; giao diện không phá bỏ bảo đảm đó |
| Ghi đè một tệp hiện có phải được xác nhận | “việc này không thể hoàn tác” |
| Chữ ký Authenticode sẽ bị gỡ bỏ | sự đồng ý của bạn được hỏi trước; bạn có thể ký lại bằng chứng chỉ của riêng mình |
| Một bản vá bị từ chối không ghi gì cả | không có tệp ghi dở |
Studio web không cung cấp bản vá nhị phân hay chế độ xem hex: đây là hai chức năng riêng của phiên bản máy tính để bàn.
9. Tài nguyên và trình thiết kế
Tài nguyên của tệp nhị phân
Biểu tượng, con trỏ chuột, bitmap, bảng chuỗi, thông tin phiên bản: mọi thứ mà một tệp .res đáng lẽ
sẽ mang. Mỗi mục hiển thị loại, kích thước và những gì có thể làm với nó, và việc trích xuất có thể
thực hiện theo từng mục hoặc toàn bộ.
Một tài nguyên mà sản phẩm không biết cách vẽ vẫn được liệt kê và được hiển thị dưới dạng byte: nó không bao giờ bị ẩn. Và nếu các mục của thư mục tài nguyên không thể lần theo được, một cảnh báo nói rõ điều đó – khi đó bạn biết danh sách ngắn hơn những gì tệp nhị phân mang.
Trình thiết kế form
Bề mặt của form được vẽ theo cách VB6 đã hiển thị nó, từ các thuộc tính đọc được trong tệp nhị phân,
theo đúng thứ tự vẽ. Hình ảnh của form có thể được xuất (Ctrl+I).
Các thuộc tính là chỉ đọc: VBReFormer biết cách đọc bề mặt của một form, nó chưa biết cách ghi lại bề mặt đó vào tệp thực thi đã biên dịch. Xem chương 13.
10. Xuất dự án
- Kiểm tra ngăn Diagnostics trước. Nó cho biết những gì không thể làm được. Đọc nó trước khi xuất giúp bạn khỏi phải tìm kiếm sau này tại sao một phần tử bị thiếu.
- File ▸ Export the VB6 project (Tệp ▸ Xuất dự án VB6). Chọn một thư mục đích trống.
- Đọc các ghi chú xuất. VBReFormer ghi lại những gì nó không thể khôi phục, và tại sao. Một số thông tin – tham chiếu bên ngoài, tùy chọn biên dịch, chế độ khởi động – không nằm trong bất kỳ cấu trúc nào của tệp nhị phân: chúng không bị xóa, chúng chưa bao giờ ở đó. Chúng được đánh dấu thay vì bịa ra.
- Mở tệp
.vbptrong Visual Basic 6. Các phần đầu mà IDE yêu cầu (VERSION,Attribute VB_Name) được ghi. Nếu thiếu một tham chiếu, hãy thêm nó qua Project ▸ References (Dự án ▸ Tham chiếu).
Hai sự từ chối ghi bảo vệ bạn. Các tệp VB6 được ghi bằng ANSI 1252. VBReFormer từ chối ghi nếu bộ ký tự đó không có sẵn trên máy – ghi bằng một bộ ký tự khác sẽ tạo ra một tệp sai một cách âm thầm – hoặc nếu một ký tự trong mã của bạn không tồn tại trong bộ đó, trong trường hợp này nó cho bạn biết ký tự nào và điểm mã của nó.
11. Các tùy chọn
| cài đặt | tác dụng |
|---|---|
| Indentation width (Độ rộng thụt lề) | chỉ áp dụng cho mã được tái tạo: disassembly, IR, P-code, khối trình thiết kế và .vbp không được định dạng bởi trình soạn thảo này. |
| Code page (designer) (Trang mã, trình thiết kế) | trang mã dùng để đọc các tiêu đề và văn bản của trình thiết kế. Một tệp nhị phân VB6 không khai báo trang mã của chính nó ở bất cứ đâu – đo trên 236 tệp nhị phân. Nếu các nhãn của một form hiện ra thành các ký tự không nhất quán, đây là cài đặt cần thay đổi. |
Group under With…End With (Nhóm dưới With…End With) |
tắt theo mặc định. Đầu ra được định danh đầy đủ (Frame1.Caption), vì trình biên dịch đã hòa tan các khối With và việc dựng lại chúng sẽ là một phỏng đoán. Bật lên nếu bạn thích tính dễ đọc hơn tính nguyên văn. |
| Syntax colouring (Tô màu cú pháp) | một vai trò, một màu – các vai trò đến từ engine, engine cho biết mỗi mảnh là gì. Ký hiệu #RRGGBB; một bảng màu không hợp lệ không được áp dụng nửa chừng. |
| Interface language (Ngôn ngữ giao diện) | tiếng Anh, tiếng Pháp, tiếng Tây Ban Nha – thay đổi có hiệu lực ngay lập tức. |
Cài đặt kết xuất đi kèm với mỗi yêu cầu hiển thị; chúng không bao giờ được đặt làm trạng thái phiên. Do đó, thay đổi thụt lề không phân tích lại gì cả.
12. Phím tắt
| phím tắt | hành động |
|---|---|
Ctrl+O |
Mở một tệp nhị phân VB6 |
F2 |
Đổi tên ký hiệu dưới con trỏ |
Shift+F12 |
Phân tích tham chiếu |
Ctrl+Shift+F |
Tìm trong dự án |
Ctrl+G |
Đi tới địa chỉ |
Ctrl+Shift+H |
Hiển thị byte |
Ctrl+Shift+S |
Danh sách ký hiệu |
Ctrl+Shift+B |
Object Browser |
Ctrl+Shift+P |
API Browser |
Ctrl+Shift+G |
Đồ thị luồng điều khiển |
Ctrl+Shift+A |
Đồ thị lời gọi |
Ctrl+K |
Thư viện được tham chiếu |
Ctrl+L |
Chương trình VB trong một thư mục |
Ctrl+F2 |
Bật/tắt dấu trang |
F8 / Shift+F8 |
Dấu trang tiếp theo / trước đó |
Ctrl+Shift+F2 |
Danh sách dấu trang |
Alt+← / Alt+→ |
Điều hướng lùi / tiến |
Ctrl+I |
Lưu hình ảnh form |
13. Giới hạn đã biết
Sửa đổi giao diện của một tệp thực thi đã biên dịch
VBReFormer đọc bề mặt của một form và tất cả các thuộc tính của nó – nó chưa biết cách ghi lại chúng vào tệp thực thi. Thay thế một tài nguyên nhúng và thêm một thuộc tính ẩn mà không biên dịch lại là không khả dụng. Bản vá nhị phân – ghi byte tại một địa chỉ – thì có (chương 8).
Tài nguyên .ctx của UserControl
Không có tệp .ctx nào được ghi khi xuất. Nếu dự án của bạn chứa các UserControl với tài nguyên
được lưu bền, phần đó cần được dựng lại.
Windows trước 10
Hãy dùng VBReFormer Online: một trình duyệt là đủ, bất kể hệ thống nào.
Những gì không trình dịch ngược nào vượt qua được
Chú thích, tên biến cục bộ, hằng số có tên: chúng không có trong tệp. Xem chương 5.
14. Câu hỏi thường gặp
Một chức năng trong menu không phản hồi. Tại sao? Mở Help ▸ About và xem danh sách capabilities served. Nếu chức năng đó không có trong danh sách, thì không phải giao diện từ chối: engine không cung cấp nó cho tài liệu này. Các thông báo của ứng dụng cũng nói rõ điều đó.
Mã được xuất có biên dịch lại nguyên trạng không? Thường là có: trên một bộ thử nghiệm gồm 149 dự án, 121 dự án biên dịch lại mà không cần chỉnh sửa. Số còn lại cần thêm một tham chiếu hoặc xử lý một vài dấu đánh dấu.
Các nhãn trên form của tôi không đọc được. Đó là trang mã. Một tệp nhị phân VB6 không khai báo ở đâu trang mã của các văn bản trong trình thiết kế – hãy đặt nó trong Tùy chọn (chương 11).
Tại sao các form của tôi dễ đọc hơn các mô-đun? Vì VB6 giữ tên của các điều khiển và sự kiện để hoạt động, trong khi nó phân giải các thủ tục trong mô-đun thành địa chỉ thuần túy. Xem chương 5.
Tệp thực thi của tôi được đóng gói (packed). Có vấn đề gì không? Có: nó phải được giải nén trước, nếu không các cấu trúc VB6 không hiện ra trong tệp.
Có thể dịch ngược một .ocx hay một .dll ActiveX không?
Có, và bản kiểm kê các thành viên public ở đó nhìn chung phong phú hơn, vì COM đòi hỏi phải đặt tên cho
chúng.
Tệp nhị phân của tôi có được gửi đi đâu không? Việc đọc định dạng, byte, disassembly và tài nguyên được xử lý trên máy của bạn. Việc tái tạo mã diễn ra trên máy chủ của chúng tôi – đó là ý nghĩa của phiên bản Desktop + Cloud.
Có hợp pháp không? Điều đó phụ thuộc vào quyền tài phán của bạn và quyền của bạn đối với tệp nhị phân. Mục đích sử dụng dự kiến là khôi phục mã của chính bạn, hoặc mã mà bạn nắm giữ quyền hoặc được ủy quyền.
Dùng thử trước khi mua