Cracker Handbook 1.0 part 364 ppt

7 82 1
Cracker Handbook 1.0 part 364 ppt

Đang tải... (xem toàn văn)

Thông tin tài liệu

_nhấn Repair Dump và chọn File Dumped_.exe, chạy File dumped_ NanoFix.exe và ta thấy _Yeah!!!!! Unpacked successfull… Còn về phần Cracking mấy Bác tự xử đi…em ko biết gì đâu à nha!!!!! Nếu các bạn muốn giảm dung lượng File dumped_ NanoFix.exe thì chúng ta có thể Delete bớt mấy các Section tàn dư của Arma còn vương vấn lại _Sau khi Xóa _Run thử vẫn chạy ngon lành…Good… GrEeTs Fly Out: Computer_Angel, Zombie, Moonbaby, Hacnho, Benina, kienmanowar, Zoi, Deux, Merc, Trickyboy, Takada, iamidiot, light phoenix, thienthandien, VolX … and you! Nha Trang, Ngày 5 tháng 5 năm 2006 Why Not Bar Armadillo DLL – Unpacking and MORE Contents Table: I.Intro & Preparation: II.Fix Magic Jump and Find OEP: III.Find & Fix CodeSplicing: IV.Find & Fix IAT Elimination: V.Rebuild Import: VI.Fix ImageBase & Relocation: VII.Reduce Size: VIII.Ending: Tools: OllyDBG + Hide plugins + Scripts ,LordPE ,ImportREC 1.6 ,CFF Explorer Skill Request: Basic Using Olly + Knowledge manual unpacking Armadillo. I-Intro & Preparation: Chào mọi người ,hôm nay tricky tui lại hoàn thành thêm phần Tut về Unpack DLL cho Armadillo .Có thể các bạn từng đọc tut của cụ hacnho, tut của MaDMaN bên ARTeam, hay của Whiterat bên ICU… nhưng theo tricky thấy ở các tut đó ,có vài điểm ko nói rõ khiến nhiều bạn gặp rắc rối trong quá trình unpack DLL. Thật ra các điểm này rất cơ bản ,nên đa phần hay bị bỏ qua ,nhưng ko sao, với bài viết này ,hi vọng các bạn có thể tự tin giải quyết các DLL của Armadillo. Nhưng trước khi đi vào vấn đề chính ,ta cần ôn lại các dạng Protect kiểu Standard, Code Splicing và IAT Elimination vì ở DLL, Armadillo chỉ áp dụng được các dạng protect này. Thường thì chúng ta chỉ quen tay unpack theo các tut nước ngoài ,đôi khi làm xong mà trong đầu ko hiểu là mình đang làm gì .Điều này dễ biến chúng ta thành 1 cỗ máy .Mặt khác, nếu nhìn qua phương diện toán học, đôi khi mình xài quen một công thức nào đó ,giải quyết được hàng loạt bài toán mà có bao giờ nghĩ tới cách chứng minh đâu? Cứ nghĩ là có người tìm ra công thức thì phải có người xài chứ . Tuy nhiên ,nếu ko thể tự mình tìm ra “chân lý” ,thì ít nhất cũng phải hiểu cái cách mà người ta đã tìm ra cho mình và hiểu được những gì mình đang làm. Từ đó quay lại vấn đề :Standard Protect là gì? Code Splicing hay IAT Elimination là gì ? Ở đây xin nếu cách hiểu nhanh và gọn cho các bạn chưa rành về chúng: Standard Protection Ta thấy bất kì PE file nào cũng cần IAT (xem thêm cấu trúc PE File). Khi Pack lại, Armadillo sẽ Encrypt sao cho lúc unpack ra trong memory, IAT này sẽ bị sai lệch so với ban đầu, một vài chỗ bị hủy đi bằng các Byte mã hóa. Do đó khi dump tại OEP, ta chỉ dump được phần IAT tầm bậy ,trong khi ko còn Armadillo để hiểu cách Decrypt nó nữa. Các IAT bị hủy do một(hoặc vài) lệnh nhảy nào đó ko được thực hiện (hoặc được thực hiện) .Vì vậy, cần tìm Magic Jump đó để Patch cho nó luôn xảy ra (hoặc là ko xảy ra) ,từ đó ta sẽ có được IAT gốc ban đầu. Code Splicing Qua tay Armadillo IAT nguyên v ẹ n ban đ ầ u File đã được pack. Qua Magic Jump Unpack ra trong memory File đã được pack. IAT th ứ 1 IAT th ứ j IAT th ứ i b ị h ủ y IAT th ứ k b ị h ủ y IAT th ứ n Từ hình trên, ta thấy sau khi unpack ra trong memory, một số đoạn code ban đầu nằm trong file, bây giờ đã bị đá ra ngoài section khác, kèm code rác (code vô nghĩa, ko làm thay đổi giá trị của cách thanh ghi hoặc các biến…) . Trong file được thay thế bằng các lệnh Jump tới các đoạn code nằm trong section đó (kèm code rác). Do đó ,nếu ta dump tại OEP, ta chỉ dump được các lệnh Jump và thiếu mất một số phần code thật ban đầu . Có 2 cách để fix. Một là ta dump thêm phần section chứa các đoạn code bị thiếu, sau đó nối nó vào file đã dump tại OEP. Cách thứ 2, ta men theo từng lệnh Jump, lọc các code rác ra, copy và paste các đoạn code thật quay về tại từng lệnh jump .Ở cách thứ 1 có tool để làm nhanh là ArmTool, ở cách thứ 2 thì có ArmInline. Theo tricky, cách thứ 2 hay hơn, vì nó tạo lại cấu trúc như cũ của file trước khi bị pack. Tuy nhiên cách thứ 1 lại dễ và ít bị sót hơn. IAT Elimination Từ 2 kiểu bảo vệ trên ,các bạn có thể hiểu nhanh chóng ở phần này. Sau khi unpack trong memory, thay vì IAT nằm trong file, lúc này lại bị đá ra ngoài 1 section khác ko thuộc file. Nên khi dump, ta lại bị sót mất phần IAT. Cách fix cũng tương tự như ở Code Splicing, hoặc là dump section đó ra, hoặc là đưa các giá trị IAT quay về 1 section nào đó còn trống trong file, thường là chọn .adata . Và ứng vùng nh ớ c ủ a file m ộ t section khác ko thu ộ c vùng nhớ của file Unpack trong memory Qua tay Armadillo Đoạn code 1 Đoạn code i Đoạn code n File đã được Pack File đã được Pack Jump t ớ i đo ạ n 1 Jump t ớ i đo ạ n i Jump t ớ i đo ạ n n Code rác Code rác Đo ạ n code 1 Đo ạ n code i Đo ạ n code n Code rác Code rác cử viên sáng chói vẫn là ArmInline vì nó làm việc rất nhanh chóng và khá chính xác. Nhưng cần nói thêm, tại sao lại là .adata ? có thể section khác được hay ko? Àh ,khi pack lại, Armadillo tạo ra các section để dùng cho việc unpack là .text1 , .reloc1, .adata, .data1 , .pdata . Sau khi unpack, các section đó ko còn dùng nữa và section .adata có size tương đối lớn so với size của IAT gốc, nên nó thường được chọn làm nơi để redirect các IAT vào .Bạn hoàn toàn có thể chọn bất kì section nào để redirect IAT, miễn sao phần còn trống của nó phù hợp với size của IAT. Chút nữa tricky sẽ mần cho bạn xem. Okie, ta ôn bài đã đủ ,bây giờ xắn tay lên và tiến hành Unpack DLL pack bởi Armadillo. Target kì này vẫn là file UKHook40.DLL của Unikey nhưng ở phiên bản mới nhất Unikey 4 RC1. II- Fix Magic Jump and Find OEP: DLL cũng là PE File như .EXE nên ta có thể load vào Olly và unpack bình thường, có điều sẽ phải mượn qua LoadDLL của Olly tạo 1 main .exe để load nó vào memory. Nào ta bắt đầu tại EP, các bạn phải tự Hide các Anti-Debug của Armadillo đi nhé (IsDebuggerPresent , OutputDebugStringA), check All Exception … : Có thể dùng “he GetModuleHandleA” hoặc script để fix Magic Jump. Ở đây dùng Script cho nhanh (coi như các bạn đã quá quen điều này khi unpack các file .exe) : Sau khi Script chạy xong ,magic jump được tìm thấy và đã fix: . Đoạn code 1 Đoạn code i Đoạn code n File đã được Pack File đã được Pack Jump t ớ i đo ạ n 1 Jump t ớ i đo ạ n i Jump t ớ i đo ạ n n Code rác Code rác Đo ạ n code 1 Đo ạ n. ko? Àh ,khi pack lại, Armadillo tạo ra các section để dùng cho việc unpack là .text1 , .reloc1, .adata, .data1 , .pdata . Sau khi unpack, các section đó ko còn dùng nữa và section .adata có. ngoài 1 section khác ko thuộc file. Nên khi dump, ta lại bị sót mất phần IAT. Cách fix cũng tương tự như ở Code Splicing, hoặc là dump section đó ra, hoặc là đưa các giá trị IAT quay về 1 section

Ngày đăng: 03/07/2014, 18:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan