PDA

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



Van8Hien62
09-08-2013, 13:52
Bạn nghĩ gì về Hacker ?
Bạn nghĩ gì về một CT đã biên dịch - mã hóa thành ứng dụng / thư viện ?
Bạn nghĩ gì ... ?

Dịch ngược là xấu, là gián điệp ! ...

Dịch ngược là tốt, là tình báo ! Phạm Xuân Ẩn, 17 khoảnh khắc mùa xuân, Điệp viên 007 ...

Nó góp phần phổ biến tri thức, kiến thức. Và do đó làm giảm giá, chống độc quyền; có lợi cho người sử dụng.

Xe honda từ Nhật, tới xe honda Trung Quốc vài năm trước.
Tên lửa, tàu ngầm, máy bay, ... Đức có trước Mỹ - Nga.

Ở đây có thể trình bày, thảo luận về CÔNG NGHỆ DỊCH NGƯỢC ?

trumdkny
09-08-2013, 16:45
hi, bạn có thể khởi đầu topic này bằng 1 bài viết về dịch ngược hoặc bảo vệ code không ?

baphuc1024
10-08-2013, 10:15
Bạn có thể nói cụ thể ngôn ngữ nào ko vd C, C++, C#. Chứ nói chung chung quá

Van8Hien62
30-08-2013, 15:56
Ở đây chủ yếu nói về .NET (C# / MsIL)

Người ta thường nói, nhà nước kém năng lực luôn đưa ra nhiều luật lệ vô ích để trói buộc công dân. Nhiều thầy bà nói không với goto, với malloc / realloc(cấp phát động API), với c để cổ xúy cho vb! Và hệ quả : rất nhiều LTV chỉ có thể làm việc trong VS, Suite - phụ thuộc hoàn toàn vào môi trường(enviroment) thu hẹp đó. Nó chẳng qua là công cụ autoCorrect / intelliSense, là toolBox kéo thả để dễ hình dung(visual) - một thể hiện tương ứng của code. Tôi thường xuyên làm việc trên VS và không phải là tất cả mọi c/v về LT.
Cho tiện trình bày, về công cụ, tôi dùng Reflector / ILSpy, ildasm, ilasm(MSIL Disassembler) và Notepad++; dùng ngôn ngữ C#(bậc cao) , IL(bậc thấp) và thoảng hoặc dùng ngôn ngữ trung bình c để thể hiện những đoạn code.

Trong C#(vs), tên(ident / name) với rất nhiều trói buộc mà IL không có. Nào là các ký tự alpha-numeric character, nào là keyword, nào là signature, ... Đi với ma mặc áo giấy vậy. SV tốn nhiều tháng trời để học luật, để phân biệt overloading / overriding để rồi compiling vứt bỏ tất ! MsIL / byteCode không sử dụng nó, không cần những luật lệ hoang phí mà NNBC đặt ra. Trong hàng rào an ninh nội địa, fireWall thần dân bị cách ly với thế giới thật. Hack trở thành ma. Trong 3D, 4 chiều là phụ thuộc tuyến tính, độc lập tuyến tính chỉ là 3!
Trong không gian suy biến, tập con thu hẹp, thảng hoặc xuất hiện các hiện tượng kì dị khó diễn giải. Obfuscation, encryptation trở nên bí hiểm. Giải mã - dịch ngược là công việc bình thường của đời sống con người. Làm chìa - sửa khóa bên đường, hay trung tâm phục hồi - kiểm định xa tít đều làm như Hacker làm. Các phương tiện do thám (hàm ý xấu) đều có chung mục đích là để dòm. Ai đó sở hữu vũ trụ có lên án các vệ tinh, các viễn vọng đang quan sát, thu thập thông tin trong bầu trời ? Ai cấm bạn mua xe honda Nhật về tháo ra nghiên cứu (để hiểu, để làm nhái, hay để sửa lại tốt hơn) ? Bạn nghĩ gì về UFO, có cấm được nó ?
Có nhiều cty s/x MT, ĐTDĐ, xe hơi, ... và n - 1 công ty nào trong đó vi phạm bản quyền với 1 cty còn lại ( nếu cty đó còn tồn tại và sở hữu tất cả các phát minh đến s/p !). Ai cấm tôi tìm hiểu code viết trong Java/NET !?

Kỹ thuật bảo vệ hướng tới làm sao cho code sinh ra khó đọc, chống dịch ngược, chống debug. Nguyên tắc cơ bản, để chương trình( sau khi biên dịch / mã hóa) chạy được thì máy tính phải hiểu được các chỉ thị của nó( để thực hiện).

A. Khó đọc
Trong NNBC có nhiều định chế về định danh, về cấu trúc; các LTV thường đặt tên thân thiện, cấu trúc tường minh - dạng dư thừa thông tin. Ngược lại trong NNBT không cần phải vậy. Các định danh thân thiện( các ký tự printable, không trùng với KW, không ... và không ...) gắn ngữ nghĩa có thể chuyển thành các định danh trung tính( các ký tự unPrint, dài ngoằng, ...) đủ làm cho CT khó đọc. Mượn k/n trong SQL, định danh trong NNBC gắn liền với khóa ( primary key ) - dấu hiệu nhận dạng hàm (signature) : tên hàm và danh sách tham biến, không bao gồm kiểu trả về của nó. Trong NNBT( MsIL ) khóa bao gồm :
data-type own-contain :: ident-name (1) - trong lệnh / chỉ thị, hoặc
data-type ident-name (2) - trong khai báo ở lớp chứa
Định danh là phần tử thuộc khóa trong NNBT.

Ví dụ trong giả-IL có thể viết :
.class x
{
// biến
.field int32 x
.field uint32 x
// hàm
.method int32 x()
{
...
}
.method uint32 x()
{
...
}
...
}
nhưng không thể viết trong C#
class x
{
int x; //biến trùng với lớp chứa
uint x; //trùng với biến trên
...
}
Khó đọc còn nằm trong cấu trúc lệnh( control flow obfuscation ) - khó viết lại trong NNBC bằng cấu trúc tường minh. Các lệnh nhảy - điểm tới( label ) phóng khoáng làm một số công cụ view code bó tay. Việc khử bỏ các lệnh trung gian gây rối không quá phức tạp. 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ư ! ILSpy chưa phải là thần dược .

C#:
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 :
.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.
Một số kỹ thuật khác như references dynamic proxy (không làm được trong NNBC) làm CT càng khó đọc hơn nữa. Kỹ thuật khó đọc làm nản lòng nhiều Hacker.

B. Chống dịch ngược :
Một số công cụ như CodeVeil, SmartAssembly, có thể sinh code chống dịch ngược : không view được bằng Reflector / ILSpy, không dịch được bằng MSIL Disassembler

C. Chống debug.
Code sinh ra có khả năng chống debug là cần thiết.

Dù kỹ thuật bảo vệ có tốt thế nào cũng không thể chống nổi công nghệ dịch ngược; MT hiểu được thì dịch ngược được vì Hacker hiểu và điều khiển MT !

hbs315
01-11-2013, 10:31
Cách mà tôi mã hoá password:
sha-2(md5(hash_nhẹ(pass + salt)>));
Giả sử pass của tôi là 123456 thì tôi nghĩ nếu không sử dụng dictonary thì hacker có thể dịch ngược được... trong vài chục năm.

Chỉ là một ví dụ vui, nhưng thật sự các hệ thống hiện tại thường chỉ dừng lại ở md5 nên việc sử dụng những thư viện dịch ngược md5 đã quá phổ biến thì việc dịch ngược md5 hay các thuật toán phổ biến khác là một điều dễ dàng!

Van8Hien62
03-12-2013, 15:18
- CT có hoặc không sử dụng password !

CT có sử dụng password, thì sẽ có điểm so trùng: (a)

if(sha_md5_hash(password) != sha_md5_hash(pass + salt)){
//...(1)
Application.Exit();
}

Tôi không cần đến vài chục năm để tính :

string pwd1 = sha_md5_hash(password);
string pwd2 = sha_md5_hash(pass + salt);
// (2) : đặt Breakpoint tại đây, chặn lấy kết quả.
pwd1 = pwd2; // (2)
if(pwd1 != pwd2){//true
//...(1)
Application.Exit();
}

hoặc đơn giản hơn comment khối so sai mật khẩu :
if(sha_md5_hash(password) != sha_md5_hash(pass + salt)){
//...(1)
//Application.Exit();
}

Không cần giải mã password hay thuật toán mã hóa chi mất công.

Bạn nói đúng khi nó áp dụng cho UD đặt trên Server và hacker không chạm đến các DLL được.

Van8Hien62
19-06-2014, 15:59
//Vietnamese, utf-8, font : Tahoma

Giới thiệu vnReAct một công cụ mã hóa những ứng dụng (EXE/LIB) viết trên nền dotNET, một dị bản từ .NET Reactor.
A. So với những obf-tool khác, nó có vài ưu điểm :
- hỗ trợ ứng dụng viết bằng VC++
- che kín code JIT ==> Native EXE
B. So với những dị bản khác, bản *****, nó được viết mới bằng C# (Tất nhiên, sau khi biên dịch, nó được mã hóa bảo vệ. ) :
- các chức năng của nguyên bản vẫn hoạt động bình thường
- kết quả mã hóa của nó chạy được.
C. So với nguyên bản, kích thước nó nhỏ hơn(, chạy nhanh hơn).
- tách riêng, un-merge, các thư viện đi kèm : SkinSoft và Ionic.
- sửa, tối ưu code; loại bỏ rác - salt code
- bổ xung vài tính năng mới

Link download:
-http://www.4shared.com/file/O14xSAsIba/vnReAct_setup.html
-http://www.fshare.vn/file/TF32MD6FYT#download

Sau khi cài đặt - setup, vnReAct chạy :
- trực tiếp, command line : cmdTest.bat
- giao tiếp GUI : guiTest.bat / vnReAct.exe
- chưa hướng tới ứng dụng web, Silverlight, phần mã hóa xap file : tôi không test; nó không hỗ trợ.
- thay vì xuất MsgBox ở kết quả, tôi còn giữ lại ở command line mode; nó thay đổi version và icon của kết quả mã hóa.

Thư mục Exam chứa ứng dụng mẫu : r66v.nrproj / r66w.nrproj để kiểm thử. Đối với những chương trình viết theo cấu trúc Reflector / SmartAssembly, ngay .NET Reactor ver 4.8 có sinh kết quả - nhưng kết quả không chạy được. Nên với tùy chọn khác ( √ Compress & Encrypt Resources) lên R66v.exe làm kết quả không chạy được là bình thường! Đó là một ứng dụng có phần đặc biệt : resources (chứa string encryption - preCompile code / semi source code) đã nén và mã hóa theo thuật toán SmartAssembly .
Đối với các ứng dụng( exe/dlls ) viết trực tiếp ( bằng Visual Studio/SharpDevelop - full source code ) tôi chưa gặp lỗi nào.
Để sử dụng Help, bạn copy Help folder của .NET Reactor vào vnReAct; hoặc ngược lại, copy vnReAct và Ionic.Zip.dll / Skin2.dll đến .NET Reactor.

Liên hệ, ĐT : 0906.83.71.25, email : vn8hien62@yahoo.com

Scripted
01-07-2014, 13:13
Đọc cái này cũng thấy HAY HAY ... nhưng đó giờ mình chỉ thấy có cái này de4dot là project hóa mã được nhiều obfuscation thôi ... còn mấy cái khác không work gì hết:

https://github.com/0xd4d/de4dot

Cho link để tham khảo nè :)

PhamTienSInh
05-07-2014, 16:51
Tốt nhất là stop hack vớ vẩn, tập trung mà làm app đi thôi :) !!!
Mấy đ/c học hack gần chục năm rồi, chưa thấy ai làm được trò gì cả :)

dcckiem
06-07-2014, 21:21
Tốt nhất là stop hack vớ vẩn, tập trung mà làm app đi thôi :) !!!
Mấy đ/c học hack gần chục năm rồi, chưa thấy ai làm được trò gì cả :)

Ngồi hóng các thánh thôi, mình làm app cũng nhiều năm chưa nghĩ đến việc hack hit bao giờ.

Van8Hien62
16-07-2014, 14:43
Làm được hay không chỉ là cảm nghĩ. Làm được hay không chỉ cần test là biết ngay.

Van8Hien62
23-03-2015, 19:34
A. Giới thiệu

Để mã hóa - chống dịch ngược các ứng dụng viết trên nền NetFX, bạn có thể sử dụng SmartAssembly, .NET Reactor, ...
vnReactor là công cụ như vậy.

vnReactor (vnR) viết dựa trên nguyên mẫu .NET Reactor (NR, version 4.9) của Eziriz, được bổ xung các tính năng khác. vnReactor tách riêng thư viện (ionic/skin), không trộn (un-merge) vào chương trình chính, tối ưu code.
vnR nhỏ hơn (, nhanh hơn) so với NR. Hiện nay, viết một chương trình nhỏ, chạy nhanh không còn được ưu tiên; máy tính ngày càng mạnh và nhanh hơn trước nhiều.

Có chương trình nào là hoàn hảo, có hệ thống bảo vệ nào là tuyệt đối ? Nó giúp bạn ít nhiều về thời gian, công sức lo nghĩ về cách thức bảo vệ sản phẩm.
Cũng như bạn, tôi cần chương trình biên dịch sơ cấp (C++, C#, ...) để dịch và cần chương trình biên dịch thứ cấp (SA, NR, ...) để bảo vệ code tốt hơn.
(1a) Source ====> BdSc ====> Exec
(2a) Exec ====> deAsm ====> Source

(1b) Exec ====> BdTc ===> CryptExec
(2b) CryptExec ====> deAsm ====X Source
//không kết quả, hoặc sinh kết quả sai.

vnR viết bằng C#, chạy trên Windows XP hoặc mới hơn, có NetFX 4.0.
Với phiên bản định giá, chưa đăng ký, thay vì xuất thông báo, ở các sản phẩm của nó xuất ra, khi xử dụng; vnR thay đổi thông tin version, icon hiện thị trong Windows Explorer.

Người ta thường nói : " mua của ai cũng vậy, mua của tôi, tôi cám ơn". Tôi cần sự hợp tác, cần chi phí để phát triển, để đáp ứng được nhu cầu của bạn.

Thân.
Văn Hiền (ĐT : 0906.83.71.25, email : vn8hien62@yahoo.com)
============
PS:
Tôi viết vnR với mục đích nghiên cứu kỹ thuật mã - giải mã. Hướng tới việc bảo vệ code tôi viết, cũng như code bạn viết, tốt hơn, có thêm thời gian để làm ra sản phẩm tốt hơn trong phiên bản mới - trước khi c-r-a-c-k_er / h-a-c-k_er tìm ra được những gì chúng ta cần bảo vệ trong sản phẩm đã phát hành. Đây là cuộc chiến tranh tốt đẹp, thúc đẩy nhà sản xuất luôn phải hoàn thiện sản phẩm của họ, có lợi cho người dùng, cho cộng đồng.

Tôi viết vnR không nhằm sao chép, hay phục chế NR. Tôi tin rằng vnR có thể bị giải mã - như tôi đã giải mã NR. Vấn đề ở chỗ :
- thời gian là bao lâu, như đã nói, có nhanh hơn thời gian một phiên bản tốt hơn được lưu hành.
- dành thời gian cho sản phẩm mới, giải thuật mới, kỹ thuật mới HAY dành thời gian cho sản phẩm đã phát hành. Tạo ra những phiên bản mới ít hướng tới người dùng mà chủ trọng bảo vệ giải thuật, kỹ thuật cũ bằng ngôn ngữ thấp hơn.

Cũng như bạn, tôi có thể viết lại một chương trình - ví dụ vnR - bằng MsIL, bằng C, ... Công sức, thời gian viết và biên dịch chương trình không hiệu quả bằng dùng ngôn ngữ lập trình ứng dụng nhanh(rap) như VB, C#, rồi sử dụng công cụ mã hóa để biên dịch lại.

Ý tưởng dung lỗi được áp dụng : ứng dụng tạo ra có khả năng chống lại những sự tấn công, bị thay đổi. Chưa đúng, có sai - dung lỗi - vùng mờ này là môi trường bảo vệ tốt. Ai ai cũng đi qua ma trận được ? Vùng mờ này không là rào cản với chủ nhân nó, cũng như những gì mà nó bảo vệ.
Mã hóa luôn đi trước. Viết hay sử dụng công cụ mã hóa không khó bằng viết hoặc sử dụng công cụ giải mã. Họ dùng thuật toán nào, đặt ở đâu trong hàng chục ngàn dòng code! Ước mơ về kho báu thời niên thiếu thật đẹp. Tìm, thấy, lấy được rồi làm chủ nó gợi nhớ đến truyện "Đảo châu báu".

Quỹ thời gian còn lại có hạn, áp lực về thị trường, sự cạnh tranh của nhà sản xuất khác, chúng ta không thể tự làm tất cả! Ngược lại, người dùng tự viết chương trình cho họ dùng thì bạn và tôi trở thành người thừa trong cộng đồng đang sống. Hy vọng sản phẩm của tôi có ích cho bạn, đáp ứng được yêu cầu của bạn.

Tôi sẵn sàng hợp tác, trao đổi về lĩnh vực này : kỹ thuật mã - giải mã, bảo vệ code mà tôi theo đuổi từ bấy lâu nay.

B. Link download:
https://www.fshare.vn/file/TQW17L3EFQ6B
https://www.fshare.vn/file/XT2KDX83GSD5

Van8Hien62
27-03-2015, 21:41
http://www.mediafire.com/download/kn145w76rkt4lro/vnReactor_setup.exe
http://www.mediafire.com/download/q7avdwj6vbut7n7/vnReactor.7z

Scripted
01-04-2015, 23:00
Chưa bao giờ nghe qua vnReactor, sài có an toàn không ?

angkorick
27-04-2015, 10:23
bài viết từ 2013 mà thanh niên nào đào mộ lên :D

Van8Hien62
29-04-2015, 16:35
C. Sử dụng
Sau khi tải về, bạn cài đặt (vnReactor_setup.exe) / xả nén (vnReactor.7z) hoặc copy vnR từ một PC khác.
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ả.
http://s6.postimg.org/qpy34bqdd/new_Project.jpg

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ả.
http://s6.postimg.org/c80vwbz29/save_Project.jpg
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, de4dot, ILSpy, ... đều không xem / dịch ngược được kết quả mà vnR sinh ra.
http://s6.postimg.org/k21hhq6v5/ILSpy.jpg

http://s6.postimg.org/gwgvrio8x/de4dot.jpg
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 trực tiếp qua email / ĐT

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. Bạn có nhu cầu về bản đầy đủ (Commercial Edition) hoặc yêu cầu khác, liên lạc với tôi qua số ĐT : 0906.83.71.25 / email : vn8hien62@yahoo.com

Văn Hiền
//========
Nhận viết và dịch chương trình NetFx

superminsk
15-05-2015, 12:40
Mình đang thuê viết 1 chương trình mã hóa file .exe bằng c++, sau khi mã hóa file nó vẫn chạy bình thường, gần như là mã hóa theo thuật toán của UPX.
Nếu bạn có hứng thú thì pm mình.

Van8Hien62
18-05-2015, 02:54
Cám ơn về đề nghị của bạn.

Như bạn biết rõ, chương trình mã hóa chống dịch ngược thường có chức năng nén.
vnR sử dụng thư viện ionic (mà NR đã trộn merge chung trong .NET Reactor, tôi đã tách ra ở trên) và một vài class / namespace khác
SmartAssembly.exe có chức năng rất tốt là Pruning - cắt bỏ những phần code không được gọi - không sử dụng.

Việc suy giảm, hoặc đề cao một chức năng nén (UPX) tôi e rằng không đáp ứng được nhu cầu bào vệ code - chống dịch ngược của Thread này. UPX chuẩn không nén được NetExec, còn LZMA như trong mpress thường bị lỗi - CT sau khi mã hóa không chạy được với những CT lớn và phức tạp.

Có thể tôi chưa hiểu hết ý định của bạn, theo tôi biết CT sau khi mã hóa thường có kích thước lớn hơn - salt code làm rối, gây nhiễu.
Riêng dotNET_Reactor.exe có kích thước là 7.79 MB, còn vnR có tổng là 5.70 MB. Có thể giảm hơn nữa nhưng đó không cần thiết.
Quan trọng nhất là làm sao chương trình sau khi mã hóa chạy bình thường, không dịch ngược được, hay it ra rất khó dịch.

//========
Nhận viết và dịch chương trình NetFx

superminsk
18-05-2015, 09:16
Mình chỉ bảo gần như thuật toán của UPX, chứ đây là 1 bài tập test của mình, đến bước này mình đang bế tắc ko biết ý tưởng ntn. Bài toán của mình chỉ là mã hóa file .exe sao cho mã hóa xong nó vẫn chạy bình thường, bạn có thể thay đổi, hay gói gọn các sections...trong file .exe thế nào cũng đc miễn là nó hoạt động binh thường là đc, đây là bài tập của mình nên ko cần phải suy nghĩ cao quá đâu :). Còn cái vấn đề mã hóa xong nó có kích thước lớn hơn là bình thường bạn à, mình có test thử mấy tool nó cũng thế. Ko sao cả, đáp ứng đc bài toán của mình là đc :)

