Hướng Dẫn Thực Tế, Cẩn Trọng

Cách Reverse Engineer Một Ứng Dụng Với Claude Code

Claude Code của Anthropic và công cụ mã nguồn mở REA được nêu tên ở đây để mô tả chúng một cách chính xác. Nightschool AI là đơn vị độc lập, không liên kết hoặc được xác nhận bởi Anthropic hoặc bởi những người tạo ra REA.

Reverse engineering phần mềm có nghĩa là nghiên cứu cách nó hoạt động mà không có mã nguồn gốc, thường là để hiểu nó, làm cho một thứ khác hoạt động cùng với nó, giữ nó dùng được, hoặc tìm ra một vấn đề an ninh.

Đọc toàn bộ câu trả lời

REA là một MCP server và CLI mã nguồn mở cho phép một agent như Claude Code đọc cấu trúc của một chương trình và trả về bằng chứng cụ thể, một file, một function, một call, thay vì một suy đoán. Chỉ cài nó từ repository chính thức của nó, chỉ dùng nó trên phần mềm bạn sở hữu hoặc được phép kiểm tra, giữ một phiên build tách biệt với phiên đã nghiên cứu bản gốc, và nói chuyện với luật sư trước khi đưa ra bất cứ thứ gì xây dựng theo cách này.

Ngày đăng

Điểm chính

  • Reverse engineering nghĩa là nghiên cứu phần mềm đã hoàn thiện để hiểu cách nó hoạt động, thường là không có mã nguồn, vì những lý do như nghiên cứu an ninh, khả năng tương tác, bảo tồn, hoặc đơn giản là hiểu một thứ không có tài liệu.
  • REA là một MCP server và CLI mã nguồn mở, được công bố tại github.com/morluto/rea theo giấy phép MIT, cho phép một agent như Claude Code kiểm tra binary và ứng dụng và trả về bằng chứng: một file, một function, một call.
  • Nghiên cứu cách phần mềm hoạt động được xử lý khác, về mặt pháp lý, so với việc sao chép mã hoặc tài sản được bảo vệ của nó. Hai quyết định của Ninth Circuit, Sega v. Accolade và Sony v. Connectix, thường được trích dẫn về điểm này, nhưng không cái nào là một quy tắc áp dụng chung.
  • Tuyên bố miễn trừ trách nhiệm của riêng REA loại trừ việc giúp vượt qua DRM, kiểm tra license, hoặc hệ thống anti-cheat, và nói rằng đầu ra của nó không cấp bất kỳ quyền nào đối với chương trình gốc. Chỉ kiểm tra phần mềm bạn sở hữu, tự viết, hoặc được phép nghiên cứu.
  • Một quy trình làm việc hai phiên theo kiểu clean-room, một phiên viết đặc tả và một phiên build riêng biệt chỉ đọc đặc tả kết quả, hỗ trợ cho một luận điểm clean-room sau này. Đó là một thông lệ, không phải một bảo đảm pháp lý, và nó không thay thế cho việc có luật sư.
Bài học miễn phí · không cần tài khoảnGặp Gỡ ClaudeVì Sao Chọn Claude?6 phútBắt đầu bài học miễn phí

Sao chép và dán

Prompt bạn có thể dùng ngay hôm nay

Kiểm tra sanity thiết lập trên code bạn đã biết

REA đã được cài đặt và thiết lập cùng với bạn bây giờ. Mở ứng dụng nhỏ mà tôi tự viết tại đường dẫn tôi cung cấp cho bạn, và với mỗi file, cho tôi biết nó có những function nào, mỗi function gọi cái gì, và bất cứ thứ gì trông như xử lý input từ bên ngoài chương trình. Chỉ báo cáo những gì đầu ra thực tế của REA cho thấy, và nói rõ nếu có điều gì đó có vẻ không chắc chắn.

Chạy cái này trên ứng dụng nhỏ của riêng bạn trước cho bạn biết liệu thiết lập có thực sự hoạt động trước khi bạn hướng REA vào bất cứ thứ gì lớn hơn.

Một phiên đầu tiên chỉ viết đặc tả

Nghiên cứu ứng dụng này bằng REA và viết một đặc tả bằng ngôn ngữ thông thường về những gì nó làm: các interface của nó, các định dạng dữ liệu nó đọc và viết, và hành vi của mỗi function chính, hoàn toàn bằng từ ngữ của riêng bạn. Không trích dẫn hoặc dán code gốc, pseudocode, hoặc đầu ra binary trực tiếp vào đặc tả. Dừng lại ngay khi đặc tả được viết xong. Chưa bắt đầu xây dựng bất cứ thứ gì.

Đây là nửa đầu của quy trình làm việc hai phiên ở dưới. Lưu đầu ra vào một file văn bản thường trước khi bạn đóng phiên này.

Một phiên build không bao giờ thấy bản gốc

Đây là một tài liệu đặc tả được viết trong một phiên reverse-engineering riêng biệt. Hãy xây dựng một triển khai mới, độc lập, thỏa mãn mọi điều trong đặc tả này. Bạn chưa thấy ứng dụng gốc, binary của nó, hoặc mã nguồn của nó, và bạn không nên yêu cầu xem nó. Nếu có điều gì trong đặc tả không rõ ràng, hãy nói với tôi thay vì đoán xem chương trình gốc đã làm gì.

Bắt đầu cái này trong một phiên mới chỉ với file đặc tả đi kèm, không có transcript từ phiên đầu tiên.

Kiểm tra pháp lý trước khi bạn tiến xa hơn

Tôi sắp reverse engineer một phần mềm bằng REA. Trước khi tôi bắt đầu, hãy liệt kê những gì bạn muốn biết để đánh giá liệu đây có thực sự là thứ tôi được phép làm hay không: ai sở hữu phần mềm, liệu một license hoặc điều khoản dịch vụ đã đề cập đến vấn đề này chưa, và liệu DRM, kiểm tra license, hoặc phần mềm anti-cheat có liên quan ở đâu không. Đánh dấu bất cứ điều gì nghe như cần một luật sư thực sự hơn là suy đoán tốt nhất của bạn.

Coi câu trả lời là một danh sách câu hỏi để đi xác minh, không phải là một sự thông qua về pháp lý.

Đọc tuyên bố miễn trừ trách nhiệm của REA trước một phiên thực sự

Mở file DISCLAIMER.md của REA từ repository của chính nó và tóm tắt, bằng ngôn ngữ thông thường, những loại reverse engineering nào mà dự án nói sẽ không giúp, và nó nói gì về các quyền mà một người có được từ việc dùng đầu ra của nó. Tôi muốn xác nhận là tôi không sắp yêu cầu bạn làm điều gì mà các quy tắc của chính công cụ này đã loại trừ.

Đáng để lặp lại sau mỗi bản cập nhật; một tuyên bố miễn trừ trách nhiệm có thể thay đổi cùng với phần mềm.

Toàn bộ hướng dẫn

Chạm vào một mục để mở.

Về hướng dẫn này

Một bài viết về công cụ tên REA, cho phép một agent AI nghiên cứu phần mềm mà nó không viết ra, đã lan truyền trong tuần này, và bài viết đó nêu tên cụ thể Claude Code của Anthropic là một trong các agent mà nó kết nối tới. Hướng dẫn này dành cho hai nhóm người đọc cùng lúc: những người đơn giản là tò mò reverse engineering là gì và vì sao người ta làm việc đó, và các developer muốn thử REA an toàn với Claude Code trên một thứ mà họ thực sự sở hữu. Bài viết đi qua reverse engineering nghĩa là gì, REA là gì và nó có thể đọc được những gì, ranh giới pháp lý thực sự giữa nghiên cứu phần mềm và sao chép nó, một danh sách kiểm tra an toàn nên chạy trước khi bạn cài bất cứ thứ gì có tầm ảnh hưởng lớn như vậy, các bước cài đặt và phiên bản Node.js mà README của REA yêu cầu hiện nay, một quy trình làm việc hai phiên theo kiểu clean-room, và những giới hạn thực tế của toàn bộ cách tiếp cận này. Không có nội dung nào ở đây là tư vấn pháp lý, và có một quy trình cẩn trọng không phải là lý do để bạn ngừng tự kiểm tra kết quả.

Một Lĩnh Vực Có Lịch Sử Lâu Đời

Reverse Engineering Thực Sự Nghĩa Là Gì

Reverse engineering nghĩa là nghiên cứu một phần mềm đã hoàn thiện để hiểu cách nó hoạt động, thường là không có mã nguồn gốc hoặc bất kỳ tài liệu thiết kế nào đi kèm với nó. Bạn nhìn vào những gì nó làm, nó được lắp ghép ra sao, và nó giao tiếp với cái gì, và từ đó bạn làm việc ngược lại để có một mô hình về hành vi của nó.

Người ta làm điều này vì những lý do chủ yếu không có gì hào nhoáng và chủ yếu là hợp pháp. Các nhà nghiên cứu an ninh reverse engineer các chương trình để tìm ra một lỗ hổng trước khi ai đó có ý định xấu hơn làm điều đó. Các developer reverse engineer các định dạng file và giao thức network để một chương trình mới có thể tương tác được với một chương trình cũ mà không ai sẽ viết tài liệu cho họ. Các nhà lưu trữ và người đam mê reverse engineer phần mềm cũ để giữ nó chạy được một khi phần cứng gốc và công ty đứng sau nó đều đã biến mất. Và đôi khi lý do chỉ đơn giản là một chương trình mà bạn phụ thuộc vào làm một điều gì đó không có tài liệu, và bạn cần biết đó là gì, trước khi bạn có thể tin tưởng nó hoặc tìm cách xử lý nó.

Không có gì trong số này là mới. Các nhà nghiên cứu an ninh và các nhà lưu trữ phần mềm đã làm việc này hàng chục năm với disassembler và debugger, từ lâu trước khi có bất kỳ agent AI nào tồn tại. Thứ đã thay đổi là tốc độ: một agent có thể đọc một bản disassembly hoặc một method đã decompile và tóm tắt nó trong vài giây, công việc mà trước đây mất của một người có kỹ năng cả giờ đồng hồ. Đó là một sự gia tăng năng lực thực sự, và đó chính là lý do ranh giới pháp lý và đạo đức ở phần sau của hướng dẫn này quan trọng hơn bây giờ, không phải ít hơn, vì cái rào cản đã từng làm chậm người ta giữa sự tò mò và việc sao chép nay hầu như đã biến mất.

Phần còn lại của hướng dẫn này cụ thể hơn: nó đi qua một công cụ, tên là REA, kết nối một agent như Claude Code với loại phân tích này, và những thói quen đáng có sẵn trước khi bạn hướng nó vào bất cứ thứ gì.

Một Người Chơi Mới

REA Là Gì, Và Nó Có Thể Đọc Được Những Gì

REA tự mô tả mình là một cách để reverse engineer phần mềm từ hành vi ứng dụng xuống tới các binary gốc. Những gì nó thực sự có thể thấy tùy vào loại mục tiêu.

Một MCP server và một CLI

REA là phần mềm mã nguồn mở được công bố tại github.com/morluto/rea, với mã của riêng REA theo giấy phép MIT. Nó chạy như một Model Context Protocol server mà một agent như Claude Code có thể gọi, và như một command thông thường bạn có thể tự chạy từ terminal.

Binary gốc

Theo README của chính REA, nó có thể lấy ra pseudocode, assembly, string, symbol, call, và reference từ một binary đã compile, hoạt động qua các analysis backend như Hopper, Ghidra, IDA, hoặc Kuna.

Ứng dụng JavaScript và Electron

Đối với mục tiêu JavaScript và Electron, README của REA mô tả việc đọc module, import, source map, route, IPC channel, và quan hệ giữa một chương trình và bất kỳ native add-on nào nó load.

Assembly .NET và APK Android

Đối với assembly .NET, là metadata và các chỉ thị CIL. Đối với APK Android, là các khai báo manifest, class, method đã decompile, và các reference giữa chúng, lại theo README của dự án.

Bên ngoài ứng dụng

README đó cũng liệt kê website, packet capture, firmware image, cơ sở dữ liệu SQLite, binary Go và Rust, và model file trong số các mục tiêu mà các công cụ phân tích của REA có thể hướng tới.

Bằng chứng, không phải suy đoán

Theo README, chủ đích thiết kế là một phát hiện chỉ ngược lại một thứ cụ thể, một file, một function, một call, để bạn có thể tự kiểm tra thay vì tin vào bản tóm tắt của agent.

Đọc Phần Này Trước Khi Bạn Cài Bất Cứ Thứ Gì

Ranh Giới Pháp Lý: Nghiên Cứu Phần Mềm So Với Sao Chép Nó

Sự khác biệt quan trọng nhất ở đây là giữa nghiên cứu cách một thứ hoạt động và sao chép phần biểu đạt được bảo vệ của nó. Reverse engineering để học một interface, một định dạng file, hoặc một phần hành vi, về mặt pháp lý, là một hành động khác với lấy mã hoặc tài sản của người khác đưa vào một sản phẩm của riêng bạn.

Thông lệ được xây dựng quanh sự khác biệt đó được gọi là clean-room design. Một người hoặc một phiên nghiên cứu bản gốc và viết một đặc tả bằng ngôn ngữ thông thường về những gì nó làm: interface, định dạng dữ liệu, hành vi của nó, bằng từ ngữ của riêng họ, không có mã gốc nào được sao chép vào tài liệu. Một người hoặc một phiên riêng biệt khác, chưa từng thấy bản gốc, sau đó xây dựng một triển khai mới chỉ từ đặc tả đó. Điểm mấu chốt là kết quả cuối cùng có thể được chứng minh là đến từ một bản mô tả bằng văn bản, không phải từ chính công trình gốc.

Hai quyết định của tòa án Mỹ cũ hơn thường được trích dẫn về điểm này, và đáng để biết về chúng, mặc dù không cái nào là một sự cho phép chung để reverse engineer bất cứ thứ gì. Sega Enterprises Ltd. v. Accolade, Inc., được Ninth Circuit quyết định năm 1992, liên quan đến một công ty đã reverse engineer hệ thống lockout của một console chơi game để các game của riêng họ chạy được trên console đó. Tòa án nhận định rằng việc sao chép trung gian liên quan trong quá trình reverse engineering đó, thực hiện để tiếp cận các yếu tố chức năng không được bảo vệ cần thiết để game chạy được trên phần cứng, là fair use dựa trên các sự kiện cụ thể của vụ án đó. Sony Computer Entertainment, Inc. v. Connectix Corp., được cùng tòa án đó quyết định năm 2000, đi đến kết luận tương tự khi một công ty reverse engineer phần mềm khởi động của một console để xây dựng một emulator cho một loại máy tính khác, lại coi việc sao chép trong quá trình là fair use nhằm phục vụ cho một sản phẩm được viết độc lập, có khả năng tương tác.

Hãy coi cả hai điều này là bối cảnh lịch sử, không phải lời khuyên cho tình huống của bạn. Đó là hai quyết định phúc thẩm cụ thể về các sự kiện cụ thể, fair use được quyết định theo từng vụ án, các quốc gia khác vạch ra những ranh giới này khác nhau, và các luật sau này nhằm chống lại việc vượt qua các biện pháp bảo vệ sao chép đã thu hẹp điều này đáng kể đối với phần mềm gắn với DRM. Bất kỳ ai định xây dựng trên loại công việc này, đặc biệt là bất cứ thứ gì dự định đưa ra thị trường hoặc bán, nên nói chuyện với một luật sư thực sự trước khi dựa vào bất kỳ điều gì trong số này.

REA vạch ra ranh giới của riêng mình độc lập với những gì một tòa án cuối cùng có thể quyết định về một vụ án cụ thể nào đó. Theo DISCLAIMER.md của dự án, REA không hỗ trợ và sẽ không giúp vượt qua DRM, kiểm tra license, hệ thống anti-cheat, hoặc các biện pháp bảo vệ kỹ thuật khác, hoặc sao chép phần mềm độc quyền hoặc mã và tài sản được bảo vệ của nó, và dự án nói rõ ràng rằng đầu ra phân tích không cấp bất kỳ quyền nào đối với chương trình gốc. Quy tắc thực tế theo đó: chỉ phân tích phần mềm bạn sở hữu, tự viết, hoặc được phép kiểm tra theo cách khác.

Trước Khi Bạn Cài Bất Cứ Thứ Gì

Cài Đặt An Toàn, Không Chỉ Nhanh

Một công cụ có thể đọc binary và chạy các analysis backend đáng được sự cẩn trọng giống như bạn dành cho bất kỳ phần mềm nào có tầm ảnh hưởng lớn như vậy vào hệ thống của bạn.

Chỉ cài từ nguồn chính thức

Dự án này sống tại github.com/morluto/rea và được đưa lên npm dưới tên package rea-agents. Tự gõ tên đó thay vì theo một link trong mô tả video, một bài post forum, hoặc một tin nhắn chat.

Cảnh giác với hàng nhái

