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

Cracking part 28 pdf

5 170 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 115,81 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thưa các bạn , tui có vào một số forum về “tình yêu “ hay đại lọai như thế và hay gặp những lời cảnh cáo của các Admin như “Bạn câu bài , tui sẽ warm bạn nếu tái phạm”…v…v… Như ở đây, tr

Trang 1

Nếu các bạn nào hiểu được ví dụ tui đã post ở trên thì …các bạn ko cần đọc tiếp nữa, vì các bạn giỏi hơn benina rồi Còn nếu các bạn nào chưa hiểu gì nhiều cái vì dụ trên thì các bạn sẽ tìm hiểu cùng benina nhé Chúng ta sẽ đi từng bước một thật vững chắc để có được một nền tảng căn bản về cracking

Trước khi đi tiếp các bài sau, tui xin nhắc lại, các bạn hảy đọc kỹ bài UseOlly phần 2 của anh RongChauA và hảy thử debug chương trình trên và tìm hiểu xem tại sau benina comment như trên để có một cái nhìn bao quát về this traget Điều quan trọng nhất khi đọc các bài tut về Find Real Serial là các bạn vừa đọc, vừa thực hành thì các bạn sẽ hiểu được những gì các tác giả commeting Học cracking mà ko thực hành thì … Xin mời các bạn vào mục Recycle Bin mà đọc

Thưa các bạn , tui có vào một số forum về “tình yêu “ hay đại lọai như thế và hay gặp những lời cảnh cáo của các Admin như “Bạn câu bài , tui sẽ warm bạn nếu tái

phạm”…v…v… Như ở đây, trong lọat tut này , ko biết có ai nghĩ benina câu bài ko nửa Nhưng thật sự mà nói, benina ko có khái niệm về cái gọi là “câu bài” Mà những bài benina posted là những gì benina tìm hiểu được khi học cracking Nó cũng là những gì benina hệ thống cho chính bản thân mình, đồng thời muốn chia sẽ cho các bạn Vì

benina thật sự rất bận, nên khi nào rãnh rỗi mới dịch và viết được vài bài Mong các bạn

và các admin thông cảm mà đừng cho rằng em “câu bài”

Đến đây thì khúc dạo đầu đã xong Chúng ta sẽ tiếp tục với TUT sau về các khái niệm căn bản của ASM và tìm hiểu xem những gì các cracker commenting khi viết TUT về Find Real Searial

BÀI 5: FIND REAL SERIAL

PHẦN 2: VÀI QUI TẮC CƠ BẢN TÌM SERIAL

V mến

Hôm nay anh mới trả lời thư cho em được Bận quá xá Sorry nhe

Thực ra , tìm serial dễ lắm Không khó đâu Em cứ bình tỉnh.Rồi sẽ tìm được thôi Anh sẽ chỉ em một số nguyên tắc cơ bản như sau:

1 Đầu tiên chúng ta đặt bp , khi đó chúng ta sẽ chốt được "điểm đầu " và "điểm cuối " của quá trình kiểm tra serial Theo kinh nghiệm của anh, "điểm cuối" hay còn gọi là "tử huyệt" là quan trọng nhất Vì từ đây chúng ta sẽ truy ngược các hàm call từ dưới lên trên

Vì real serial thường xuất hiện gần "tử huyệt" nên "bóp đít" quan trọng hơn "nằm đầu" là vậy.Nói chung chúng ta bắt buộc phải biết 2 điểm "đầu" và "cuối" Đây là một số cách : Nếu chúng ta chỉ biết điểm đầu mà chưa biết điểm đích thì chúng ta cứ trace , đến khi xuất hiện thông báo bad boy thì đó là điểm đích

Nếu chúng ta biết điểm đích mà chưa biết điểm đầu ở đâu thì chúng ta cứ “ mò lên” vùng code và đặt bp tại hàm call nào chúng ta nghi ngờ Khi đó chúng ta sẽ có “điểm đầu “ giả tạo Nếu chưa tìm ra real serial , thì chúng ta cứ dời điểm đầu lên trên chút nữa, cứ thế, cứ thế

Tóm lại có rất nhiều cách tìm điểm đầu và đích

Trang 2

2.Trong quá trình trace lúc đầu thì thường chúng ta ko thấy real serial Vì có một số điểm

"rào cản" Nếu chúng ta vượt ra được các điểm "rào cản" này thì chúng ta mới hy vọng tìm ra real serial Vậy điểm “rào cản” này là gì? Anh lấy ví dụ:

Như name chúng ta nhập vào có 6 chử như Name:"benina" chẳng hạn ,nhưng chương trình lại qui định name nhập vào phải có 8 ký tự Đó chính là điểm “rào cản" để tìm real serial Hiểu điểm “rào cản” rồi nhé

Anh lấy ví dụ soft NXPowerLite 1.53 : điểm “rào cản” quan trọng của softs này là cho 1 chuổi mẫu( em sẻ thấy chuổi này xuất hiện trong cửa sổ stack hay cửa sổ FPU (cửa sổ thanh ghi) trong quá trình trace) Chuổi serial chúng ta nhập vào phải có thứ tự tăng giảm như chuổi mẫu và có 25 ký tự Vì vậy chúng ta sẽ lấy 25 ký tự của chuổi mẫu nhập vào làm fake serial thì sẽ qua được điểm rào cản này

Tóm lại : để tìm các điểm rào cản , chúng ta phải trace từ “điểm đầu” xuống chắc chắn chúng ta sẽ tìm được các điểm “rào cản” Nếu ko qua điểm điểm rào cản thì nó sẽ nhảy đến bad boy ngay lập tức

Một cách vượt qua điểm “rào cản” không chính qui là chúng ta patch các hàm jump trong quá trình trace Cách này có khi lại qua “điểm rào cản” được đấy Nhưng ko nên dùng cách này Hảy cố tìm ra nguyên tắc của điểm rào cản như vậy tốt hơn

3.Một số dạng Real serial :

Nếu chúng ta vượt qua được điểm rào cản để đến phần tính toán real serial Thì sẽ có một

số dạng serial đơn giản như sau:

Dạng dễ nhất: Soft sẽ lấy serial chúng ta nhập vào so sánh với real serial mà chương trình tạo ra Vì vậy , chắc chắn real serial sẽ chứa đâu đó trong memory Do đó đối với Olly, trong quá trình trace chúng ta sẽ bắt gặp nó nằm đâu đó trong cửa sổ thanh ghi, hay nằm đâu đó trong cửa sổ stack của Olly Vì vậy trong quá trình trace , nếu chưa hiểu thuật toán của softs , chúng ta thấy xuất hiện bất cứ chuổi nào trong stack hay trong cửa sổ thanh ghi chúng ta cứ nhớ nó = cách copy ra 1 file text nào đó Rồi sau đó cứ nhập thử vào , có khi chúng ta hên sẽ biết được real serial Cách này Anh gọi nôm na là tìm trong “đóng rác” là vậy hihi

Một số thuật toán như MD5 cũng thuộc dạng này Nó tính toán rất ghê góm, nhưng đến một lúc nào đó nó cũng xuất hiện chuổi real serial trong của sổ stack… hihi

Dạng Fixed Password: Như các soft bác kienmanowar đã crack của trang web

emailarms.com Tức là chuổi real serial phải có một số vị trí ký tự qui định sẳn Loại soft này ko xuất hiện chuỗi real serial trong cửa sổ stack Đặc điểm của các softs này là sẽ có một chuổi các điểm “rào cản” liên tiếp nhau để đi đến tử huyệt Nếu chúng ta biết được điểm đích thì chúng ta sẽ dễ dàng tìm ra “chuổi điểm rào cản này”

Một dạng nữa : (dạng này cũng ko hiện chuổi serial trong stack) dạng này là tính toán name và chuổi serial chúng ta nhập vào theo 1 “qui tắc” nào đó thành một con số (như softs Ripple Screensaver 3.0 trong bài 4 Let’s crack by Olly) , rồi đem so sánh với một số nào đó Dạng này hơi khó, vì chúng ta phải hiểu quá trình tính toán tức là phải hiểu “quy tắc” tính toán Dạng này nếu là newbie chúng ta chỉ patch tại điểm so sánh là xong (hoặc patch AL=1 hay EAX=1 cuối hàm call như hacnho đã làm ) Nếu patch mà khi vào lại vẫn bị báo reg , thì chắc rằng sẽ có một quá trình tính toán tương tự ở đâu đó trong

Trang 3

chương trình Chúng ta cố tìm ra để patch nó thì sẽ OK

Vân vân và vân vân… rất nhiều dạng…

Một quy tắc rất quan trọng để tìm serial cho nhanh:

Vì trong một đóng code chúng ta trace hết thì rất mệt mỏi Vậy làm sao để đến các điểm

“rào cản” và các “qui tắc” tính toán chuổi serial cho nhanh Chúng ta hảy để ý như sau: khi đến các điểm “rào cản” hay các điểm bắt đầu “quy tắc tính toán” chuổi serial thì

chương trình lúc nào cũng phải chạm đến vùng nhớ chứa chuổi serial chúng ta nhập vào

để lấy nó ra tính toán Vì vậy chúng ta sẽ đặt bp trên vùng nhớ chứa serial khi chương trình acess đến nó Ví dụ :

Khi chúng ta biết được “điểm đầu”.Lúc đó chuổi serial chúng ta nhập vào đã nằm đâu trong memory đúng ko? Chúng ta sẽ tìm xem chuổi serial của chúng ta nhập vào nằm đâu trong memory = cách nhấn ALT-M mở cửa sổ memory Và search (CTRL-B) tìm chuổi serial Khi đó chúng ta chọn chuổi tìm được và đặt breakpoint /memory, on acess trên vùng nhớ serial, tức là khi nào chương trình chạm đến vùng nhớ đó sẽ ngắt.Khi đó chúng ta sẽ đến các điểm “rào cản “ rất nhanh

Benina (http://www.reaonline.net) Manual Unpack Activemark 5.31

Bejeweled 2 Deluxe có phiên bản mới, cách chơi và đồ hoạ của game tuyệt vời nhưng 1

điểm làm chúng ta không hài lòng là bắt chúng ta mua nó!!! Ha ha, tiền đâu mà mua, xử

nó thôi!!

Target : Bejeweled 2 Deluxe (www.popcap.com)

Packer : ActiveMark 5.31

Tools : Ollydbg 1.10, Imprec 1.6, LordPe 1.41, PeiD 0.94, ActiveMark.Version

_Scan File target với PeiD 0.94 và dùng Plugin Generic OEP Finder ta có:

Trang 4

_Để biết chính xác phiên bản ActiveMark các bạn có thể dung Tool

“ActiveMark.Version”

_Như vậy ta có thể đoán OEP nằm trong Section ” text” (005D4000) Các Bạn nên lưu ý điều này khá quan trọng Run “WinBej2.exe” sẽ có 1 Nag nhắc nhở đăng ký Ok, để đó

mở Olly và Attach nó và bạn sẽ ở đây

Quote:

7C901231 C3 RETN

7C901232 8BFF MOV EDI,EDI

7C901234 90 NOP

7C901235 90 NOP

_bây giờ ta cho nhảy tới Address đầu tiên của Section text là 005D4000 ta là như sau: Quote:

7C901231 - E9 CA2DCD83 JMP WinBej2.005D4000

7C901236 90 NOP

7C901237 90 NOP

_Nhấn F7 bạn tới đây:

Quote:

005D4000 6E OUTS DX,BYTE PTR ES:[EDI] ; I/O command

005D4001 6E OUTS DX,BYTE PTR ES:[EDI] ; I/O command

005D4002 16 PUSH SS

005D4003 0082 6E160094 ADD BYTE PTR DS:[EDX+9400166E],AL

_nhấp chuột phải và chọn Search For\All Intermodular Calls và gõ “GetCommandLineA”

và nhấp đôi vào “GetCommandLineA” bạn tới đây:

Quote:

00719614 E8 C05F0000 CALL WinBej2.0071F5D9

00719619 FF15 74D17300 CALL NEAR DWORD PTR DS:[73D174] ;

kernel32.GetCommandLineA

0071961F A3 44967300 MOV DWORD PTR DS:[739644],EAX

00719624 E8 7E5E0000 CALL WinBej2.0071F4A7

_cuộn chuột lên đầu đoạn chương trình và Set 1 Hardware, on Execution tại 00719593:

Trang 5

Quote:

00719593 55 PUSH EBP

00719594 8BEC MOV EBP,ESP

00719596 6A FF PUSH -1

00719598 68 C8EB6300 PUSH WinBej2.0063EBC8

0071959D 68 70F97100 PUSH WinBej2.0071F970

_nhấn Alt+F2, F3 chọn “WinBej2.exe”, Atl+O tại thẻ Events đánh dấu “Break on new module (DLL)” và nhấn F9 cho tới khi dừng ở 00719593 (OEP)

Quote:

00719593 55 PUSH EBP <== OEP

00719594 8BEC MOV EBP,ESP

00719596 6A FF PUSH -1

00719598 68 C8EB6300 PUSH WinBej2.0063EBC8

0071959D 68 70F97100 PUSH WinBej2.0071F970

007195A2 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]

 

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

TỪ KHÓA LIÊN QUAN