Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Biên dịch lại dự án từ netExec file.

    Rebuild project from netExec file
    Biên dịch lại dự án từ netExec file.

    Biên dịch một dự án (primary phase) sinh ra exec file (exe/dll/...); với dotNet tạm gọi là netExec.

    Khác với native exec - Assembly (mã máy), netExec - MsIL (ngôn ngữ trung gian) dễ chuyển sang ngôn ngữ bậc cao netLang (Vb.Net, C#, C++, Delphi, ...) việc phục hồi - dịch ngược là có thể.

    Để bảo vệ netExec người ta thường biên dịch lại (secondary phase - reCompile) với công cụ để chống dịch ngược. Nó sẽ đổi tên định danh, xáo trộn các lệnh, thêm salt code / obfuscate, tạo mapping / proxy, mã hóa, dấu nguồn lực, ... nhằm phá vỡ cấu trúc bậc cao. Một cách dễ hình dung, thay cấu trúc điều kiển bằng goto / label làm chương trình trở nên khó hiểu.

    Nói cách khác, netLang là tập con (sub set) của MsIL : đúng trong MsIL sẽ thành sai trong netLang; làm được trong MsIL còn trong netLang thì không! Định danh trong Cs phải hợp lệ(...), trong MsIL là chuỗi bất kỳ. Control, unicode, unPrinter char trong MsIL được cả; còn netLang : ERROR! Có những keyWord trong MsIL không dịch được sang netLang. OOP là thế giới phẳng, còn NNLT là 3D.

    netExec với bảo mật thấp dễ bị dịch ngược. Tuy nhiên, các công cụ view code, sinh project thường chứa nhiều lỗi. Khi đem biên dịch lại cần sửa - fixed - hết lỗi có trong dự án, mới chỉ lả một phần thành công nhỏ.

    netExec với bảo mật cao còn có khả năng chống debug, xóa dấu hiệu nhận dạng làm các công cụ view / dump bị lỗi. Phối hợp các công cụ fixed - khử bỏ ... phục hồi cấu trúc bậc cao, càng thêm phức tạp cho việc reBuild. Không có ánh xạ một - một, nhận dạng sai, khử sai, lảm kết quả thu được không đúng với logic ban đầu, thường khá lớn. Chưa kể các hàm mã hóa một chiều, không giải được.

    Có đầy đủ công cụ và tài liệu, khi chương trình bị lỗi : runtime / logic Error, tìm được lỗi đã là kỳ công, sửa xong lỗi này biết đâu nó lại sinh ra lỗi khác ?

    Hình dung một dự án đã viết, bị hư HDD - không còn source code - tài liệu thất lạc, bạn sẽ làm gì ?
    Phục chế là một nghề. Xét nghiệm là việc bình thường như sửa khóa - làm chìa thôi mà!

    Bạn có thể tham khảo bài viết, Dịch ngược và biên dịch lại netExec

    trong diễn dàn sinhvienit, link:
    http://sinhvienit.net/forum/dich-nguoc-va-bien-dich-lai-netexec.406996.html

    Văn Hiền, 0906.83.71.25

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Dùng SharpDevelop để dịch :
    menu Tools => convert code to ==> ... (Boo, C#, ... Vb.Net)

    Ảnh minh họa :


    //
    Nếu có nhu cầu chi tiết, tôi sẽ viết chi tiết hơn.

  3. #3
    Nhiều người dùng DevExpress, nhiều người dủng Patch để hợp thức hóa.
    //
    Thấy bản Patch 61 dùng cho DevExpress 13.2 nhiều người tìm kiếm.
    //
    Rảnh - nghỉ tết cổ truyền Việt Nam - viết lại cho ai cần, có thể tham khảo.
    Source code viết lại trên Vs2010 - netFx 4.0
    Patch61.rar


    Mới chỉ chạy thử trên 2 PC thôi.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sáng tạo - phát minh và tiếp thu - học hỏi !

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trước đây, cũng đủ lâu, tôi viết trên diễn dàn DDTH và một số forum khác về vấn đề mã hóa netFX. Bạn có thể xem với tiếng Việt ở :

    Công nghệ dịch ngược và kỹ thuật bảo vệ code - Cuộc chiến tranh hiện đại

    Bận bịu công việc nên gián đoạn post bài về nó, nay định tiếp tục để hoàn thiện với điều kiện có thảo luận : viết sách không phải sở thích của tôi

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Một số kỹ thuật chống dịch ngược :

    A - Obfuscator.NET 2009 thường chèn các lệnh add, sub, mul, div, rem, shr, shl, and, or, xor (và không bao giờ thực hiện - làm CT to hơn, chạy chậm hơn) sau lệnh br, ret là ví dụ điển hình : Reflector báo lỗi nhưng ILSpy đọc được vô tư !

    B - ILSpy chưa phải là thần dược .
    C#:

    Mã:
    namespace nA{    internal sealed class InB{        private uint du;        private int d3;        //        public void g01(int A_1){            this.du >>= A_1;            this.d3 -= A_1;        }        ...    }}
    Assembly - MsIL tương đương :

    Mã:
    .class private auto ansi sealed beforefieldinit nA.AE extends [mscorlib]System.Object{    .class auto ansi sealed nested assembly beforefieldinit InB extends [mscorlib]System.Object{    ...        .field private uint32 du        .field private int32 d3         //#define OBF         // tắt chế độ mã hóa : control flow obf          .method public hidebysig instance void g01(int32 A_1) cil managed{    #ifdef OBF        // Code size 59 (0x3b)        .maxstack 10        IL_0000: br.s IL_0024         IL_0002: dup        IL_0003: ldfld uint32 nA.AE/InB::du        IL_0008: br.s IL_0027         IL_000a: ldc.i4.s 31        IL_000c: and        IL_000d: shr.un        IL_000e: stfld uint32 nA.AE/InB::du        IL_0013: br.s IL_002a         IL_0015: dup        IL_0016: ldfld int32 nA.AE/InB::d3        IL_001b: ldarg.1        IL_001c: sub        IL_001d: stfld int32 nA.AE/InB::d3        IL_0022: leave.s IL_003a         IL_0024: ldarg.0        IL_0025: br.s IL_0002         IL_0027: ldarg.1        IL_0028: br.s IL_000a         IL_002a: ldarg.0        IL_002b: br.s IL_0015        IL_003a: ret     #else         // Code size 32 (0x20)        .maxstack 10        IL_0000: ldarg.0        IL_0001: dup        IL_0002: ldfld uint32 nA.AE/InB::du        IL_0007: ldarg.1        IL_0008: ldc.i4.s 31        IL_000a: and        IL_000b: shr.un        IL_000c: stfld uint32 nA.AE/InB::du        IL_0011: ldarg.0        IL_0012: dup        IL_0013: ldfld int32 nA.AE/InB::d3        IL_0018: ldarg.1        IL_0019: sub        IL_001a: stfld int32 nA.AE/InB::d3        IL_001f: ret     #endif        } // end of method InB::h01        ...    } // end of class InB    ...} // end of class nA.AE
    Ở đoạn code trên, chỉ cần bật sang chế độ mã hóa ( #define OBF ) thì các version ILSpy ( đến thời điểm này) đều báo lỗi.

    Quay lại (A) trên, bạn có thể đề xuất giải pháp để khử bỏ
    các lệnh add, sub, mul, div, rem, shr, shl, and, or, xor (và không bao giờ thực hiện - làm CT to hơn, chạy chậm hơn) sau lệnh br, ret ?

    Tôi sẽ đưa đoạn code làm việc đó sau.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Chống dịch ngược với vnReactor
    A - phim (clip) minh họa sử dụng :




    Nguồn Chống dịch ngược với vnReactor

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    B - Thuyết minh

    vnReactor.exe là chương trình chính (main assembly). Nó có 2 chế độ hoạt động :
    - dòng lệnh (batch mode) - xem help/exam trong sub-folder của vnR
    - giao tiếp đồ họa (GUI mode)

    Sau khi mở (launch), vnR sẵn sàng cho việc tạo mới / mở một dự án đã có. Để tạo mới một project, bạn kéo thả (drag-drop) netExec file (exe/dll/xap) vào comboBox "Main Assembly" hoặc tìm duyệt (click button "Open"). Khi netExec file có các file phụ thuộc (references) bạn cho scan/add/remove để merge/embed vào kết quả.


    Bạn thay đổi tùy chọn cơ bản ở "Quick Settings" : Anti IlDasm, Obfucation, Encryption, Compress, CFO, Native EXE, ... và chi tiết ở tabPage "Settings" : Target File, unPrintable chars, Strong name, Digital certificate, ...
    Để biên dịch / kiểm tra, bạn click link "Protect" bên trái trong group Tasks. Tiến trình biên dịch được báo cáo trong tabPage "Protection", phụ thuộc vào những thiết lập đã chọn. Sau khi biên dịch xong button "Browse Folder" hiện ra để mở thư mục chứa kết quả.

    Bạn lưu lại / lưu khác (save as) nếu cần.


    Đến thời điểm này, Ms IL Disassembler, Reflector, ILSpy,


    de4dot ... đều không xem / dịch ngược được kết quả mà vnR sinh ra.


    Như trên đã nói, vnR viết dựa trên NET Reactor v4.9.7, các chức năng / hoạt động được giữ lại như nguyên mẫu.
    - Phần giao diện, các dialog : trợ giúp ngữ cảnh (help button) được kích hoạt
    - Salt code được loại bỏ
    - Bổ xung các tính năng khác

    Các chức năng khác trong menu, trong các dialog, trong propertyGrid vui lòng xem help hay trao đổi qua email

    Trong phiên bản này (Community Edition), tôi có giới hạn một số tính năng nâng cao.

    C - Download
    (exe) : setup
    (7z) : Zip

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Có phải vì lưỡi kéo của những admin kém tài, tâm tầm phổ cập bình dân học vụ viện ?

    Một diễn dàn lâu năm, đến 15 vạn thành viên như Cờ Việt này toàn bàn syntax error

    Trong topic trên các thông tin để liên lạc với người viết có đủ để liên lạc, đâu cần phải xóa chữ ký

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •