1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracking part 42 pps

5 323 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 148,54 KB

Nội dung

00401223 | PUSH evdcm2.00402117 | ASCII "Sorry, Serial not valid !" Double click vào dòng đó, chúng ta đến đây : Code: 0040120E | . E8 79000000 | CALL <JMP.&USER32.GetDlgItemTextA | GetDlgItemTextA <== set breakpoint ở đây 00401213 | . A3 FB204000 | MOV DWORD PTR DS:[4020FB], EAX 00401218 | . 33C0 | XOR EAX, EAX 0040121A | \ EB 19 | JMP SHORT evdcm2.00401235 0040121C | > 6A 00 | PUSH 0 | Style= MB_OK:MB_APPLMODAL 0040121E | . 68 0F214000 | PUSH evdcm2.0040210F | Title = "CrackMe" 00401223 | . 68 17214000 | PUSH evdcm2.00402117 | Text = "Sorry, Serial not invalid !" <== Chúng ta đang ở đây 00401228 | . 6A 00 | PUSH 0 | hOwner = NULL 0040122A | . E8 69000000 | CALL <JMP.&USER32.MessageBoxA> | MessageBoxA 0040122F | . 50 | PUSH EAX | ExitCode 00401230 | . E8 7B000000 | CALL <JMP.&KERNEL32.ExitProcess> | ExitProcess 00401235 | > 68 50204000 | PUSH evdcm2.00402050 0040123A | . 5E | POP ESI 0040123B | . E8 C0FDFFFF | CALL evdcm2.00401000 00401240 | . A3 FF204000 | MOV DWORD PTR DS:[4020FF], EAX 00401245 | . E8 B6FDFFFF | CALL evdcm2.00401000 0040124A | . 55 | PUSH EBP 0040124B | . B8 07214000 | MOV EAX, evdcm2.00402107 00401250 | . 8BE8 | MOV EBP, EAX 00401252 | . FE45 00 | INC BYTE PTR SS:[EBP] 00401255 | . E8 A6FDFFFF | CALL evdcm2.00401000 Nhìn lên trên chúng ta biết địa chỉ nên đặt breakpoint là 0040120E , click vào đó nhấn F2, xong nhấn F9 để Run chương trình. Nhập name : the_lighthouse và serial : 1234567890. Bấm check và ngay lập tức Olly nhả y ra => breakpoint của chúng ta đã hoạt động và chúng ta ice tại địa chỉ 0040120E. Nhìn xuống dưới chúng ta thấy có 3 lệnh CALL càn chú ý là ở các địa chỉ : 0040123B, 00401245 và 00401255. Nhìn sơ qua thì chúng ta thấy cả 3 lệnh CALL này khá giống nhau, chẳng biết chọn cái nào bây giờ. Nhưng em mách cho các bác nhá, chúng ta hãy trace đến lệnh call thứ 3 đó, lí do bởi thường thì lệnh CALL cuối cùng sẽ làm nhiệm vụ CHECK serial (cái này ngộ quá ta :)). Okey, bây giờ chúng ta trace over đến đó bằng cách dùng F8 - lưu ý ở đây các bác phải dùng trace over nếu không chưa kị p đến "nhà nàng" 00401255 đã bị lạc giữa mê cung assemble thì dễ xa nhau lắm ;) Xong, đến được nhà nàng rồi, bây giờ chúng ta nhấn F7 (trace into) để mở cửa vào nhà thôi. Và đây là bên trong nhà nàng ( hơi bị rộng đấy :sick: ) : Code: 00401000 | $ 807D 00 01 | CMP BYTE PTR SS:[EBP], 1 <== chúng ta đang ở đây 00401004 | .\ 74 22 | JE SHORT evdcm2.00401028 00401006 | . 33C0 | XOR EAX, EAX 0040108B | . 5E | POP ESI 0040108C | . 3B16 | CMP EDX, DWORD PTR DS:[ESI] <== rất quan trọng 0040108E | .\ 75 01 | JNZ SHORT evdcm2.00401091 00401090 | . C3 | RET Okie, chúng ta trace into đến 0040108C thôi. Và hãy nhìn vào khung nhỏ nhỏ bên dưới, chúng ta thấy như sau : Code: DS : [004020FF]=499602D2 EDX=00472A37 Lệnh CMP dùng để so sánh, vậy ở đây chắc là so sánh 2 số serial giống như ở phần 1 rồi. Nhưng mà sao lạ quá , 499602D2 là cái số nào, lúc này ta nhập 1234567890 mà. Ah, thì ra đây là hệ hex (hex là hệ thập lục phân) của nó. Nếu các bác không tin thì có thể dùng calculator có sẵn trong windows để tính lại. Chúng ta quay lại vấn đề thôi. Vậy thì chắc 472A37 là real serial rồi, nhưng mà fake serial được chuyển sang hệ hex thì chắc real serial cũng được chuyển sang hex. Vậy ta phải chuyển nó sang hệ dec (hệ thập phân) thôi. Và số mà ta tìm được là 4663863. Đóng Olly lại, mở file evdcm2 lên, nhập name : the_lighthouse và serial : 4663863 và ;) the_lighthouse (http://www.reaonline.net ) IDA Pro Advanced changes our life Author: _[kienmanowar]_ I. Intro : Chào tất cả các anh em REA, đã lâu rồi tôi không có viết tut kể từ ngày lão nhỏ rút lui.Không hiểu lão nhỏ đang bận cái quái quỉ gì mà ngay cả YM cũng chẳng thấy thò mặt mũi lên lấy 1 lần.Mặc dù rất ngứa tay và muốn viết thật nhiều cho REA, nhưng khi đặt tay lên bàn phím tôi không biết phải bắt đầu từ đâu và viết về vấn đề gì, cộng thêm phải đi cày để gom tiền cưới vợ nên c ũng chẳng có nhiều thời gian khà khà.Lão nhỏ ra đi để lại độc một cái tut về IDA cho anh em, mà trong khi đó chắc anh em cũng như tôi còn muốn nhiều hơn thế, nhưng thôi thì cũng phải thông cảm cho lão nhỏ chắc giờ này lão cũng đi cày để gom tiền như tôi thôi. Trong REA, hễ cứ thấy động tới IDA là y như rằng anh em lặng im phăng phắc chẳng thấy bàn tán gì nhiều, tôi cũng như anh em thôi cũng muốn vo ọc IDA lắm chứ nhưng …. Hôm rồi, thấy anh Be có tạo một Thread “Learning IDA online” tôi nghĩ rằng đây là một Thread rất cần thiết và bổ ích cho anh em muốn tìm hiểu về IDA như tôi, nhưng ngặt nỗi tài liệu về IDA khá khiêm tốn trong khi đó ứng dụng của nó trong Reverse lại là rất lớn.Hii anh Be đã lên tiếng thì thằng em này cũng cố theo, hôm nay mạn phép xin viết một bài rất cơ bản về IDA để anh em đọc chơi, anh em nào đã biết rồi thì xin góp ý cho bài viết để tôi còn biết đường mà sửa, còn những anh em nào chưa biết thì …. Let’s go J Bài viết này tôi tổng hợp lại từ bài viế t của tác giả BlackBird, đã viết từ năm 2000.Có thể anh em cho rằng nó quá cũ, nhưng có một câu “Cũ người mới ta”, thế giới đã đi trước chúng ta bao nhiêu năm thì giờ đây chúng ta phải chắt lọc những gì tính túy nhất để mà học hỏi.Bài viết này tôi sẽ giới thiệu cho các bạn một số chức năng của IDA, để các bạn thấy được tại sao IDA lại được đánh giá cao đến thế. Như các bạn thấy đối với những Newbies thì khi nhìn vào cửa sổ chương trình IDA, hehe điều đầu tiên họ làm là nhấn nút “X” ở góc trên phải màn hình, để làm gì thì khỏi nói các bạn cũng biết nhưng còn đối với những Elite Reverses thì IDA lại là một công cụ không thể thiếu được.Tại sao các Newbies mới ban đầu khi tiếp xúc với IDA lại có thái độ như trên, đó là bởi vì IDA có quá nhiều các hàm và các chức nă ng mở rộng đồng thời việc sử dụng IDA phức tạp hơn nhiều so với W32Dasm.Phần tiếp theo đây của bài viết sẽ đưa ra những lời giải thích ngắn gọn và trong sáng nhất về việc tại sao bạn nên sử dụng IDA trong khi bạn đã khá thành thạo trong việc sử dụng W32Dasm. II. IDA: A power disassembler Điều đầu tiên mà chúng ta nhận thấy một cách rõ ràng khi chạy IDA đó là giao diện của chương trình trông cực kì chuyên nghiệp và hơn hẳn W32Dasm. Có rất nhiều các tùy chọn cũng nhữ những tính năng cấp cao mà ở W32Dasm không có. Điều này có một thuận lợi đó là các bạn có thể Disassemble tốt hơn và chi tiêt hơn, nhưng đó cũng là điều không thuận lợi khiến IDA trở nên rất khó trong việc làm quen và sử d ụng nó. Tuy nhiên, trên thực tế IDA vẫn có đầy đủ các tính năng tương như W32Dasm như : Bạn có thể nhảy tới chính xác một đoạn code nào đó, bạn có thể quan sát vị trí nơi mà một lệnh nhảy nhảy tới một đoạn code, hay bạn có thể xem các String References v v Điều khó khăn đầu tiên cho tất cả các Newbies đó chính là quá trình tìm kiếm các String References. Trong W32Dasm chúng ta có một nút bấm mà theo đó chúng ta có thể xem trực tiếp tấ t cả các String References rất dễ dàng. Trong IDA, tính năng này được đặt trong Menu: View à Names. Giả sử chúng ta đã mở một file .exe trong IDA, một hộp thoại bật ra cung cấp cho chúng ta rất nhiều tùy chọn. Đừng có đụng tới bất cứ cái gì, chỉ việc nhấn ‘OK’. Sau đó IDA sẽ thực hiện công việc Analysis và sau khi thực hiện xong bạn hãy mở theo như hình trên chúng ta có được như sau : Oki, chúng ta đang ở cửa sổ Names, vậy làm thế nào để nhận biết ra đâu là String References.Như đã nói ở phần trên W32Dasm có một nút bấm riêng phục vụ cho công việc này, nhưng còn trong IDA các string reference được gắn vào trước bởi một chữ ‘a’.Để tìm kiếm một string bạn chỉ việc nhấn ‘a’ trên bàn phím tại cử a sổ Names, tương tự như việc tìm kiếm các hàm API trong Ollydbg.Hoặc các bạn có thể cuộn chuột để tìm kiếm, cho đến khi thấy được như sau : Đó chính là các String Reference mà IDA đã chỉ ra vị trí của chúng cho chúng ta thấy.Và đương nhiên tương tự như W32Dasm, khi tìm thấy một String đáng quan tâm chúng ta sẽ tìm đến vị trí của nó, trong IDA bạn nhấn Enter hoặc nhấp đúp vào String chúng ta sẽ đến vị trí mà String đó ở tại. Kết quả chúng ta sẽ được như hình minh họa trên. Tai đây bạn quan sát sẽ thấy có một tham chiếu được đặt cạnh String của chúng ta, nó có dạng như sau : DATA XREF: .text:XXXXXXXXo, chi tiết về các thành phần tôi sẽ đề cập trong bài viết sau. Ý nghĩa của cái Reference này cho chúng ta biết nơi mà String của chúng ta thực sử được sử dụng trong đoạn code của chương trình.Rê chuột vào địa chỉ XXXXXXXX, IDA sẽ cho chúng ta thấy được nh ư sau điều mà ở W32Dasm không có được : Để thực sử tới đoạn code sử dụng String chúng ta chỉ việc nhấn đúp chuột vào địa chỉ đó, nó sẽ đưa chúng ta đến nơi chúng ta cần đến : Khà khà rất đơn giản phải không nào, đâu có gì là quá khó phải không các bạn. Tiếp theo chúng ta sẽ đề cập đến một số tính năng khác của W32Dasm mà cũng được IDA hỗ trợ rất t ốt đó là các lệnh nhảy (Jump) và các lời gọi Call References.Tôi xin lấy 2 hình minh họa cho quá trình Disassembly một chương trình trong W32Dasm và IDA để các bạn nhận thấy được sự khác biệt. Như các bạn thấy, IDA cung cấp các thông tin chi tiết và rõ ràng hơn nhiều.Tiếp theo ta sẽ xem một ví dụ về Reference. Trong W32Dasm các ban sẽ thấy như sau : Còn trong IDA nó sẽ được thể hiện như sau : Nhìn vào hình minh họa trong IDA, ta thấy rằng IDA cho chúng ta nhiều thông tin mặc dù trông nó có vẻ ngắn gọn hơn W32Dasm.Cụ thể như sau : 1. Đây là một lệnh nhảy vì ta thấy có kí tự (j). Thêm nữa lệnh nhảy này nằm ở phía trên c ủa địa chỉ 0x0040132D, tại sao lại biết được nó nằm phía trên đó là do ta thấy có hình mũi tên lên (). 2. Lệnh nhảy tới đoạn code bắt đầu tại địa chỉ 0x0040132D này nằm tại địa chỉ 0x0040131A (= DialogFunc + 29). Bạn sẽ hỏi làm sao tôi biết địa chỉ của DialogFunc, xin thưa rất đơn giản bạn chỉ cần nhấn chuột vào chữ DialogFunc và chọn Edit Function hay phím tắt là Alt+P , ta sẽ có được thông tin về địa chỉ như sau : Vậy là 0x0040131A = 0x004012F1 + 0x29 3. Lệnh nhảy này được nằm tại .CODE section. Nếu như Reference là một lời gọi (CALL) thì trong IDA nó sẽ được thể hiện như sau : Một trong những tính năng tuyệt vời khác của IDA đó chính là việc thể hiện các biến được dùng trong chương trình.Thậm chỉ bạn có thể nhấn đúp chuột vào chúng để đi tới địa chỉ nơi mà các biến được lưu trữ : Lea edi, [esp + 1B8h + var_104] Một trong những tính năng khiến cho IDA trở thành một công cũ rất mạnh đó chính là việc sử dụng Flirt Signatures. Giải thích một cách đơn giản nhất đó là trong quá trình disassembly IDA cố gắng nhận diện chính xác các hàm thư viện có liên quan với trình biên dịch. Ví dụ : 

Ngày đăng: 01/07/2014, 13:20