Van8Hien62
18-05-2015, 21:08
Nếu vậy thì khá đơn giản. Cách thường làm : CT sẽ nén ứng dụng (UD) cần mã hóa rồi nhúng phần nén này làm resource của CT. Khi CT chạy nó sẽ load resource vào, xả nén và map để chạy - ví dụ cách làm của mpress, vnR, SmartAssembly

Còn đây là phim minh họa cách sử dụng vnR:


https://www.youtube.com/watch?v=RbCrHTXRAqU

//========
Nhận viết và dịch chương trình NetFx

duongantam
11-08-2015, 11:11
thấy bạn nói chung chung quá hihi

Van8Hien62
11-08-2015, 20:38
Bạn cần nói cụ thể chuyện gì? Tôi mong muốn các bạn thạo luận. Tôi muốn trao đổi cái tôi biết với tất cả các bạn.

habogay
12-08-2015, 09:40
Còn một tác dụng khác , là pack các loại sâu bọ để qua mặt AV

Van8Hien62
13-08-2015, 18:18
Để qua mặt AV, thì liên quan gì đến dịch ngựơc ? Bạn chỉ định App nào đó là tin cậy là OK

habogay
14-08-2015, 11:35
Mình nói là sâu bọ chứ có nói app thông thường đâu

Van8Hien62
19-08-2015, 15:44
Về mặt lập trình thì sâu bọ cũng là app. Một app luôn có các hành vi để thực hiện các lệnh được LTV viết ra.
- nó cần liên lạc đến một webSite nào đó, gửi Msg đến adr nào đó - thí đã có fireWall, chặn hay cho đi qua,
- nó đọc/ghi registry, đóng mở cổng, tạo / thay đổi file trong PC thì có ACL cho phép hay cấm.