Một dự án thu hút sự chú ý nhanh như vậy sẽ hút theo những kẻ bắt chước. Một repository hoặc package tự gọi mình bằng tên gần giống với tên của REA, được host ở nơi khác, là lý do để dừng lại và kiểm tra, không bao giờ là một lối tắt.

Chạy các binary không rõ nguồn gốc trong VM

Nếu bạn hướng một analysis backend vào một binary bạn không tự viết và không hoàn toàn tin tưởng, hãy làm công việc đó trong một virtual machine hoặc một môi trường có thể bỏ đi khác, không phải trên máy bạn dùng cho mọi thứ.

Cố định một phiên bản

Cài một phiên bản cụ thể thay vì luôn kéo bản mới nhất, và đọc những gì đã thay đổi trước khi bạn chuyển sang bản mới. npm registry liệt kê 6.8.0 là phiên bản phát hành mới nhất của rea-agents tại thời điểm viết bài này.

Đọc tuyên bố miễn trừ trách nhiệm một lần, thực sự đọc

DISCLAIMER.md ngắn. Đọc toàn bộ nó trước phiên thực sự đầu tiên của bạn với công cụ này, không phải sau khi có điều gì đó đã đi sai hướng.

Khởi Chạy Nó

Cài Đặt REA Vào Claude Code

Phiên bản Node.js quan trọng ở đây. README của chính REA nêu rõ yêu cầu của nó chính xác là: Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), hoặc 26.12.1+, cộng với npm. Kiểm tra lại với README trực tiếp trước khi bạn cài, vì loại yêu cầu này thay đổi giữa các bản phát hành.

Lệnh thiết lập là npx rea-agents setup. Theo README, nó dẫn bạn qua việc chọn các agent nào để đăng ký REA với, cho bạn thấy các thay đổi nó đề xuất thực hiện trước khi bạn đồng ý, và giữ lại bản sao lưu cấu hình hiện có của bạn. Khởi động lại agent của bạn sau đó để nó nhận MCP server mới; chính hướng dẫn của REA nói rõ điều này.

Đối với một bản cài đặt command-line bền vững hơn là chạy npx một lần, README mô tả npm install --global rea-agents, theo sau là rea --help để xem những gì có sẵn. Từ một bản cài đặt global, rea update đưa bạn sang phiên bản mới theo lịch trình của riêng bạn thay vì tự động, và chạy npx rea-agents@latest setup sau đó cập nhật lại đăng ký agent để khớp.

Trước khi hướng REA vào bất cứ thứ gì bạn không hoàn toàn sở hữu, hãy thử nó trên một ứng dụng nhỏ bạn tự viết trước. Với REA đã được thiết lập, yêu cầu Claude Code mở ứng dụng nhỏ đó và mô tả những gì nó thấy, function theo function, và so sánh điều đó với những gì bạn đã biết mình viết. Bài tập đó xác nhận thiết lập thực sự đã hoạt động, và nó cho bạn cảm giác về cách bằng chứng của REA, một file, một function, một call, đọc như thế nào trong thực tế trước khi bạn dựa vào nó cho bất cứ điều gì quan trọng.

Một Hình Thức An Toàn Hơn Cho Công Việc

Một Quy Trình Làm Việc Clean-Room Hai Phiên

Đưa ý tưởng clean-room ở trên vào một hình thức cụ thể bằng cách dùng hai phiên Claude Code riêng biệt. Phiên đầu là một phiên viết đặc tả: hướng REA vào phần mềm bạn được phép nghiên cứu, và yêu cầu agent viết một đặc tả bằng ngôn ngữ thông thường về interface, định dạng dữ liệu, và hành vi của các function chính của nó, hoàn toàn bằng từ ngữ của riêng nó, không có mã gốc hoặc pseudocode nào được sao chép nguyên văn vào tài liệu.

Phiên thứ hai là một phiên build, được bắt đầu mới, không có bộ nhớ của phiên đầu. Chỉ đưa cho nó file đặc tả, không gì khác: không phải binary gốc, không phải transcript của phiên đầu, không phải đầu ra thô của REA. Yêu cầu nó xây dựng một triển khai mới, độc lập, thỏa mãn đặc tả, và cho bạn biết khi có điều gì trong đặc tả đó không rõ ràng thay vì lặng lẽ đoán xem chương trình gốc đã làm gì.

