Cracker Handbook 1.0 part 149 docx

6 235 1
Cracker Handbook 1.0 part 149 docx

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

Thông tin tài liệu

0042DE1D |. 43 |INC EBX 0042DE1E |> 43 |INC EBX 0042DE1F |.^EB DE \JMP SHORT pro.0042DDFF 0042DE21 |> 8BC6 MOV EAX,ESI 0042DE23 |. 5E POP ESI 0042DE24 |. 5B POP EBX 0042DE25 |. 5F POP EDI 0042DE26 \. C3 RETN [/code] Các bạn tự tìm hiểu thêm nha. hacnho chỉ nói qua loa cơ chế tạo sê ri thôi. Đầu tiên chương trình sẽ xét name nhập vào, nếu name< 5 thì thoát khỏi bảng đăng ký (may quá, hồi nãy hacnho nhập tới 6 ký tự lận :d.) . Sau đó nếu lớn hơn 5 ký tự thì sẽ lấy chiều dài của ký tự (ví dụ 6) trừ cho 4, bằng bao nhiêu, đem xor với EBX (mặc định ban đầu, EBX là 00). Gọi một hàm kiểm tra tại đây, nếu serial nhập vào bằng số serial sinh ra, thì chương trình cũng thoát, khỏi tính lại. Nếu sai thì Xor tiếp 4 bytes đầu của chiều dài lenght mới với một số magic bằng 5DFEE4A4 Tiếp tục TEST BL,40 , nếu quá 40 thì nhảy, còn không thì đưa vào eax. Rồi lại tiếp tục vòng lặp cho tới khi hết thì thôi. He he, sau đó bắn Real Serial vào memory, để so sánh với serial nhập vào. Quá đơn giản phải không bạn :d. Tut đến đây là END. Hẹn gặp trong tut sau. _Bài viết của hacnho xin vui lòng để lại dòng này khi trích dẫn hoặc đăng tải. VCT - Vietnamese Cracker Team ______ALways Free For All______ Founder: Computer_Angel, LVH, hacnho, hhphong. Super Mod: Infinite, deux. Moderator: anh_surprise, rongchaua, Zombie, tdlan83, Bluebird. Greets : Cracker Group : _ vncracking: NVH(c), Softcracker_vn, luucorp, tomcrack, tnHuan. _ vicki: DT. _ vietcrack: Pham Thai. _ Others: CVN_cracker, FunnyCracker Hacker : _HVA : LeonHart, tykhung, mudres, Leon, TTL, JAL, homethieugia, Viper _VHF: lieumang, CL, bmksc. _WhatVN: CuongLong, White_hat. _HKC: LPTV. _PTV5online: trunghau Tính offset của lệnh JMP, JX, JNX & CALL Lý thuyết Giới thiệu Các loại câu lệnh JUMPS & CALL Tính toán offset Thực hành I. Lý thuyết 1. Giới thiệu Xin chào các bạn! Trong bài viết này tôi muốn giải thích với các bạn cách tính toán offset của các câu lệnh JUMPS và CALL. Bạn sẽ thường xuyên tính toán offset của các câu lệnh này trong reverse. Đặc biệt, hiểu được cách tính cũng giúp bạn tiếp cận với kĩ thuật làm mù điểm vào host trong virus (EPO - EntryPoint Obscrured) một cách dễ hơn! 2. Các loại câu lệnh JUMPS & CALL Ở đây tôi chỉ mô tả sự khác biệt của các câu lệnh JUMPS & CALL mà bạn thường gặp! a) Short Jumps: nhảy ngắn có hoặc không có điều kiện đều là 2 byte. Bạn chỉ có thể nhảy tới 127 byte hoặc nhảy lùi 128 byte với các short jumps b) Long Jumps: nhảy dài, 6 byte cho có điều kiện hoặc 5 byte cho không điều kiện c) Calls: 5 byte ở dạng short * Đây là bảng mã máy mô tả sự khác biệt giữa các loại JUMPS & CALLS Jump Description Short Op-Code Long Op-Code call procedure call E8xxxxxxxx N/A jmp unconditional jump EBxx E9xxxxxxxx ja/jnbe jump if above 77xx 0F87xxxxxxxx jae/jnb/jnc jump if above or equal 73xx 0F83xxxxxxxx jb/jc/jnae jump if below 72xx 0F82xxxxxxxx jbe/jna jump if below or equal 76xx 0F86xxxxxxxx jcxz/jecxz jump if cx/ecx equals zero E3xx N/A je/jz jump if equal/zero 74xx 0F84xxxxxxxx jne/jnz jump if not equal/zero 75xx 0F85xxxxxxxx jg/jnle jump if greater 7Fxx 0F8Fxxxxxxxx jge/jnl jump if greater or equal 7Dxx 0F8Dxxxxxxxx jl/jnge jump if less 7Cxx 0F8Cxxxxxxxx jle/jng jump if less or equal 7Exx 0F8Exxxxxxxx jno jump if not overflow 71xx 0F81xxxxxxxx jnp/jpo jump if no parity/parity odd 7Bxx 0F8Bxxxxxxxx jns jump if not signed 79xx 0F89xxxxxxxx jo jump if overflow 70xx 0F80xxxxxxxx jp/jpe jump if parity/parity even 7Axx 0F8Axxxxxxxx js jump if sign 78xx 0F88xxxxxxxx Vấn đề của chúng ta là cần tính các số xx và xxxxxxxx trong mã máy 3. Tính toán offset * Công thức: OFFSET = địa chỉ của nơi đến - (địa chỉ nơi jumps/calls + kíck thước của câu lệnh jumps/calls) * Ví dụ: a) Bạn đang ở tại địa chỉ 40108E. Bạn cần đặt một lệnh nhảy đến địa chỉ 4020D0 tại địa chỉ này :40108E JMP 4020D0 Offset = 4020D0 - [40108E + 5(E9xxxxxxxx có kích thước 5 byte)] = 103D. Mã máy sẽ là E93D100000, trong đó E9 là mã máy của JMP và 3D100000 là số xxxxxxxx mà bạn vừa tính được (0000103D viết ngược lại sẽ là 3D100000) b) Bạn cần đặt một lệnh CALL đến địa chỉ 401184 tại địa chỉ 40218B :40218B CALL 401184 Offset = 401184 - [40218B + 5(E8xxxxxxxx có kích thước 5 byte)] = FFFFEFF4. Mã máy sẽ là E8F4EFFFFF, trong đó E8 là mã máy của CALL và F4EFFFFF là số xxxxxxxx mà bạn vừa tính được (FFFFEFF4 viết ngược lại sẽ là F4EFFFFF) II. Thực hành Bạn đã dùng Notepad! Mỗi lần mở file có kích thước vượt quá 64KB, Notepad sẽ hiển thi một hộp thông báo "Lỗi: File có kích thước quá lớn. Bạn có muốn dùng Bạn đã dùng Notepad! Mỗi lần mở file có kích thước vượt quá 64KB, Notepad sẽ hiển thi một hộp thông báo "Lỗi: File có kích thước quá lớn. Bạn có muốn dùng WordPad để đọc file này không?" - Yes | No . Nhiệm vụ của chúng ta là patch file notepad.exe để mỗi khi mở file có kích thước lớn hơn 64KB nó sẽ không hiển thị hộp thông báo trên nữa và tự động mở file bằng WordPad cho bạn. Trước khi bắt đầu mọi việc, bạn hãy sao lưu file notepad.exe trước đề phòng sự cố! Thật ra thì cũng không cần thiết bởi bạn có thể dùng SFC(System File Checker) của Windows để restore lại file notepad.exe bất cứ lúc nào. Trong ví dụ này tôi dùng bản Notepad của Windows98SE. 1/ Chạy W32Dasm. Sau khi dism file xong, bạn vào menu Ref/String Data References, tìm dòng String Resource ID=00056: "wordpad.exe" và double click lên nó. Để xem chúng ta có gì nào?! * Possible Reference to String Resource ID=00036: "&f" | :004033A5 6A24 push 00000024 ; rất quan trọng :004033A7 A1B4504000 mov eax, dword ptr [004050B4] :004033AC 56 push esi :004033AD 50 push eax :004033AE FF7508 push [ebp+08] * Reference To: USER32.MessageBoxA, Ord:01ACh | :004033B1 FF15A8644000 Call dword ptr [004064A8] ; hiện messagebox :004033B7 83F806 cmp eax, 00000006 ; đã chọn YES hay NO? (IDYES=6) :004033BA 0F85A7000000 jne 00403467 ; NO -> thoát :004033C0 6804010000 push 00000104 ; YES -> mở file bằng WordPad :004033C5 8D858CFDFFFF lea eax, dword ptr [ebp+FFFFFD8C] :004033CB 837D1001 cmp dword ptr [ebp+10], 00000001 :004033CF 1BFF sbb edi, edi :004033D1 50 push eax :004033D2 83C737 add edi, 00000037 * Possible Reference to String Resource ID=00056: "wordpad.exe" | :004033D5 6A38 push 00000038 :004033D7 FF3540554000 push dword ptr [00405540] Chúng ta chỉ cần thay PUSH 00000024 tại địa chỉ 4033A5 thành lệnh nhảy ngắn đến địa chỉ 4033C5. Mã . (IDYES=6) :00 403 3BA 0F85A 700 000 0 jne 00 403 467 ; NO -> thoát :00 403 3C0 6 804 01 0 00 0 push 00 00 0 10 4 ; YES -> mở file bằng WordPad :00 403 3C5 8D858CFDFFFF lea eax, dword ptr [ebp+FFFFFD8C] :00 403 3CB. ID =00 036: "&f" | :00 403 3A5 6A24 push 00 000 024 ; rất quan trọng :00 403 3A7 A1B4 504 000 mov eax, dword ptr [00 405 0B4] :00 403 3AC 56 push esi :00 403 3AD 50 push eax :00 403 3AE FF7 508 . :00 403 3CB 837D 10 01 cmp dword ptr [ebp + 10 ], 00 000 0 01 :00 403 3CF 1BFF sbb edi, edi :00 403 3D1 50 push eax :00 403 3D2 83C737 add edi, 00 000 037 * Possible Reference to String Resource ID =00 056: "wordpad.exe"

Ngày đăng: 03/07/2014, 17:21