SMHN
25-02-2016, 13:28
Mình thấy còn một giải pháp nữa khá đơn giản và hiệu quả đó là sử dụng khoá cứng. Khoá cứng có thể chống lại việc sao chép, ăn cắp bản quyền phần mềm. Các loại khoá hiện đại cũng cung cấp công cụ mã hoá mã giúp bảo vệ mã nguồn của phần mềm.

Van8Hien62
07-03-2016, 16:06
Khóa cứng mà ai đó đọc được code, vui thì họ cắt bỏ đoạn kiểm tra, buồn thì họ viết mới - họ thành đối thủ nguy hiểm ngay.
//
Khóa nào bằng con người, hơn nữa bạn kiểm tra tính tin cậy của nó chưa ?

boysunflower
04-05-2016, 08:45
hiện giờ hình như .Net là bảo mật tốt phải không nhỉ?

boysunflower
06-05-2016, 23:10
hiện giờ ngôn ngữ nào là bảo mật nhât nhỉ?

Van8Hien62
27-05-2016, 15:49
Cần cái làm được hay cần cái nhất ở tận đâu đâu !

Van8Hien62
16-06-2016, 23:30
Nếu quan tâm, bạn xem thêm ở :
Biên dịch lại dự án từ netExec file. (http://diendan.congdongcviet.com/threads/t324336::bien-dich-lai-du-an-tu-netexec-file.cpp?p=863494#post863494)

phucanshop
22-06-2016, 11:30
Công nghệ phát triển không ngừng cũng giống như sự phát triển liên tục tạo ra những con virus mới và phần mềm anti virus cũng liên tục được cải tiến. Đó là quy luật sinh tồn do vậy dịch ngược và kỹ thuật bảo vệ cũng sẽ phát triển không ngừng. Nó thực sự là cuộc chiến căng thẳng

Van8Hien62
25-06-2016, 15:25
Công nghệ phát triển không ngừng cũng giống như sự phát triển liên tục tạo ra những con virus mới và phần mềm anti virus cũng liên tục được cải tiến. Đó là quy luật sinh tồn do vậy dịch ngược và kỹ thuật bảo vệ cũng sẽ phát triển không ngừng. Nó thực sự là cuộc chiến căng thẳng

Cám ơn bạn dùng triết học biện chứng ra chiếu rọi
Trong Mao tuyển cũng nói thế
Đảng ta sáng suốt thật

Xem thêm :
Biên dịch lại dự án từ netExec file. (http://diendan.congdongcviet.com/threads/t324336::bien-dich-lai-du-an-tu-netexec-file.cpp)

Van8Hien62
01-09-2016, 14:58
Có nhiều công cụ dịch, delphi2cs là công cụ dịch dự án ngôn ngữ Delphi sang C#

Delphi2cs đã hoàn thành giai đoạn dịch ngược thành source, đóng gói (nén binn folder), trong đó có thư mục _Test kiểm thử - source Delphi (nạp động control trên windows form) và kết quả biên dịch nó sang c#,
- csOrg là source nguyên mẫu
- cs là source đã chỉnh sửa bằng tay:


//DynPanel = new Panel(this);
DynPanel = new Panel();
//...
//TextBox _wvar1 = new TextBox(this);
TextBox _wvar1 = new TextBox();

//
Link tải xuống: vnDpr2cs (http://www.mediafire.com/download/p75ugy5px0vbp11/dpr2cs.rar)

email : vn8hien62@yahoo.com

Van8Hien62
11-02-2017, 23:13
Chương trình Dự toán F1 có thể phục hồi (giải mã) được không ?
Xem :
http://diendan.congdongcviet.com/threads/t324336::bien-dich-lai-du-an-tu-netexec-file.cpp?p=888076#post888076

tdiver92
17-02-2017, 22:51
nói chung làm dev thì reverse code để coi tư duy code của người khác học hỏi cũng hay đó chứ.

Van8Hien62
23-02-2017, 11:39
nói chung thì cũng hay thật; còn nói riêng thì sao ?