Giữ chúng là hai phiên thực sự riêng biệt, không phải hai giai đoạn của một cuộc hội thoại dài, là phần quan trọng. Một phiên duy nhất vừa nghiên cứu bản gốc rồi viết bản thay thế đã làm mờ chính xác ranh giới mà clean-room design tồn tại để giữ cho rõ ràng, vì không có cách nào để chứng minh, sau sự việc, rằng nửa sau không dựa vào nửa đầu.

Hãy sáng suốt về những gì điều này mang lại cho bạn. Một quy trình hai phiên có tổ chức là một thông lệ hỗ trợ cho một luận điểm clean-room sau này nếu có ai từng hỏi một thứ gì đó đã được xây dựng ra sao. Nó không phải là một bảo đảm pháp lý tự thân, và nó không thay thế việc có một luật sư thực sự xem qua bất cứ thứ gì bạn định đưa ra thị trường hoặc bán.

Đặt Kỳ Vọng

Giới Hạn Thực Tế Của Quy Trình Này

REA và quy trình trong hướng dẫn này giảm thiểu rủi ro; không cái nào loại bỏ nó. Hãy ghi nhớ những giới hạn này khi bạn đã mở một thứ gì đó.

Nó có thể bỏ lỡ điều gì đó trên các ứng dụng lớn

Một ứng dụng lớn có diện tích bề mặt lớn hơn mức một lần phân tích có thể bao quát. Coi một lần chạy sạch là một mẫu của những gì có ở đó, không phải bằng chứng là không có gì bị bỏ lỡ.

Coi đầu ra là manh mối, không phải kết luận

Bằng chứng chỉ vào một file, một function, hoặc một call là một nơi để đi kiểm tra, không phải là một sự thật đã được xác lập tự thân. Xác minh bất cứ điều gì bạn định thực sự dựa vào bằng cách tự đọc đầu ra thực tế.

Nó dùng rất nhiều context

Phân tích binary và bytecode chi tiết tạo ra rất nhiều văn bản nhanh chóng. Dự tính context của một phiên sẽ đầy nhanh với bất cứ thứ gì lớn hơn một ứng dụng nhỏ, và lập kế hoạch cho một quy trình hai phiên với điều đó trong đầu.

Cả phần mềm và luật đều tiếp tục thay đổi

Các command của REA, yêu cầu Node.js của nó, và những gì nó có thể đọc đều sẽ thay đổi giữa các phiên bản, và bức tranh pháp lý xung quanh reverse engineering cũng thay đổi. Kiểm tra lại cả hai trước khi dựa vào bất cứ điều gì bạn đọc hôm nay.

Một cặp mắt thứ hai vẫn hữu ích

Đối với bất cứ điều gì vượt quá một thí nghiệm cá nhân, một người đánh giá hiểu cả code và ranh giới pháp lý đáng giá hơn một prompt cẩn thận nữa.

Luyện Tập Prompting Hẹp, Có Thể Kiểm Chứng Trước Khi Bạn Thử Điều Này Thực Sự

Trước khi bạn hướng bất kỳ công cụ reverse-engineering vào một thứ bạn không hoàn toàn sở hữu, sẽ hữu ích nếu bạn đã có thói quen đưa cho một agent một nhiệm vụ hẹp và tự kiểm tra đầu ra của nó so với thực tế. Bài học đầu tiên miễn phí của Nightschool AI đi qua chính xác loại prompting cẩn trọng đó với Claude Code của Anthropic.

Câu hỏi thường gặp

Reverse engineering thực sự nghĩa là gì?

Nó nghĩa là nghiên cứu một phần mềm đã hoàn thiện để hiểu cách nó hoạt động, thường là không có mã nguồn gốc hoặc tài liệu thiết kế. Người ta làm điều này cho nghiên cứu an ninh, để làm một thứ gì đó tương tác được với phần mềm họ không kiểm soát, để giữ phần mềm cũ dùng được, hoặc đơn giản là để hiểu một chương trình không có tài liệu đang làm gì.

Reverse engineering có hợp pháp không?

Điều này phụ thuộc rất nhiều vào những gì bạn nghiên cứu, cách bạn nghiên cứu nó, bạn ở đâu, và bạn làm gì với những gì bạn học được. Nghiên cứu cách một thứ hoạt động được xử lý khác với sao chép mã hoặc tài sản được bảo vệ của nó. Hướng dẫn này không phải là tư vấn pháp lý; hãy nói chuyện với một luật sư thực sự trước khi dựa vào bất kỳ điều gì trong số này cho một việc thực tế.

REA, công cụ mà hướng dẫn này đề cập, là gì?

REA là một MCP server và công cụ command-line mã nguồn mở, được công bố tại github.com/morluto/rea theo giấy phép MIT, cho phép một agent như Claude Code của Anthropic kiểm tra binary, ứng dụng, và phần mềm khác và trả về bằng chứng, như một file, một function, hoặc một call, thay vì một suy đoán bằng ngôn ngữ thông thường.

REA yêu cầu phiên bản Node.js nào?

Theo README của chính REA, tại thời điểm viết bài này, nó yêu cầu Node.js 22.x (>=22.23.4), 24.x (>=24.22.1), hoặc 26.12.1+, cộng với npm. Kiểm tra README trực tiếp trước khi bạn cài, vì các yêu cầu phiên bản như thế này thay đổi giữa các bản phát hành.

Làm thế nào để tôi cài REA vào Claude Code?

Chạy npx rea-agents setup, chọn các agent nào để đăng ký nó với, xem lại các thay đổi nó đề xuất trước khi đồng ý, và khởi động lại agent của bạn sau đó. Đối với một CLI bền vững thay thế, npm install --global rea-agents theo sau là rea --help, và rea update sau này để chuyển phiên bản một cách có chủ đích.

Quy trình làm việc clean-room là gì, và tại sao dùng hai phiên?

Một phiên viết đặc tả nghiên cứu phần mềm gốc và viết một đặc tả bằng ngôn ngữ thông thường về hành vi của nó, không có mã gốc được sao chép vào. Một phiên build riêng biệt, không có bộ nhớ của phiên đầu và không có quyền truy cập vào bản gốc, xây dựng mã mới chỉ từ đặc tả đó. Giữ hai phiên thực sự tách biệt hỗ trợ cho một luận điểm clean-room sau này; một phiên bị trộn lẫn thì không.

REA sẽ không giúp gì?

Theo DISCLAIMER.md của chính nó, REA không hỗ trợ và sẽ không giúp vượt qua DRM, kiểm tra license, hoặc hệ thống anti-cheat, hoặc sao chép phần mềm độc quyền hoặc tài sản được bảo vệ của nó. Nó cũng nói rằng đầu ra của nó không cấp bất kỳ quyền nào đối với chương trình gốc, và rằng nó chỉ nên được dùng trên phần mềm bạn sở hữu, tự viết, hoặc được phép kiểm tra.

Giới hạn thực tế của REA là gì?

Nó có thể bỏ lỡ điều gì đó trên các ứng dụng lớn, vậy nên một lần chạy sạch là một mẫu, không phải một bảo đảm. Đầu ra của nó là một manh mối đáng kiểm tra, không phải một kết luận đã được xác lập. Phân tích chi tiết cũng tạo ra rất nhiều văn bản, vậy nên nó có thể dùng hết context của một phiên nhanh chóng, đặc biệt với bất cứ thứ gì lớn hơn một ứng dụng nhỏ.

Hướng dẫn này có liên kết với Anthropic hoặc với những người tạo ra REA không?

Không. Đây là một hướng dẫn giáo dục độc lập từ Nightschool AI. Nó nêu tên Claude Code của Anthropic và dự án mã nguồn mở REA chỉ để mô tả cách chúng thực sự hoạt động, không có liên kết, hợp tác, hoặc xác nhận từ Anthropic hoặc từ những người tạo ra REA theo bất kỳ chiều hướng nào.

Luyện Tập Các Thói Quen Trước Khi Bạn Reverse Engineer Bất Cứ Thứ Gì Thực Sự

Một nhiệm vụ hẹp, một đặc tả bạn thực sự có thể kiểm tra, và một sự nghi ngờ lành mạnh với câu trả lời đầu tiên của chính bạn quan trọng hơn bất kỳ công cụ đơn lẻ nào ở đây.

Nightschool AI là một nền tảng học tập độc lập và không liên kết, không được Anthropic chứng thực hoặc tài trợ. Claude là nhãn hiệu của Anthropic, PBC. Bạn đang tìm Claude Academy chính thức của Anthropic? Truy cập academy.claude.com.