Sử dụng OllyDBG, Cơ bản I Giới thiệu : Ollydbg hay gọi tắt là Olly, là một chương trình DEBUGGER dễ sử dụng, trực quan . Thích ứng cho mọi cấp độ Cracker khác nhau. Có thể nói Olly bao hàm rất nhiều tính năng mà nếu sử dụng riêng lẻ ta phải cần đến nhiều chương trình kết hợp lại . Hiện nay Olly đã có Version 1.0 Phần hướng dẫn sử dụng Olly này bao gồm ba phần : Phần I : Cài đặt và cấu hình Olly Khần II : Tổng quan về Olly Phần III : Sử dụng Olly
INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM CRACKLATINOS (_kienmanowar_) I Lời nói đầu : Một lần gửi lời chào tới toàn thể anh em REA Tình cờ qua bên site lão Ricardo Narvaja thấy tut hay cho tất muốn tìm hiểu cracking thông qua trợ giúp chương trình debugger trở nên tiếng, Ollydbg Tôi khoái tut bên Cracklatinos ngặt nỗi toàn tiếng TBN, thấy tut hay nên máu , định trans từ TBN qua English, từ Eng lại hì hục viết lại theo cách hiểu để truyền đạt biết cho anh em Ý tưởng loạt tut theo tác giả nói nhằm cung cấp kiến thức cho tất chuẩn bị bắt đầu bước vào tìm hiểu nghệ thuật cracking với trợ giúp Ollydbg Mặc dù tiêu đề tut Introduction (tức giới thiệu thôi) thực chất tuts cung cấp cho kiến thức tảng vững để đọc hiểu tuts dành cho người có trình độ advanced đặc biệt tut giới thiệu C racklatinos (hehe tác giả quảng cáo ác quá), đồng thời thông qua loạt tuts giúp có khả áp dụng kĩ thuật việc cracking II Tại lại Ollydbg ? Tham gia vào REA điều có lẽ thấy nhiều xuất “Ollydbg”, lại Ollydbg mà công cụ khác Ở không bàn luận đến việc tạo công cụ khác hay hơn, mạnh Ollydbg không để cập tới việc chỉnh sửa lại chương trình tiếng từ lâu SoftIce, đơn giản tín đồ cuồng tín SoftIce chuyển qua xài Ollydbg tính dễ dùng, không gây crash máy SoftIce, hỗ trợ nhiều teams giới thông qua Plugins Ollydbg mod lại nhằm chống lại chế anti-debug anti-Ollydbg, lý đơn giản khác loạt tuts dành riêng để nói vể Ollydbg ☺ III Nhiệm vụ Hì nhiệm vụ ? Do tut viết Olly nên việc phải làm tìm Olly đâu để load mà xài Thứ bạn lên home site Olly ollydbg.de để download, không REA có đưa nhiều link để download Ollydbg Riêng thân sưu tầm có lẽ gần chục Olly khác nhau, hic hic có lẽ đợi ver 2.0 Olly ☺ Khi download Olly đơn giản việc extract sử dụng, khuyên bạn nên để chung tất công cụ liên quan đến RE, Cracking vào thư mục, ví dụ hình minh họa, ta dễ dàng quản lý Okie coi bạn có Ollydbg, việc Run file OLLYDBG.exe Olly hoạt động liền, không phức tạp mặt cài đặt sử dụng SoftIce Giao diện Ollydbg sau : Đây Ollydbg tôi, chỉnh sửa cấu hình lại Nếu bạn download Ollydbg home site từ nguồn khác khác tôi, để thị menu Plugins bạn làm sau : C họn hình vào Options > Appearance , chọn tab Directories chỉnh lại đường dẫn tới thư mục Plugins thư mục UDD Sau nhấn Ok chạy lại Olly thấy menu Plugins Phần tiếp theo, giới thiệu tới bạn chi tiết cửa số Ollydbg để minh họa cho phần sau viết, sử dụng Crackme tiếng : CRACKME.EXE tác giả CRUEHEAD Để load crackme vào Olly ta nhấn chuột vào biểu tượng sau vào File > Open (or F3) : Sau chọn xác crackme mà dùng để minh họa cho viết Kết sau load vào Olly có sau : C hắc bạn nhìn vào cảm thấy choáng ngợp, phải đâu Hic ngày load target vào Olly, nhìn ngược nhìn xuôi không hiểu hết hehe, ngồi ngắm chẳng biết làm Nhưng không thứ có cách giải quyết, chưa biết phải tìm tài liệu mà đọc, đọc mà không hiểu lúc hỏi Nhưng hỏi phải biết đường mà hỏi, không chẳng bạn nhận câu trả lời mà có khiến người khác cảm thấy bực Tôi bạn tìm hiểu cửa sổ Olly Như bạn nhìn thấy hình Olly phân làm cửa sổ chính, cửa sổ có nhiệm vụ tên riêng : Ở thấy có cửa sổ lớn : - The Disassembler Window : Ở cửa sổ bạn nhìn thấy đoạn code chương trình dạng ngôn ngữ asm, đồng thời cửa sổ bạn thích cho từng dòng mã asm - The Registers Window : Đây cửa số chứa thông tin chi tiết ghi eax, ebx, ecx v….v… Các cờ trạng thái quản lý cửa sổ - The Dump Window : Tại cửa sổ bạn xem chỉnh sửa theo dạng hex Ascii nhớ chương trình mà bạn muốn debug - The Stack Window : Một cửa sổ không phần quan trọng , thứ trước thực phải nạp vào Stack C uối có cửa sổ nằm bên cửa sổ Disassembler Window : C húng ta gọi The Tip Window Đây tên gọi với tôi, thích gọi ☺ Khi bạn dòng code trình debug , Olly cho bạn thấy thông tin chi tiết dòng code Lấy ví dụ đơn giản sau : bạn debug tới dòng lệnh “ mov eax , dword ptr [123]” Thì cửa sổ cho bạn biết giá trị hay số lưu giữ [123] Và nhiều điều thú vị khác mà cửa sổ mang lại cho Trên tổng quan mà bạn nên biết Phần vào giới thiệu chức cửa sổ thông qua hình minh họa, tất nhiên giới thiệu chi tiết hết được, tìm hiểu trường hợp cụ thể loạt tuts sau thêm vào bạn nên chủ động tự tìm hiểu, đừng nên lệ thuộc vào viết The DISASSEMBLER Window : Đây cửa sổ Olly cửa sổ quan trọng, làm việc nhiều cửa sổ Khi bạn muốn debug chương trình, bạn load file thực thi chương trình vào Olly.Các chương trình mà bạn load vào Olly chương trình code ngôn ngữ khác : VB, VC++, Borland Delphi hay MASM cửa sổ toàn code chương trình list dạng mã ASM Theo mặc định Olly chương trình mà bạn load vào Olly Olly tiến hành phân tích toàn code chương trình đưa comment thích hợp Bạn tùy biến chức thông qua hình minh họa : Nếu bạn chọn sử dụng chức Olly xuất cửa sổ bạn giống với hình minh họa trước C òn bạn không chọn, thấy khác biệt, Olly không tự động phân tích chương trình công việc phân tích phải thực cách manual sau chương trình load vào Olly Okie, thử bỏ chọn load lại C rackme vào Olly, ta sau : Như bạn thấy hình trên, không chọn chức tự động phân tích Olly thấy thông tin phần Comment bị lược bỏ nhiều, điều dẫn đến việc khó khăn trình debug chương trình Tuy nhiên lúc chức hoạt động cách hiệu quá, nhiều Olly tự động phân tích lại dấn đến kết hoàn toàn ngược lại, đoạn code phân tích thể không xác, ví dụ trường hợp nhận đoạn code toàn chứa DB : Trong trường hợp thực hiên cách manual để remove mà Olly tiến hành phân tích đơn giản cách nhấn chuột phải hình chọn Analysis > Remove analysis from module Và kết có đoạn code xác sau : Do trình làm việc với Olly bạn nên linh hoạt trình sử dụng chức Ngoài phần khác không phần quan trọng, bạn thấy hình minh họa Olly câu lệnh phân biệt màu sắc cách rõ ràng, bạn không trọng đến vấn đề theo việc phân biệt tinh chỉnh lại màu sắc Olly khiến cho nhận biệt câu lệnh dễ dàng phần thể khiếu thẩm mĩ bạn ☺ Để tinh chỉnh lại màu sắc Olly bạn vào Tabs sau : The REGISTERs Window : Một cửa sổ quan trọng tiếp theo, cửa sổ Register Như nói cửa sổ chứa thông tin chi tiết ghi eax, ebx, ecx v…v… Các cờ trạng thái quản lý cửa sổ C ửa số cung cấp cho nhiều thông tin trình làm việc Olly Nếu nhìn vào hình minh họa bạn cảm thấy ý nghĩa nhiều lắm, nơi cung cấp nhiều thông tin hữu ích The STACK Window : Trước tiên tìm hiểu sơ qua Stack Đây nơi lưu trữ tạm thời liệu địa chỉ, cấu trúc liệu chiều C ác phần tử cất vào lấy từ đầu cấu trúc này, tức xử lý theo phương thức “vào trước, sau” (LIFO : Last In First Out) Phần tử cất vào cuối gọi đỉnh Stack Các bạn hình dung Stack chồng đĩa, đĩa đặt lên cuối nằm đỉnh có lấy Hai ghi làm việc với Stack ESP EBP Theo mặc định Olly, Stack biểu diễn theo ghi ESP nhiên luân chuyển qua lại ESP EBP cách nhấn chuột phải chọn hình sau : The DUMP Window : Đây cửa số thị nội dung nhớ file Ta chọn nhiều định dạng khác để biểu diễn nội dung memory cửa số : byte, text, integer, float, address, disassembly PE Header C ửa sổ cho phép tìm kiếm thực chức chỉnh sửa, thiết lập Break points v v Vậy dạo qua vòng cửa sổ Olly, nhiên bên cạnh Olly có nhiều cửa sổ khác mà không nhìn thấy cách trực tiếp cửa sổ được.C húng ta phải truy cập vào cửa sổ thông qua Menu hình minh họa : C húng ta lướt qua chức cửa sổ _ Nút L dùng để mở cửa sổ Log Olly, cửa sổ cho thấy thông tin mà Olly ghi lại Theo mặc định cửa số lưu thông tin module, import library Plugins load chương trình thời điểm ta load chương trình vào Olly Bên cạnh cửa sổ ghi lại thông tin Break points mà đặt chương trình Trong trường hợp crackme chúng ta, ta có thông tin sau : 10 Kết ta có sau : Các String quan trọng show rõ ban ngày Ta nhấn đúp chuột ASCII "You entered the right password!", Olly đưa ta tới : Nhìn tổng thể toàn đoạn code ta đưa nhận xét sau : Chương trình sử dụng hàm API GetWindowTextA để copy chuỗi Serial mà ta nhập vào lưu vào vùng Buffer Sau chuỗi Fake serial đem so sánh với chuỗi Hardcoded serial thông qua hàm API lstrcmpA Phụ thuộc vào kết so sánh mà định hiển thị Good boy hay Bad boy Để kiếm chứng vừa nhận xét trên, đặt bp GetWindowTextA, sau nhấn F9 để run chương trình.Tiến hành nhập Fake Serial : Sau nhập xong nhấn Check, Olly ice BP mà ta đặt Lúc quan sát cửa sổ Stack ta có thông tin : Ta chuẩn bị thực hàm GetWindowTextA, vùng Buffer nơi lưu Serial mà ta nhập vào Ta có sau : Sau thực hàm GetWindowTextA, ta dừng lại : Khà khà không nghi ngờ nữa, tới ta hoàn toàn kết luận chuỗi Hardcoded Serial crackme “cannabis” Ta kiểm tra thử xem : Vậy xong!! Tiếp theo giải crackme khác LESSON 15 HARDCODED 1: crakmeeasy.exe Không giống crackme trước, crackme không thực việc so sánh trực tiếp Fake Serial với Real Serial mà thực số bước tính toán trước tiến hành thao tác so sánh.Trước load vào Olly, ta chạy thử xem mặt mũi crackme : Ta thấy có Textbox cho phép nhập password button dùng để kiểm tra xem pass nhập vào hay sai.Ok, ta nhập đại password vào nhấn nút Check : Qua thao tác thu thập số thông tin cấn thiết cho việc tiếp cận để giải crackme Tiếp theo ta phải “đi câu” để túm valid Serial Load crackme vào Olly : Tiến hành tìm kiếm thông tin hàm APIs sử dụng crackme : Quan sát thấy có hàm GetDlgItemTextA, dùng hàm để tiếp cận mục tiêu Ta đặt BP hàm sau : Nhấn F9 để run chương trình, nhập Fake Serial nhấn Check : Olly dừng lại BP, quan sát cửa sổ Stack ta có thông tin sau : Chú ý vùng Buffer, nơi lưu Fake serial mà ta nhập vào Follow in Dump vùng Buffer ta có kết trước thực hàm sau : Ok, ta nhấn F8 để thực hàm GetDlgItemTextA quan sát vùng Buffer Kết sau thực có sau : Như bạn thấy lúc vùng Buffer chứa chuỗi Serial mà vừa nhập vào.Ta quay trở lại cửa sổ Code, lúc ta dừng lại : Chà bạn thấy hình, thấy có chuỗi mặc định gồm toàn chữ số tham gia vào trình tính toán Không biết có phải Hardcoded serial không nhỉ? Để khẳng định bạn nhập thử chuỗi vào kiểm tra, thử khà khà Các bạn để ý thấy giá trị 0x00401222 đẩy vào ghi eax, mà địa lại trỏ tới chuỗi mặc định "10445678951" , tức ghi eax lúc trỏ tới chuỗi mặc định : Follow in Dump ghi EAX : Ở dòng lệnh ta thấy giá trị EAX chuyển vào EDX : 0040130F 8B10 mov edx, dword ptr [eax] mov edx, dword ptr [401222] mà cụ thể tức : 0040130F 8B10 Vậy kết luận nội dung 0x401222 chuyển vào ghi EDX, cụ thể Dword tức bytes vùng nhớ 0x401222 Quan sát cửa sổ Tip ta thấy thông tin cụ thể sau : Ok phân tích xong ta nhấn F8 để thực lệnh quan sát ghi EDX để kiểm chứng kết quả: Dòng lệnh lại chuyển giá trị EDX vào vùng nhớ [EBP-30] : Quan sát cửa sổ Tip ta biết [EBP-30] vùng nhớ giá trị cửa sổ Dump : Nhấn F8 để thực thi lệnh quan sát cửa sổ Dump : Thực xong ta dừng lệnh : 00401314 8B50 04 mov edx, dword ptr [eax+4] Lệnh lấy bytes 0x401222 đẩy vào ghi EDX : Thực thi lệnh quan sát ghi EDX : Tiếp theo giá trị EDX chuyển vào vùng nhớ [EBP-2C] : Cuối thực copy nốt bytes vào ghi EAX Sau giá trị EAX lại cất vào vùng nhớ [EBP-28] : Như qua ta thấy hai ghi EAX EDX sử dụng làm trung gian để copy toàn chuỗi mặc định vào vùng nhớ chương trình định Đoạn code thấy chương trình sử dụng hàm memset, quan sát ta thấy hàm nhận vào tham số : Google thử thông tin hàm : 10 Hàm memset nhận vào biến s, c, n : s is the starting address n is the number of bytes that are going to fill c is the value with which to fill this area Qua thông tin ta kết luận rằng, hàm memset tiến hành set bytes vùng nhớ 0x0240F9F0 thành giá trị 0x00 Follow in Dump vùng nhớ, sau nhấn F8 để thực hàm ta thấy kết sau : Trace tiếp xuống đoạn code bên ta bắt gặp đoạn code sau : Hàm strlen tính toán độ dài chuỗi s, cụ thể chuỗi s = "10445678951" Kết tính toán lưu ghi EAX : Như quan sát kết ghi EAX ta thấy giá trị 0xB, tương ứng với 11 hệ mười Vậy tức độ dài chuỗi mặc định 11 Nhấn F8 để trace tiếp ta đến : 11 Qua thông tin bạn hiểu được, độ dài chuỗi mặc định trừ sau chuyển vào ghi EDX Vậy EDX có giá trị 0xA (tức 10 hệ mười) Đoạn code bên ta thấy giá trị vùng nhớ [EBP-10] đem so sánh với giá trị EDX : Mà giá trị vùng nhớ [EBP-10] : Kết so sánh 0x0 < 0xA, lệnh nhảy JB 0x00401357 thực hiện, chuyển tới đoạn code 0x00401360 : Câu lệnh MOV 0x401360 chuyển Fake Serial mà ta nhập vào vào ghi EAX : 12 Dòng lệnh mov giá trị [EBP-10] vào ghi EDX, giá trị [EBP-10] lúc 0x0 : Tiếp theo : EAX trỏ vào chuỗi Fake Serial, giá trị EDX 0x0 Điểu làm ta liên tưởng tới việc có vòng lặp ghi EAX giữ nguyên, ghi EDX thay đổi từ 0x0 đến 0xA, tức lấy kí tự chuỗi Fake Serial (vậy kết luận chuỗi Serial mà ta nhập vào phải có độ dài 0xB) Điều thể đoạn code sau : Lệnh MOVSX thực copy giá trị từ nguồn vào đích, nguồn vùng nhớ chứa Fake Serial, tính theo byte Đích ghi EDX, tính theo Dword Trong trường hợp cụ thể copy byte đầu tiên, tức chữ “m” ghi EDX : Dòng lệnh : 13 Ta thấy rằng, giá trị EDX sau trư 0x14, kết lưu vào ghi EAX Cụ thể (0x6D – 0x14 = 0x59) : Câu lệnh 0040136E 8D55 D0 ghi EDX lúc trỏ vào chuỗi mặc định : lea edx, dword ptr [ebp-30], Tiếp tục xem xét hai câu lệnh bên : 00401371 00401374 8B4D F0 0FBE1411 mov movsx ecx, dword ptr [ebp-10] edx, byte ptr [ecx+edx] Lệnh ghi ECX gán giá trị [EBP-10] (hiện giá trị [EBP-10] = 0x0) Lệnh dùng để copy vào ghi EDX kí tự chuỗi mặc định (do lúc ghi ECX 0x0 ghi EDX chứa kí tự chuỗi mặc định) Vậy ta nhận thấy việc di chuyển để copy kí tự chuỗi Fake Serial chuỗi mặc định phụ thuộc vào giá trị [EBP-10] : 14 Kết thúc trình lấy kí tự từ hai chuỗi Fake Serial chuỗi mặc định, tới đoạn code so sánh : Trong hình minh họa tôi, bạn thấy ghi EAX có giá trị 0x59, ghi EAX có giá trị 0x31 Quay ngược lại chút ta thấy rằng, giá trị 0x59 có kí tự chuỗi Fake Serial “m”, mã hexa 0x6D trừ 0x14 Còn giá trị 0x31 mã hexa kí tự chuối mặc định Tôi viết lại cụ thể sau : cmp eax, edx cmp (First byte of FS – 0x14), First byte of Constant string cmp 59, 31 Kết việc so sánh ảnh hưởng tới lệnh nhảy bên Tới không cần quan tâm tới đoạn code bên nữa, lập luận để tìm Real Serial Như bạn thấy có công thức sau : CMP (FIRST BYTE OF MY CORRECT SERIAL - 14), 31 Ở so sánh ta có : FIRST BYTE OF MY CORRECT SERIAL – 0x14 = 0x31 Suy : FIRST BYTE OF MY CORRECT SERIAL = 0x31 + 0x14 Khà khà ta tìm kí tự chuỗi Real Serial rồi, kí tự „E’ Thực tiếp tục theo logic ta có chuỗi Real Serial hoàn chỉnh : 31 +14 = 45 is the letter E in ASCII 30 + 14 = 44 is the letter D in ASCII 34 + 14 = 48 is the letter H in ASCII 34 + 14 = 48 is the letter H in ASCII 35 + 14 = 49 is the letter I ASCII 15 36 + 14 = 4A is the letter J in ASCII 37 + 14 = 4B is the letter K in ASCII 38 + 14 = 4C is the letter L in ASCII 39 + 14 = 4D is the letter M in ASCII 35 + 14 = 48 is the letter I in ASCII 31 +14 = 45 is the letter E in ASCII Hola, chuỗi serial cuối : EDHHIJKLMIE Nhiệm vụ Olly xong, ta tạm thời close Olly, chạy thử crackme test serial mà ta tìm : Ok phần 15 loạt tuts Ollydbg đến kết thúc, qua viết bạn thực hành với crackme với mức độ khó chút, chút Trong phần tutor có target khác để bạn thực hành Splish crackme, có lẽ bắt lão Ricard, tutor đặt pass serial mà bạn tìm Splish crackme l0lz Hi vọng qua viết cung cấp thêm số kiến thức giúp bạn làm việc hiệu với Olly Hẹn gặp lại bạn phần loạt tutor này, By3 By3!! Best Regards _[Kienmanowar]_ ++ ==[ Greatz Thanks To ]== ++-My family, Computer_Angel, Moonbaby , Zombie_Deathman, Littleboy, Benina, QHQCrker, the_Lighthouse, Merc, Hoadongnoi, Nini all REA‘s members, TQN, HacNho, RongChauA, Deux, tlandn, light.phoenix, dump, dqtln, ARTEAM all my friend, and YOU ++ ==[ Thanks To ]== ++-16 iamidiot, WhyNotBar, trickyboy, dzungltvn, takada, hurt_heart, haule_nth, hytkl, moth, XIANUA, nhc1987, 0xdie, Unregistered!, akira, mranglex v v bạn đóng góp nhiều cho REA Hi vọng bạn tiếp tục phát huy I want to thank Teddy Roggers for his great site, Reversing.be folks(especially haggar), Arteam folks(Shub-Nigurrath, MaDMAn_H3rCuL3s) and all folks on crackmes.de, thank to all members of unpack.cn (especially fly and linhanshi) Great thanks to lena151(I like your tutorials).Thanx to Orthodox, kanxue, TiGa and finally, thanks to RICARDO NARVAJA and all members on CRACKSLATINOS >>>> If you have any suggestions, comments or corrections email me: kienmanowar[at]reaonline.net 17 [...]... chọn Modify : Chỉnh sửa lại giá trị của thanh ghi EAX như hình dưới đây : Kết quả sau khi chỉnh sửa : 6 Khi bạn thay đổi giá trị của một thanh ghi thì kết quả chỉnh sửa sẽ được đánh dấu màu đỏ Như tôi đã nói ở trên nhiều khi chúng ta không sử dụng hết 32 bits trong quá trình tính toán mà ta chỉ cần một phần của nó thôi Thông thường người ta thường sử dụng thanh ghi AX (16 bits) - một phần của thanh ghi... lưu trữ những gì mình đã làm được Ở phần trước sau khi các bạn đã có một cái nhìn tổng quan nhất về công cụ Ollydbg về các thành phần cũng như chức năng chính của nó, thì trong phần thứ hai này tôi sẽ đề cập đến việc sử dụng các hệ thống số trong Olly, thêm vào đó là một chút kiến thức cơ bản về Stack Okie, L3t’s G0!! II Các hệ thống số Có ba hệ thống số được sử dụng nhiều nhất đó là Hệ nhị phân, Hệ... công dụng chung thì nó còn mang những ý nghĩa và chức năng đặc biệt sau : • • • • Thanh ghi EAX (thanh ghi chứa) : thường được sử dụng trong các lệnh số học, logic và chuyển dữ liệu Trong các thao tác nhân và chia thường sử dụng đến thanh ghi này Thanh ghi EBX (thanh ghi cơ sở) : thanh ghi này cũng đóng vai trò là thanh ghi địa chỉ Thanh ghi ECX (thanh ghi đếm) : thanh ghi này thường được sử dụng như... lặp Ngoài ra nó cũng được sử dụng như là biến đếm trong các lệnh dịch hay quay các bit Thanh ghi EDX (thanh ghi dữ liệu) : thanh ghi này cùng với thanh ghi EAX tham gia vào thao tác của phép nhân hoặc phép chia Bên cạnh đó nó cũng thường được sử dụng trong các thao tác vào ra 5 Các thanh ghi chỉ số ESI, EDI : Hai thanh ghi ESI (chỉ số nguồn) và EDI (chỉ số đích) thường được sử dụng trong các thao tác... tính chuẩn hệt như cái máy tính bình thường mà bạn hay sử dụng ðể có thể chuyển sang sử dụng các tính năng chuyên nghiệp hơn liên quan tới các số hệ nhị phân và hệ 16 cũng như các phép tính liên quan tới hai hệ số này, bạn làm như trên hình vẽ (View > Scientific) Ta có được như sau : 2 Trong hình minh họa bên trên, bạn thấy hệ thống số được sử dụng mặc định là hệ 10 (Dec).Tại sao nó lại mặc định như... theo sẽ được thực hiện khi bạn quan sát trong màn hình CPU 3 Thanh ghi EBP : ðây cũng là một thanh ghi không kém phần quan trọng, thanh ghi EBP (Con trỏ cơ sở Base Pointer) chủ yếu được sử dụng để truy nhập dữ liệu trong ngăn xếp Tuy nhiên khác với thanh ghi ESP, thanh ghi EBP còn được sử dụng để truy nhập dữ liệu trong các đoạn khác Thanh ghi EBP thường được kết hợp với ESP khi chúng ta bắt gặp một... trình ASM không phải lúc nào chúng ta cũng sử dụng hết 32 bits, để tránh lãng phí chúng ta có thể thao tác, tính 5 toán chỉ trên một phần của các thanh ghi này, trong trường hợp này của tôi tôi có thể chia nhỏ thanh ghi EAX ra Ta sẽ làm một ví dụ cụ thể : Giả sử thanh ghi EAX tôi muốn thay đổi giá trị của nó thành là 0x12345678h ðầu tiên ta load crackme vào trong Ollydbg, sau khi analyse xong chúng ta... file có khả năng thực thi được chương trình sử dụng như file exe, dlls, ocxs , v v Tại cửa sổ này nếu như bạn click chuột phải sẽ thấy có rất nhiều tùy chọn khác nhau, trong khuôn khổ có hạn của bài viết không thể nói hết được Sẽ có những phần tiếp theo đề cập đến chúng _ Nút M dùng để mở cửa sổ Memory, cửa sổ này sẽ cho chúng ta thông tin về bộ nhớ đang được sử dụng bởi chương trình của chúng ta và còn... còn gặp lại trong các tuts tiếp theo, 1 yêu cầu rất quan trọng ngoài việc bạn biết sử dụng Olly ra thì bạn còn phải biết về Asm language, nếu không biết về nó thì hii các bạn nên dành thời gian để tìm hiểu một số kiến thức cơ bản trước khi đọc tiếp các phần sau của bài viết Ngoài ra để các bạn dễ làm quen hơn trong các phần sau tôi sẽ cố gắng hệ thống lại ☺ IV Cấu hình Olly thành JIT (Just-in-time debugging)... thể nói đây là một hệ thống được chúng ta sử dụng nhiều nhất trong đời sống hàng ngày.Hệ này bao gồm mười chữ số bắt đầu từ 0 đến 9 Hệ đếm này là hệ đếm mà chúng ta quen thuộc nhất Hệ mười sáu : Các số dưới dạng nhị phân thường là dài và khó nhớ Việc chuyển đổi các số thập phân sang nhị phân thường khó Khi chúng ta viết chương trình hợp ngữ chúng ta thường sử dụng cả hai hệ đếm là : nhị phân và thập ... nhấn chuột phải chọn hình sau : The DUMP Window : Đây cửa số thị nội dung nhớ file Ta chọn nhiều định dạng khác để biểu diễn nội dung memory cửa số : byte, text, integer, float, address, disassembly... thức “vào trước, sau” (LIFO : Last In First Out) Phần tử cất vào cuối gọi đỉnh Stack Các bạn hình dung Stack chồng đĩa, đĩa đặt lên cuối nằm đỉnh có lấy Hai ghi làm việc với Stack ESP EBP Theo mặc... thông tin Log cửa số cung cấp cho khả ghi file _ Nút E dùng để mở cửa sổ Executables, cửa sổ đưa danh sách file có khả thực thi chương trình sử dụng file exe, dlls, ocxs , v v Tại cửa sổ bạn click