Reverse Engineering
1. Reverse engineering là gì?
Nói nôm na Reverse engineering (kỹ thuật đảo ngược) là một quá trình phát hiện ra các công nghệ cơ bản của một thiết bị, đối tượng hay một hệ thống thông qua việc phân tích cấu trúc, chức năng và cách vận hành của chúng. Các đối tượng ở đây có thể bao gồm: thiết bị cơ học, thiết bị điện tử, chương trình phần mềm… Mục đích của việc này là tạo ra những thiết bị, chương trình có tính năng như cái ban đầu nhưng không lấy bất cứ cái gì từ cái ban đầu.Đối với phần mềm, Reverse engineering có thể được hiểu là quá trình tìm ra các nguyên lý kỹ thuật của một phần mềm thông qua việc phân tích cấu trúc, chức năng và hoạt động của nó.Còn đối với cracker thì Reverse engineering có nghĩa là dịch ngược. Một trong các cái để thực hành kỹ năng này là Crackmes, Reversemes và Keygenmes. Những chương trình này được lập trình sử dụng những kỹ thuật bảo vệ tương tự như những ứng dụng thật, để bẻ khóa thử. Qua đó để kiểm tra mức độ bảo vệ của ứng và kỹ thuật được sử dụng. Đây là những bài thực hành đòi hỏi phải hiểu rõ công nghệ của ứng dụng sử dụng thì mới có thể vượt qua được. Thậm trí có những crackme khó hơn cả những phần mềm trong thực tế.
2. Software Reverse Engineering:
ReversingPhần mềm ngày nay là một trong những công nghệ phức tạp và hấp dẫn xung quanh chúng ta, dịch ngược phần mềm giống như ta tiến hành “nội soi software”. Dịch ngược soft cần sự kết hợp của kĩ năng và cả hiểu biết về máy tính và phát triển phần mềm, nhưng cũng như các chủ đề rộng lớn khác, sự chuẩn bị cần thiết nhất là sự ham hiểu biết và kiên trì học hỏi. Dịch ngược soft còn bao gồm một số nghệ thuật khác: code breaking, puzzle solving, programming, và logical analysis. Dịch ngược được sử dụng bởi những người khác nhau và cho nhiều mục đích khác nhau, tốt có mà xấu cũng không ít.
3. Ứng dụng của dịch ngược
Trong hầu hết các ngành công nghiệp, reverse dùng để phát triển và hoàn thiện sản phẩm, và đó cũng là chức năng nổi tiếng nhất của nó. Thú vị là điều này lại không thật sự phổ biến trong ngành công nghiệp phần mềm như là với các ngành khác. Ở đây có một vài lý do, nhưng lý do cơ bản nhất đó là phần mềm quá phức tạp nên trong nhiều trường hợp reverse engineering cho mục đích đó quá phức tạp đến nỗi nó chẳng đem lại lợi ích kinh tế nào. Vậy ứng dụng chủ yếu của reversing là gì trong thế giới software? Tổng quan mà nói, ở đây có 2 lĩnh vực chính: liên quan tới bảo mật, và liên quan tới phát triển phần mềm. Những phần tiếp sau sẽ nói về những ứng dụng trên ở cả hai hướng . Dịch ngược – Bảo mật Với một số người gắn liền bảo mật và dịch ngược có thể hơi khó hình dung. Dịch ngược liên quan đến một vài khía cạnh khác của bảo mật. Như là, dịch ngược được dùng trong nghiên cứu mã hóa – một người nghiên cứu dịch ngược một sản phẩm và đánh giá mức độ bảo mật của nó. Dịch ngược còn được sử dụng nhiều trong việc hình dung hoạt động của các malware, ở cả hai đầu chiến tuyến: bởi cả người phát triển malware và người chống lại nó. Cuối cùng, dịch ngược rất phổ biến với cracker, những người dùng nó để phân tích và cả phá bỏ những phương thức bảo vệ phần mềm. Dịch ngược – Phát triển phần mềm Reversing có thể vô cùng hữu ích trong việc phát triển phần mềm. Ví dụ, các nhà phát triển phần mềm có thể sử dụng kỹ thuật dịch ngược để khám phá xem làm thế nào để phần mềm của họ có thể tương thích tốt với các nền tảng khác nhau. Trong trường hợp khác, dịch ngược lại có thể được dùng để xác định chất lượng các đoạn code của bên thứ ba, chẳng hạn như một thư viện mã hay thậm chí hệ là một hệ điều hành. Cuối cùng, đôi khi nó còn được sử dụng để chôm chỉa các thông tin có giá trị từ những sản phẩm của đối thủ cạnh tranh với mục đích nâng cao công nghệ của mình.Trên đây là một ít nội dung trích từ cuốn sách: Reversing Secrets of Reverse Engineering của Eldad Eilam mà tôi tùy tiện chôm vào bài viết này [You must be registered and logged in to see this image.] để giải thích cho các bạn hiểu bản chất của Software Reverse Engineering, và tùy theo cách mà chúng ta ứng dụng kỹ thuật này có thể tạm chia ra làm hai nhóm: Reversing và Cracking, tương ứng là các reverser và cracker.
4. Cracking
Có rất nhiều người đang hiểu sai về cracking. Bẻ khóa phần mềm có thể bị coi là một hành vi vi phạm bản quyền, nhưng nó chỉ là một hạt cát trong sa mạc được gọi là Reverse Engineering, kỹ thuật dịch ngược nhằm chỉnh sửa mã thực thi ở cấp thấp (thập lục phân – Hex hay mã Assembly). Nhưng điều đáng nói là bất cứ ai với một nền tảng cơ bản nhưng vững chắc về lập trình (không phân biệt VB hay C/C++ “bác học”), về cách chuyển đổi giữa các hệ cơ số (nhị phân, thập phân, thập lục phân)… đều có thể tiếp cận reverse engineering chứ nó không có gì là bí hiểm cao siêu như người ta tô vẽ.Như đã phân tích ở trên, Reverse Engeneering được phân ra hai phái hắc/bạch rõ rệt: Một bộ phận là những người nghiêm chỉnh nghiên cứu về bảo mật (chống virus, spyware), về tối ưu (các phương pháp nén file cho nhỏ hơn, đóng gói cho gọn hơn và an toàn hơn, cách phân hoạch tốt hơn cho các section của file thực thi giúp chúng có độ tương thích và độ tin cậy cao hơn). Bên cạnh đó là những người phá phách cho zui hay phá hoại kiếm điểm, kiếm cơm… (bẻ khóa phần mềm, thêm mã độc hại, viết virus…). Người ta chẳng cần hiểu biết quá sâu sắc về ngôn ngữ ASM cũng có thể bẻ khóa phần mềm như thường, chẳng hạn dùng kỹ thuật NOP – No operation chỉ cần click chuột phải sau đó nhấn lệnh vô hiệu hóa đoạn mã yêu cầu đăng ký license; kỹ thuật đảo ngược JMP 74-75, tức là nhập mã đăng ký sai vẫn được chấp nhận; hay kỹ thuật dò real serial number cho những phần mềm cực nhỏ mà người viết ra chẳng thèm quan tâm nhiều đến license… Những kỹ thuật cracking “bác học” này thật ra còn dễ hơn cả việc bạn dò giá trị trong ArtMoney hay Cheat Engine khi muốn cheat game. (Xạo vãi gạo ^_^!)Kết luận: Trên đây là vài dòng sơ lược, nhằm phần nào giúp các bạn newbie nhận thức được thế nào là Reversing và thế nào là Cracking mặc dù cả hai đều chỉ là Reverse Engineering (hay nói huỵch toẹt là bạch đạo và hắc đạo) Một khi các bạn đã xác định rỏ bản chất hai mặt của một vấn đề thì các bạn mới có thể chọn lựa cho mình một hướng đi đúng đắn. Hãy tự tin lựa chọn! Và khi đã chọn cho mình một con đường hãy kiên trì đeo đuổi nó, bạn sẽ thành công.
CiN1 teAm
[You must be registered and logged in to see this link.]
Chào mọi người!Tuy mình học ngành điện ko liên quan đến CNTT nhiều but cũng có chút thích bên lĩnh vực này , vừa học vừa nghiên cứu tí tí [You must be registered and logged in to see this image.] ,ko biết có bạn nào cùng sở thích với mình ko nhỉ ?bạn nào quan tâm thì pm mình, thấy diễn đàn buồn quá cũng muốn tạo 1 sân chơi cho anh em.
Nếu nhiều nhiều thì lập 1 team cho hoành tráng luôn.
1. Reverse engineering là gì?
Nói nôm na Reverse engineering (kỹ thuật đảo ngược) là một quá trình phát hiện ra các công nghệ cơ bản của một thiết bị, đối tượng hay một hệ thống thông qua việc phân tích cấu trúc, chức năng và cách vận hành của chúng. Các đối tượng ở đây có thể bao gồm: thiết bị cơ học, thiết bị điện tử, chương trình phần mềm… Mục đích của việc này là tạo ra những thiết bị, chương trình có tính năng như cái ban đầu nhưng không lấy bất cứ cái gì từ cái ban đầu.Đối với phần mềm, Reverse engineering có thể được hiểu là quá trình tìm ra các nguyên lý kỹ thuật của một phần mềm thông qua việc phân tích cấu trúc, chức năng và hoạt động của nó.Còn đối với cracker thì Reverse engineering có nghĩa là dịch ngược. Một trong các cái để thực hành kỹ năng này là Crackmes, Reversemes và Keygenmes. Những chương trình này được lập trình sử dụng những kỹ thuật bảo vệ tương tự như những ứng dụng thật, để bẻ khóa thử. Qua đó để kiểm tra mức độ bảo vệ của ứng và kỹ thuật được sử dụng. Đây là những bài thực hành đòi hỏi phải hiểu rõ công nghệ của ứng dụng sử dụng thì mới có thể vượt qua được. Thậm trí có những crackme khó hơn cả những phần mềm trong thực tế.
2. Software Reverse Engineering:
ReversingPhần mềm ngày nay là một trong những công nghệ phức tạp và hấp dẫn xung quanh chúng ta, dịch ngược phần mềm giống như ta tiến hành “nội soi software”. Dịch ngược soft cần sự kết hợp của kĩ năng và cả hiểu biết về máy tính và phát triển phần mềm, nhưng cũng như các chủ đề rộng lớn khác, sự chuẩn bị cần thiết nhất là sự ham hiểu biết và kiên trì học hỏi. Dịch ngược soft còn bao gồm một số nghệ thuật khác: code breaking, puzzle solving, programming, và logical analysis. Dịch ngược được sử dụng bởi những người khác nhau và cho nhiều mục đích khác nhau, tốt có mà xấu cũng không ít.
3. Ứng dụng của dịch ngược
Trong hầu hết các ngành công nghiệp, reverse dùng để phát triển và hoàn thiện sản phẩm, và đó cũng là chức năng nổi tiếng nhất của nó. Thú vị là điều này lại không thật sự phổ biến trong ngành công nghiệp phần mềm như là với các ngành khác. Ở đây có một vài lý do, nhưng lý do cơ bản nhất đó là phần mềm quá phức tạp nên trong nhiều trường hợp reverse engineering cho mục đích đó quá phức tạp đến nỗi nó chẳng đem lại lợi ích kinh tế nào. Vậy ứng dụng chủ yếu của reversing là gì trong thế giới software? Tổng quan mà nói, ở đây có 2 lĩnh vực chính: liên quan tới bảo mật, và liên quan tới phát triển phần mềm. Những phần tiếp sau sẽ nói về những ứng dụng trên ở cả hai hướng . Dịch ngược – Bảo mật Với một số người gắn liền bảo mật và dịch ngược có thể hơi khó hình dung. Dịch ngược liên quan đến một vài khía cạnh khác của bảo mật. Như là, dịch ngược được dùng trong nghiên cứu mã hóa – một người nghiên cứu dịch ngược một sản phẩm và đánh giá mức độ bảo mật của nó. Dịch ngược còn được sử dụng nhiều trong việc hình dung hoạt động của các malware, ở cả hai đầu chiến tuyến: bởi cả người phát triển malware và người chống lại nó. Cuối cùng, dịch ngược rất phổ biến với cracker, những người dùng nó để phân tích và cả phá bỏ những phương thức bảo vệ phần mềm. Dịch ngược – Phát triển phần mềm Reversing có thể vô cùng hữu ích trong việc phát triển phần mềm. Ví dụ, các nhà phát triển phần mềm có thể sử dụng kỹ thuật dịch ngược để khám phá xem làm thế nào để phần mềm của họ có thể tương thích tốt với các nền tảng khác nhau. Trong trường hợp khác, dịch ngược lại có thể được dùng để xác định chất lượng các đoạn code của bên thứ ba, chẳng hạn như một thư viện mã hay thậm chí hệ là một hệ điều hành. Cuối cùng, đôi khi nó còn được sử dụng để chôm chỉa các thông tin có giá trị từ những sản phẩm của đối thủ cạnh tranh với mục đích nâng cao công nghệ của mình.Trên đây là một ít nội dung trích từ cuốn sách: Reversing Secrets of Reverse Engineering của Eldad Eilam mà tôi tùy tiện chôm vào bài viết này [You must be registered and logged in to see this image.] để giải thích cho các bạn hiểu bản chất của Software Reverse Engineering, và tùy theo cách mà chúng ta ứng dụng kỹ thuật này có thể tạm chia ra làm hai nhóm: Reversing và Cracking, tương ứng là các reverser và cracker.
4. Cracking
Có rất nhiều người đang hiểu sai về cracking. Bẻ khóa phần mềm có thể bị coi là một hành vi vi phạm bản quyền, nhưng nó chỉ là một hạt cát trong sa mạc được gọi là Reverse Engineering, kỹ thuật dịch ngược nhằm chỉnh sửa mã thực thi ở cấp thấp (thập lục phân – Hex hay mã Assembly). Nhưng điều đáng nói là bất cứ ai với một nền tảng cơ bản nhưng vững chắc về lập trình (không phân biệt VB hay C/C++ “bác học”), về cách chuyển đổi giữa các hệ cơ số (nhị phân, thập phân, thập lục phân)… đều có thể tiếp cận reverse engineering chứ nó không có gì là bí hiểm cao siêu như người ta tô vẽ.Như đã phân tích ở trên, Reverse Engeneering được phân ra hai phái hắc/bạch rõ rệt: Một bộ phận là những người nghiêm chỉnh nghiên cứu về bảo mật (chống virus, spyware), về tối ưu (các phương pháp nén file cho nhỏ hơn, đóng gói cho gọn hơn và an toàn hơn, cách phân hoạch tốt hơn cho các section của file thực thi giúp chúng có độ tương thích và độ tin cậy cao hơn). Bên cạnh đó là những người phá phách cho zui hay phá hoại kiếm điểm, kiếm cơm… (bẻ khóa phần mềm, thêm mã độc hại, viết virus…). Người ta chẳng cần hiểu biết quá sâu sắc về ngôn ngữ ASM cũng có thể bẻ khóa phần mềm như thường, chẳng hạn dùng kỹ thuật NOP – No operation chỉ cần click chuột phải sau đó nhấn lệnh vô hiệu hóa đoạn mã yêu cầu đăng ký license; kỹ thuật đảo ngược JMP 74-75, tức là nhập mã đăng ký sai vẫn được chấp nhận; hay kỹ thuật dò real serial number cho những phần mềm cực nhỏ mà người viết ra chẳng thèm quan tâm nhiều đến license… Những kỹ thuật cracking “bác học” này thật ra còn dễ hơn cả việc bạn dò giá trị trong ArtMoney hay Cheat Engine khi muốn cheat game. (Xạo vãi gạo ^_^!)Kết luận: Trên đây là vài dòng sơ lược, nhằm phần nào giúp các bạn newbie nhận thức được thế nào là Reversing và thế nào là Cracking mặc dù cả hai đều chỉ là Reverse Engineering (hay nói huỵch toẹt là bạch đạo và hắc đạo) Một khi các bạn đã xác định rỏ bản chất hai mặt của một vấn đề thì các bạn mới có thể chọn lựa cho mình một hướng đi đúng đắn. Hãy tự tin lựa chọn! Và khi đã chọn cho mình một con đường hãy kiên trì đeo đuổi nó, bạn sẽ thành công.
CiN1 teAm
[You must be registered and logged in to see this link.]
Chào mọi người!Tuy mình học ngành điện ko liên quan đến CNTT nhiều but cũng có chút thích bên lĩnh vực này , vừa học vừa nghiên cứu tí tí [You must be registered and logged in to see this image.] ,ko biết có bạn nào cùng sở thích với mình ko nhỉ ?bạn nào quan tâm thì pm mình, thấy diễn đàn buồn quá cũng muốn tạo 1 sân chơi cho anh em.
Nếu nhiều nhiều thì lập 1 team cho hoành tráng luôn.