Skip navigation.

13 friday

Posts tagged with "Phan mem -chuong trinh"

Undeep_freezer

Deep Unfreezer là phần mềm giúp người dùng mở khóa Deepfreeze khi quên password. Hay nói cách khác Deep Unfreezer là phần mềm biến deep freeze (phần mềm đóng băng trở thành chương trình "đóng" mà không "băng"). Hiện nay với phiên bản v1.4 (đã có 1.5..) của Deep Unfreezer có thể mở khóa mà không cần password của hầu hết tất cả các phiên bản của Deepfreeze, ngoại trừ phiên bản 5.70.220.1372 (1.5 cũng mở được 5.7).

Nhưng liệu với phiên bản mới sau này của DeepUnfreezer 1.5 thì phiên bản 5.70.220.1372 kia của Deepfreeze có còn an toàn hay không? Sau đây, tôi sẽ giới thiệu đến các bạn một trong những cách mà tôi biết

Để DeepFreeze trở nên an toàn hơn. Không chỉ riêng an toàn trước Deep Unfreezer mà còn bảo mật trước mọi cách hack mà hacker từng làm trước đây.

Cách 1:

Bước 1: Các bạn tiến hành mở khóa cho DeepFreeze mà các bạn đang sử dụng chúng (ở thời điểm này các bạn có thể mở bằng DeepUnfreezer cũng được). Khởi động lại máy.

Bước 2: Sau khi tiến hành bước 1 thì lúc này DeepFreezer đã được mở khóa. Các bạn vào và đổi tên cho các files ''DF5Serv.exe ''và'' FrzState2k.exe '' có trong thư mục: C:\ProgramFiles\Faronics\Deep Freeze\Install C-0.

Chú ý : là các bạn đổi tên gì thì nhớ tên đó. Nếu quên thì sẽ không mở khóa được cho DeepFreeze đâu.

Bước 3: Sau khi đổi tên 2 file đã nêu trên, các bạn tiến hành đặt thuột tính Ẩn cho 2 file đó bằng cách click phải chuột vào file cần đổi tên, chọn Properties \ chọn thẻ General \ đánh dấu chọn vào ô Hidden ổ mục Attributes \ chọn ok.

Bước 4: Thực hiện Do not show hidden files and folders bằng cách chọn Menu Tool của (Windows Eplorer)\folder Options\xuất hiện hộp thoại Folder Options. Sau đó chọn thẻ View\tìm vào đánh dấu chọn Do not show hidden files and folders\Ok .

Bước 5 : Để tránh sự tò mò của người khác thì thiết lập thuộc tính ẩn cho menu Folder Options luôn bằng các hiệu chỉnh thông số trong Registry Editor.

Cách làm như sau: Trong Folder Options có tab File Types cho phép người dùng thêm, xoá, sửa phần mở rộng của các tập tin. Để tránh sự tò mò của kẻ khác có thể gây rắc rối cho hệ thống thì có thể ẩn chúng đi.

Theo đến khoá chỉ ra bên dưới trong Registry Editor, tạo một giá trị DWORD với tên "NoFileAssociate" nếu nó chưa có và sửa giá trị của nó là 1 để ẩn Folder Options.

My Computer\ HKEY_CURRENT_USER\ SOFTWARE\ Microsoft\ WindowsCurrentVersion\ Policies\ Explorer
User Key: HKEY_CURRENT_USER\ SOFTWARE\ Microsoft\ WindowsCurrentVersion\ Policies\ Explorer
System Key: HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ WindowsCurrentVersion\ Policies\ Explorer
Name: NoFileAssociate
Type: REG_DWORD
Value: 0- hiện, 1- vô hiệu hoá tất cả các chức năng.

Sau khi đã thực hiện các bước như trên thì đóng khóa Deepfreeze lại. Khởi động máy lại.

Lưu ý quá trình LogOn vào Windows lúc này sẽ diễn ra chậm hơn bình thường khoảng 20 giây. Sau khi vào Windows thì DeepFreeze sẽ hoạt động Ẩn 'chạy không địa chỉ ' thì ngoài chủ nhân ra sẽ không ai mở khóa được cho nó nữa.

Việc mở khóa cho deepfreeze lúc này sẽ không cần đến password của chính nó nữa mà có thể mở nó bằng Deep Unfreezer cách làm như sau.

Chạy DeepUnfreezer: đánh dấu chọn Boot Thaweb để mở khóa, Boot frozen để đóng khóa. Click chuột chọn Save Status, lúc này DeepUnfreezer sẽ không thấy địa chỉ của Deepfreezer trên hệ thống của Windows nữa và nó yêu cầu chúng ta phải thiết lập đường dẫn đến nơi Deepfreeze đã cài vào. Lúc này, chỉ việc tiến hành dẫn đường cho nó đến file "FrzState2k.exe" đã đổi tên ở bước 2. Đường dẫn mặc định là: C:\Program Files\Faronics\Deep Freeze\Install C-0\FrzState2k.exe. Sau khi đổi tên : C:\Program Files\Faronics\Deep Freeze\Install C-0\tênđãđổi.exe.

Link download Deep Unfreezer : http://usuarios.arnet.com.ar/


Cách 2:

Dùng phần mềm có tên là Password Door để ngăn không cho DeepUnfreezer chạy trên máy tính. Nếu muốn chạy được thì không ai khác ngoài chủ nhân là người giữ password mở cửa. Với cách này có thể ngăn các không cho các công cụ khác mà các hacker đã làm để hack DeepFreeze như OLLYDBG, ProcessExplorerAmd64 … Có thể tìm và download chúng trên Internet nhờ vào công cụ tìm kiếm Google với từ khóa như trên.

Khuyến cáo: Nên sử dụng cách 1 hay hơn vì nếu dùng cách 2 thì phải cập nhật và download thường xuyên các phiên bản mới cho Deep Unfreezer. Vì muốn ngăn 1 phần mềm nào đó không được phép chạy trên máy thì trước tiên phải có phần mềm đó. Hoặc nếu có cấu hình máy mạnh thì có thể làm kết hợp cả 2 cách thì rất an toàn.


Bổ sung kinh nghiệm chống Deep Unfreezer

Các bạn hẳn đã từng đọc bài viết về cách bảo vệ Deepfreeze, chống lại Deep Unfreezer. http://www.vnexpress.net/Vietnam/Vi-tinh/K...06/01/3B9E604E/ Nhưng sau khi đọc, tôi thấy cách đó chưa thực sự hiệu quả. Chẳng cần là hacker cũng có thể phá giải nó.

Trong bài viết trên, ở cách thứ nhất: muốn giấu biểu tượng DeepFreeze ở thanh taskbar và vẫn sử dụng Deep Unfreezer để Able Deepfreeze và Disable. Điều này giúp các đối tượng phá hoại không thể biết tên 2 file chạy của DeepFreeze đã được thay đổi.

Nhưng sai lầm là họ không Disable Regedit, thế là ta có thể vào Registry để huỷ các thiết lập họ tạo ra. Còn đơn giản nữa là nếu chương trình Task Manager không bị cấm thì ta có thể chạy nó và nhìn thấy ngay tên của 2 file của DeepFreez đã được đổi tên hoặc chưa đổi tên nằm trong mục Processes, thế thì đổi tên còn ý nghĩa gì nữa? Như vậy cách 1 phá sản. Nghĩa là ta chỉ cần có Deep Unfreezer là vẫn có thể thay đổi được Deepfreeze.

Bắt buộc ta phải kết hợp cả cách 2 đó là sử dụng chương trình như Password Door để đặt password cho Deep Unfreezer ( chỉ mình ta biết). Nhưng bây giờ hacker lại tiếp tục nghiên cứu về cách phá Password Door, nếu phá được thì cả 2 cách đều vô hiệu.
mọi người có thể tải phần mềm này để phá Deepfreeze
http://usuarios.arnet.com.ar/fliamarconato...punfreezer.html
sau đó chọn Deep Unfreezer 1.6 (99 KB) (Windows 9X/2K/XP)
rồi chạy Deep Unfreezer 1.6
Deepfreeze sẽ bị gỡ bỏ mà không cần pass
Cách tìm IP qua chat YM

--------------------------------------------------------------------------------

Đầu tiên bạn vào Start ---> cmd ( hoặc command , tùy vào dv có khoá hay không ) ---> nó sẽ hiện lên 1 màn hình DOS , bạn bấm lệnh :

c:windows> netstat -an


Code:
Active Connections



Proto Local Address Foreign Address State

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1032 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1042 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1044 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1046 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1048 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1178 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1772 0.0.0.0:0 LISTENING

TCP 0.0.0.0:1774 0.0.0.0:0 LISTENING

TCP 0.0.0.0:5101 0.0.0.0:0 LISTENING

TCP 10.0.0.70:139 0.0.0.0:0 LISTENING

TCP 10.0.0.70:1042 207.46.249.56:80 CLOSE_WAIT

TCP 10.0.0.70:1044 207.46.244.158:80 CLOSE_WAIT

TCP 10.0.0.70:1046 207.46.197.121:80 CLOSE_WAIT

TCP 10.0.0.70:1054 0.0.0.0:0 LISTENING

TCP 10.0.0.70:1178 216.155.193.179:5050 ESTABLISHED

TCP 10.0.0.70:1242 0.0.0.0:0 LISTENING

TCP 10.0.0.70:1242 10.0.0.99:139 ESTABLISHED

TCP 10.0.0.70:1767 0.0.0.0:0 LISTENING

TCP 10.0.0.70:1767 10.0.0.199:139 ESTABLISHED

TCP 10.0.0.70:1771 66.98.134.72:80 TIME_WAIT

TCP 10.0.0.70:1772 66.98.134.72:80 ESTABLISHED

TCP 10.0.0.70:1774 66.98.134.72:80 ESTABLISHED

TCP 127.0.0.1:1031 0.0.0.0:0 LISTENING

UDP 0.0.0.0:445 *:*

UDP 10.0.0.70:137 *:*

UDP 10.0.0.70:138 *:*

UDP 10.0.0.70:500 *:*

UDP 10.0.0.70:4500 *:*

UDP 127.0.0.1:1183 *:*

UDP 127.0.0.1:1223 *:*

UDP 127.0.0.1:1298 *:*

UDP 127.0.0.1:1494 *:*
_ Tiếp theo bạn để ý 1 cái này hen . IP của YM khi chat qua mạng dv ADSL thường bị giấu mất tích cái đuôi cs52.msg.dcn.yahoo.com . Nên khi đó bạn phải xác định thật chính xác số IP của mình là bao nhiêu đã nhé . Nhưng thông thường khi bạn chat như thế thì để ý cái :

TCP 10.0.0.70:1178 216.155.193.179:5050 ESTABLISHED

Nhất là dòng chữ ESTABLISHED và port 5050 nó chính là thằng Yahoo đó . Bạn bấm tiếp lệnh :

C:window>tracert 216.155.193.179


Code:
Tracing route to cs52.msg.dcn.yahoo.com ( cái này chứng tỏ mình đã xác định đúng ) [216.155.193.179]

over a maximum of 30 hops:



1 <10 ms <10 ms <10 ms 10.0.0.138

2 10 ms 10 ms 10 ms 203.162.164.1

3 10 ms 10 ms 20 ms localhost [203.210.147.33]

4 70 ms 90 ms 30 ms localhost [203.210.146.10]

5 20 ms 30 ms 20 ms 203.162.119.161

6 30 ms 20 ms 60 ms 203.162.6.35

7 80 ms 90 ms 40 ms 203.162.27.70

8 * * * Request timed out.

9 * * * Request timed out.

10 * * * Request timed out.

11 * * * Request timed out.

12 * * * Request timed out.

13 * * * Request timed out.

14 * * * Request timed out.

15 * 300 ms 321 ms dcr1-loopback.Washington.savvis.net [206.24.226.99]

16 350 ms 321 ms 330 ms bhr1-pos-10-0.Sterling2dc3.savvis.net [206.24.238.38]

17 * 400 ms 361 ms 216.109.75.254

18 381 ms 410 ms 391 ms vl47.bas1-m.dcn.yahoo.com [216.109.120.218]

19 390 ms 341 ms 380 ms cs52.msg.dcn.yahoo.com [216.155.193.179]



Trace complete.- Cuối cùng nó cái cái mình cần tìm là đây :

3 10 ms 10 ms 20 ms localhost [203.210.147.33]
4 70 ms 90 ms 30 ms localhost [203.210.146.10]
5 20 ms 30 ms 20 ms 203.162.119.161

- Lưu ý 2 số IP localhost là IP do dv mạng che lại và thông thường đó là số IP cua ADSL nó không làm được cái trò trống gì đâu á . Cái cuối cùng là cái ăn thua đó . À còn với các bạn sử dụng máy nhà thì có lẽ đơn giản hơn nhiều vì thông thường nó chỉ xuất hiện cái IP cuối cùng thôi .

- À đọc xong thì có lẽ có bạn hỏi tôi , các số IP còn lại thì sao ? Các số còn lại chính là localhost của chính dv bạn làm đó . Muốn xác định được nó thì bạn cứ :

c:window>ipconfig /all

Cocuments and SettingsAdministrator>ipconfig /all

Windows 2000 IP Configuration

Host Name . . . . . . . . . . . . : May70
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Broadcast
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Eth
ernet NIC
Physical Address. . . . . . . . . : 00-E0-1A-00-0B-6C
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 10.0.0.70
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.0.138
DNS Servers . . . . . . . . . . . : 203.162.4.1
203.162.0.11

Loại tất cả các số IP đó ra hen , vì đó thường là các số IP local do các dv mạch định không phải là IP thực . Còn IP cùa mình thì :

http://www.chaoga.com ( diển đàn này không cho đoạn code [web] , bó chân luôn , click vô đó tạm vậy )

Pha DWK

Hiện nay có nhiều người rất khó chịu với chương trình DWK khi lướt web, có những trang web chẳng bậy bạ gì cả mà mỗi lần open ra là y rằng bị tắt đi nên đây chắc cũng là nhiều nguyên nhân khuyến các bạn không truy cập được các website một cách thoải mái.
Tôi xin hướng dẫn sơ qua 2 cách để các bạn có thể tự vô hiệu hóa được DWK

Cách I :
Các bạn restart lại computer trong quá trình khởi động các bạn ấn F8 vài lần để Window hiện thị Menu khởi động sau đó bạn chọn Safe Mode ( Giải thích : Vì trong môi trường này các chương trình startup khác không chạy được )
Sau đó các bạn vào :
Start/Run/Regedit/HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Run (+ RunOnce, RunServices, RunServicesOnce)

Start/Run/Regedit/HKEY_CURRENT_USERHKEY_LOCAL_MACHINE\SOFTWARE\Micro soft\Windows\Curr entVersion\Run (+ RunOnce, RunServices, RunServicesOnce) tìm các khóa liên quan đến DWK mà xóa đi là xong.
Việc cuối cùng là các bạn restart lại máy ở chế độ bình thường và thích lướt web gì thì lướt.

Cách II :
Cách này thì phải nhờ đến sự hộ trợ của tool hijackthis nên các bạn phải download tool này về theo link sau : download
Sau đó chạy file .exe duy nhất chọn nhấn Open process manager , tìm tới cái dòng nào có tận cùng là NTSYSTEM.EXE,chọn nó rùi nhấn nút Kill process ,thế là xong. Cách này thì nhanh và hiệu quả hơn đỡ tốn time hơn.
Bạn có thể thay thế hijackthis bằng PrcView , cách làm tương tự như hijackthis, bạn phải download tool này về theo link sau :
Download
và còn một cách nhỏ nhỏ nữa post lên để anh em cùng ngâm cứu nhé:
từ Run bạn gõ cmd, ban đánh vào lệnh tasklist trong dos ảo tiếp theo đó một loạt file cùng thông số của một số chương trình đang chạy hiện ra, bạn muốn tắt ứng dụng nào đánh vào lệnh taskkill /pid thông số của lệnh đó.
Ví dụ: tôi muốn tắt chương trình vietkey thì file của nó la vietkey.exe và dóng sang ta có thông số của nó là "1564". sẽ có một dòng lệnh sau: taskkill /pid 1564 và enter lệnh này đồng nghĩa với việc chương trình vietkey sẽ entask.
và việc tắt DWK và một số ứng dụng khác cũng có thể áp dụng với dòng lệnh này
đơn giản hơn ta ấn tổ hợp phím Ctrl+Alt+Del chọn thẻ Processes tìm tới DWK EndProcese

crack

Hiện này có rất nhiều phần mềm hay với những tính năng độc đáo, cac bạn chỉ cần lên mạng và tải chúng về hoặc mua một CD về và cài vào máy. Tuy nhiên với tình trạng internet bùng nổ và những phần mềm tràn nan như hiện này thì để kiếm cho mình một phần mềm vừa ý quả là không phải dễ

Sau khi đã có một phần mềm vừa ý rồi thì một vấn đề khác cũng được đặt ra là: serial number. Nhà sản xuất cung cấp cho bạn hững phần mềm dùng thử trong một thời gian nhất định, sau khoảng thời gian này thì không sử dụng được phần mềm này nữa. Bạn phải liên hệ với nhà cung cấp mua một số Sn thì mới sử dụng tiếp được, giá tiền của những phần mềm này không phải rẻ. Mình nói vậy các bạn sẽ hỏi: Tại sao trên thị trường bán các phần mềm chỉ với giá 6000->9000 đ/cd ? Tất cả những phần mềm này đã được crack và sao chép ngay sau khi nó có mặt trên thị trường, thậm chí nó còn chưa có mặt trên thị trường nữa. Bây giờ mình sẽ hướng dẫn các bạn sử dụng những phần mềm này một cách miễn phí (hoặc ít nhất cũng chỉ phải trả cước internet thôi)

Đầu tiên các bạn phải hiểu crack là gì? Crack là một từ nóng có nghĩa là bẻ gãy, bẻ gãy cái gi? Như đã nói ở trên, nhà sản xuất cung cấp cho bạn những phần mềm mà phải có Sn mới sử dụng được. Một phần mêm sau khi đã được crack thì không cần Sn vẫn sử dụng được

Hiện nay có rất nhiều phần mềm phục vụ cho việc crack. Có thể sử dụng 1 hoặc 2,3 phần mềm kết hợp với nhau để crack, phổ biến hiện nay là Win32dasm, softice, frogice, Hview...và còn rất nhiều. Ngoài ra thì có thể tạo keygen, crackfile để crack phần mềm nào đó.

Đây là bài viết dành cho newbie, những kiến thức bạn đọc được ở đây chỉ giúp các bạn nắm vững những kiến thức căn bản để có thể học những kiến thức cao hơn.

Những công cụ bạn cần: Win32dasm, Hview (một số người dùng softice ). Trong các cách crack thì đây là cách đơn giản nhất, chính vì vậy mức độ thành công của nó không cao



Đầu tiên bạn chạy chương trình cần crack, nếu chưong trình chưa được đăng ký thì nó sẽ hiện lên một Menu bắt bạn đăng ký, bạn hãy nhập đại vào đó một những dòng vô nghĩa rồi nhấn OK điều tất nhiên là nó sẽ thông báo Sn bị sai, điền quan trọng không phải là sai mà bạn hãy để ý đến câu thông báo, đại loại như là :"serial number is incorect" hay như Việt key là "mã số sai hoặc thiếu" bạn hãy nhớ dòng này.

Chạy win32dasm chọn "Open file to Disassembler...", chọn file cần crack trên menu chọn String Data References. Mình xin dừng lại giải thích một chút chỗ này..nếu bạn nào từng học lập trình rồi thì dễ hiểu thôi. Nếu mà Sn bạn nhập vào mà giống với Sn của chương trình cần crack thì cho đăng ký bản quyền, nếu không (else) thì tới dòng thông báo "Sn is incorect"...Bây giờ bạn dùng W32dasm sửa nếu mà nhập sai thì cho đi tiếp nếu nhập đúng thì nói là "Sn is incorrect".

Sau khi bạn mở menu String Data References , vào đó kiếm cái dòng hồi nãy mình bảo bạn nhớ đó "Sn is incorrect" và nhấn kép vào đó lúc này W32dasm đưa chúng ta đến chỗ thông báo chưa đăng ký, từ dòng này hãy dời con trỏ lên phía trên cho tới khi nào thấy dòng "je.." hoặc "jne" thì dừng lại. Còn nếu thấy dòng Reference... 0000 thì dừng tại đó vì bảng thông báo sẽ được gọi từ một bảng khác, nhấn Shift+F12 nhập vào địa chỉ sau Reference ->Enter lặp lại các bước như trên cho tới khi nào gặp dòng "je" hoặc "jne " thì dừng lại. Cuối cùng sau khi đã thấy dòng này rồi thì nhìn xuống thanh Status bar bạn sẽ thấy một chuỗi sau : "@Offset ..00" hãy nhới lấy chuỗi đó...bỏ chữ "h" (hex) ở cuối đi nhé.

Tiếp theo đóng W32dasm lại mở Hiew ra, chọn file cần crack nhấn F4-> decode, F5 gõ vào chuỗi "0000..." bạn có được sau chuỗi "Offset..." đây chính là dòng quan trọng nhất bởi vì bạn có thể dùng dòng này để patch, Nhấn F3->F2 rồi sửa thành "jne" nếu nó là "je" hoặn thành "je" nếu nó là "jne" save (F9) lại và thoát ra ngoài và kiểm tra kết quả...bạn sẽ nhận được kết quả mong đợi đó.

BE_KHOA_PHAN_MEM_GIOI_HAN_THOI_GIAN_SU_DUNG

Khi một chương trình được chạy hoặc thực hiện , nó sẽ duyệt qua một dãy các hàm và thủ tục. Thông thường chương trình sẽ sử lý 6 thủ tục ( procedure ) như sau:



1.) GetSystemTime. ( Kiểm tra thời gian của hệ thống ).

2.) Installed. (Kiểm tra rằng chương trình đã được cài đặt từ bao giờ ).

3.) Expired. (Hiển thị thông báo quá hạn).

4.) DaysLeft. (Hiển thị thông báo " you have % days left ").

5.) Halt. (Thoát khỏi chương trình).

6.) Main. (Vào chương trình chính).



Dựa vào những thủ tục trên , ta có thể thấy rằng một chương trình quy định thời gian sử dụng sẽ được check giống như sau :



00000001 : Gọi thời gian hệ thống.

00000002 : Kiểm tra thời gian chương trình đã được cài đặt

00000003 : Nếu hai thông số trên có giá trị lớn hơn 30 ngày thì

00000004 : Gọi thông báo quá hạn

00000005 : Nhảy đến phần Halt – Thóat chương trình

00000006 : Ngòai ra

00000007 : Tính số ngày còn lại

00000008 : Trở về màn hình chính của chương trình



Đây là một ví dụ thực tế



Call 041829B0 (Gọi thời gian hệ thống)

Call 0492832C (Thời gian cài đặt)

Cmp Ax,Bx (Thực hiện lệnh If – Nếu )

JL 04927435 (Chuyển đến hay không chuyển đến phần sử dụng chương trình – địa chỉ JL hay không, phụ thuộc vào giá trị của ax và bx )

Call 04348234 (Hết hạn

Jmp 0432833C (Thóat)

---Địa chỉ JL---

Call 04583BC0 (Số ngày còn lại)

Jmp 042392BC (Phần màn hình chính của chương trình )



Nếu bạn nhìn đoạn mã trên, bạn sẽ nhận ra rằng cách chương trình thực hiện sẽ dựa trên giá trị của hai thanh Ax / Bx .

Chúng ta sẽ nảy sinh một vấn đề, là làm sao xác định được đúng vị trí để patch bởi vì có rất nhiều lệnh so sánh trong chương trình đã được decompile .Ok bây giờ tôi sẽ chỉ cho các bạn cách để tìm đúng vị trí .



Tìm đúng vị trí cần patch :



Dựa vào đoạn mã ở trên , sẽ có hai trường hợp phát sinh .



1> Khi bạn vẫn trong khoảng thời gian được dùng thử ( < 30 ngày etc.. tuỳ theo khoảng thời gian mà chương trình quy định ) Với trường hợp này chương trình sẽ kiểm tra như sau :



GetSystemTime

Installed

Cmp ax,bx

JL (Jump) <---- Chú ý vào đây

DaysLeft

Main



2> Trường hợp chương trình quá hạn sử dụng :



GetSystemTime

Installed

Cmp ax,bx

JL ( No Jump ) <---- Chú ý vào đây

Expired

Halt



----------------------------------------



Trong hai trường hợp, bạn thấy đoạn code từ đầu chương trình đến lệnh JL hoàn toàn giống nhau . Để crack một chương trình giới hạn thời gian, bạn phải thay đổi giá trị của ax / bx hoặc bắt chương trình thay đổi lệnh JL thành lệnh JMP (sơ đồ 1).

Ok, chắc hẳn bạn đã cảm thấy hiểu những vấn đề chính rồi , bây giờ chuyển sang giai đoạn 2

------------------------------------------------------------

Công cụ và những đòi hỏi cần thiết :

SoftIce v3.23 hoặc mới hơn Symbol Loader.

1 trình biên tập hex.

Kiến thức cơ bản về ASM.

------------------------------------------------------------



Đầu tiên , ta khởi động softice và sau tìm đến menu File và click vào " Open module " , sau đó chọn file mà bạn muốn crack. Sau đó tìm đến menu Module và click vào Load Module .

Thông thường bạn sẽ gặp những thông báo, những thông báo này cho biết rằng bạn có lỗi trong quá trình dich symbol. Bạn hãy click vào nút Yes để tiếp tục loading file . Bạn có thể nhìn thấy hàng đống đoạn code như sau :

FFFF INVALID

FFFF INVALID

FFFF INVALID

FFFF INVALID

FFFF INVALID

v..v..v,.......

Bạn không càn quan tâm đến điều này vì đây không phải là những đoạn thông báo lỗi, đơn giản là là nó thông báo những vùng nhớ mà softice không có thể các định được.



************************************

Bước 1: Đóng Code Window .



Bạn gõ " WC " trong softice. Chúng ta không cần quan tâm đến nó bây giờ.



************************************

Bước 2: Thiết đặt breakpoint - GetSystemTime. ( Khu vực bị phá )



Chúng ta cần phải đặt breakpoint GetSystemTime ( Đây là một trong số rất nhiều hàm API để trả lại giá trị ngày / giờ của hệ thống )

Bạn set breakpoint bằng cách gõ : " BPX GetSystemTime "

GetSystemTime Cũng chỉ là địa chỉ của hàm, bạn cũng có thể đặt breakpoint như sau " BPX 004234D" nếu như bạn biết được chính xác địa chỉ của hàm.

Bạn cũng có thể cộng thêm một offset vào BPX , ví dụ "BPX GetSystemTime + 4 " như vậy softice sẽ dừng tại offset thứ 4 tính từ điểm bắt đầu của chức năng GetSystemTime.



************************************

Bước 3 : Tiếp tục cho chương trình chạy :



Bạn đã set breakpoint GetSystemTime xong , bây giờ là lúc để chương trình khởi động và chạy. Tất cả những điều bạn cần làm bây giờ là ấn Ctrl + D. Chương trình sẽ tiếp tục chạy và nó sẽ sử lý hàm GetSystemTime , khi đó Softice sẽ được khỏi động và dừng chương trình tại điểm bắt đầu của hàm. bạn sẽ nhin` thấy dòng chữ : “BPX due to KERNEL32!GetSystemTime” ---> chúng ta đã đến đúng điểm cần đến.



************************************



Bước 4 : Thoát khỏi Hàm



Bây giờ chúng ta đang ở điểm bắt đầu của hàm GetSystemTime. Tất cả những điều bạn cần làm bây giờ là ấn F11 một lần . Bây giờ là lúc mọi chuyện trở nên thú vị hơn rất nhiều.



************************************



Bước 5 : Tìm ra mã đến khi gặp nag screen.



Bạn chỉ cần ấn F10 đến khi gặp thông báo : “You have % day`s left” xuất hiện . Hãy chú ý rằng tất cả những dòng lệnh đã xử lý đều được hiển thị trong của sổ lệnh ( command window. Tất cả những thông tin này đều đang được đưa vào trong Bộ nhớ đệm của Softice.



************************************



Bước 6 : Nhớ file Log.



Khi nag screen xuất hiện, đây là lúc để bạn save file log đầu tiên. Bạn làm điều này bằng cách click vào softice symbol loader --> đến menu File và chọn '”Save softice history as...”. Lưu tập tin với tên Log1.txt .



************************************



Bước 7 : Set lại thời gian của hệ thống và làm lại toàn bộ các bước trên.



Mục đích của bước này là để tạo file Log2.txt. Lúc này bạn thiết lập lại ngày cho hệ thống đến quá thời gian sử dụng , như vậy sẽ có một thông báo rằng quá hạn cho phép sử dụng --> làm lại bước 6 khi bạn bắt gặp cái thông báo này nhưng nhớ lưu với tên Log2.txt.



************************************



Bước 8 : So Sánh 2 file log:



Sau khi bạn có 2 file log, điều bây giờ là bạn phải so sánh coi sự khac nhau của hai file này, dưới đây tôi sẽ cho bạn một ví dụ :

LOG FILE 1. ( Khi bạn còn gặp thông báo You have x days left )

***********

Break due to BPX KERNEL32!GetSystemTime (ET=33.15 milliseconds)

Break due to G (ET=383.02 microseconds)

015F:78026B90 663B0512870378 CMP AX,[78038712]

015F:78026B97 756B JNZ 78026C04 (JUMP )

015F:78026C04 8D8534FFFFFF LEA EAX,[EBP-00CC]

015F:78026C0A 50 PUSH EAX

015F:78026C0B FF1540D10278 CALL [KERNEL32!GetTimeZoneInformation]

015F:78026C11 83F8FF CMP EAX,-01

015F:78026C14 7430 JZ 78026C46 (NO JUMP)

015F:78026C16 83F802 CMP EAX,02

015F:78026C19 7527 JNZ 78026C42 (NO JUMP)

015F:78026C1B 66837DCE00 CMP WORD PTR [EBP-32],00

015F:78026C20 7420 JZ 78026C42 (NO JUMP)

015F:78026C22 837DDC00 CMP DWORD PTR [EBP-24],00

015F:78026C26 741A JZ 78026C42 (NO JUMP)

015F:78026C28 6A01 PUSH 01

015F:78026C2A 58 POP EAX

015F:78026C2B 56 PUSH ESI

015F:78026C2C 57 PUSH EDI

015F:78026C2D 8D75E0 LEA ESI,[EBP-20]

015F:78026C30 BF08870378 MOV EDI,78038708

015F:78026C35 A5 MOVSD

015F:78026C36 A5 MOVSD

015F:78026C37 A5 MOVSD

015F:78026C38 A5 MOVSD

015F:78026C39 5F POP EDI

015F:78026C3A A300870378 MOV [78038700],EAX

015F:78026C3F 5E POP ESI

015F:78026C40 EB90 JMP 78026CD2 (JUMP )

015F:78026BD2 50 PUSH EAX

015F:78026BD3 0FB745FC MOVZX EAX,WORD PTR [EBP-04]

015F:78026BD7 50 PUSH EAX

015F:78026BD8 0FB745FA MOVZX EAX,WORD PTR [EBP-06]

015F:78026BDC 50 PUSH EAX

015F:78026BDD 0FB745F8 MOVZX EAX,WORD PTR [EBP-08]

015F:78026BE1 50 PUSH EAX

015F:78026BE2 0FB745F6 MOVZX EAX,WORD PTR [EBP-0A]

015F:78026BE6 50 PUSH EAX

015F:78026BE7 0FB745F2 MOVZX EAX,WORD PTR [EBP-0E]

015F:78026BEB 50 PUSH EAX

015F:78026BEC 0FB745F0 MOVZX EAX,WORD PTR [EBP-10]

015F:78026BF0 50 PUSH EAX

015F:78026BF1 E8EE000000 CALL 78026CE4

015F:78026BF6 8B4D08 MOV ECX,[EBP+08]

015F:78026BF9 83C41C ADD ESP,1C

015F:78026BFC 85C9 TEST ECX,ECX

015F:78026BFE 7402 JZ 78026C02 (NO JUMP)

015F:78026C00 8901 MOV [ECX],EAX

015F:78026C02 C9 LEAVE

015F:78026C03 C3 RET

015F:300D2072 83C404 ADD ESP,04

015F:300D2075 8D4C2410 LEA ECX,[ESP+10]

015F:300D2079 51 PUSH ECX

015F:300D207A FF15B4841030 CALL [301084B4]

015F:300D2080 83C404 ADD ESP,04

015F:300D2083 8BF0 MOV ESI,EAX

015F:300D2085 8D54243C LEA EDX,[ESP+3C]

015F:300D2089 B909000000 MOV ECX,00000009

015F:300D208E 8D7C2418 LEA EDI,[ESP+18]

015F:300D2092 8D442418 LEA EAX,[ESP+18]

015F:300D2096 52 PUSH EDX

015F:300D2097 50 PUSH EAX

015F:300D2098 F3A5 REPZ MOVSD

015F:300D209A E8E1FDFFFF CALL 300D1E80

015F:300D209F 83C408 ADD ESP,08

015F:300D20A2 85C0 TEST EAX,EAX

015F:300D20A4 7E19 JLE 300D20BF (JUMP )

015F:300D20BF 8D442460 LEA EAX,[ESP+60]

015F:300D20C3 8D4C2418 LEA ECX,[ESP+18]

015F:300D20C7 50 PUSH EAX

015F:300D20C8 51 PUSH ECX

015F:300D20C9 E8B2FDFFFF CALL 300D1E80

015F:300D20CE 83C408 ADD ESP,08

015F:300D20D1 85C0 TEST EAX,EAX

015F:300D20D3 7E33 JLE 300D2108 (JUMP )

015F:300D2108 6820D91630 PUSH 3016D920

015F:300D210D E83EFCFFFF CALL 300D1D50

015F:300D2112 83C404 ADD ESP,04

015F:300D2115 85C0 TEST EAX,EAX

015F:300D2117 7410 JZ 300D2129 (JUMP )

015F:300D2129 391D20D91630 CMP [3016D920],EBX

015F:300D212F 0F85D6010000 JNZ 300D230B (JUMP )

015F:300D230B 6A4C PUSH 4C

015F:300D230D 6824D91630 PUSH 3016D924

015F:300D2312 E8E9F9FFFF CALL 300D1D00

015F:300D2317 8B0D20D91630 MOV ECX,[3016D920]

015F:300D231D 83C408 ADD ESP,08

015F:300D2320 3BC1 CMP EAX,ECX

015F:300D2322 0F841DFEFFFF JZ 300D2145 (JUMP )

015F:300D2145 8D542418 LEA EDX,[ESP+18]

015F:300D2149 6848D91630 PUSH 3016D948

015F:300D214E 52 PUSH EDX

015F:300D214F E82CFDFFFF CALL 300D1E80

015F:300D2154 83C408 ADD ESP,08

015F:300D2157 85C0 TEST EAX,EAX

015F:300D2159 7D26 JGE 300D2181 (JUMP )

015F:300D2181 803DA480163003 CMP BYTE PTR [301680A4],03

015F:300D2188 0F876D010000 JA 300D22FB (NO JUMP)

015F:300D218E 8BAC24D0000000 MOV EBP,[ESP+000000D0]

015F:300D2195 C745009F8260100 MOV DWORD PTR [EBP+00],0001869F

015F:300D219C A0A4801630 MOV AL,[301680A4]

015F:300D21A1 A801 TEST AL,01

015F:300D21A3 744B JZ 300D21F0 (NO JUMP)

015F:300D21A5 33C0 XOR EAX,EAX

015F:300D21A7 8D4C2418 LEA ECX,[ESP+18]

015F:300D21AB A0A5801630 MOV AL,[301680A5]

015F:300D21B0 51 PUSH ECX

015F:300D21B1 6824D91630 PUSH 3016D924

015F:300D21B6 8D3440 LEA ESI,[EAX*2+EAX]

015F:300D21B9 C1E603 SHL ESI,03

015F:300D21BC E85FFDFFFF CALL 300D1F20

015F:300D21C1 83C408 ADD ESP,08

015F:300D21C4 3BC3 CMP EAX,EBX

015F:300D21C6 0F8C2F010000 JL 300D22FB (NO JUMP)

015F:300D21CC 3BC6 CMP EAX,ESI

015F:300D21CE 7C0A JL 300D21DA (NO JUMP)

015F:300D21D0 BB04000000 MOV EBX,00000004

015F:300D21D5 E9E6000000 JMP 300D22C0 (JUMP )

015F:300D22C0 8B4500 MOV EAX,[EBP+00]

015F:300D22C3 33C9 XOR ECX,ECX

015F:300D22C5 8A0DA9801630 MOV CL,[301680A9]

015F:300D22CB 3BC1 CMP EAX,ECX

015F:300D22CD 7F05 JG 300D22D4 (JUMP )

015F:300D22D4 6A4C PUSH 4C

015F:300D22D6 6824D91630 PUSH 3016D924

015F:300D22DB E820FAFFFF CALL 300D1D00

015F:300D22E0 83C408 ADD ESP,08

015F:300D22E3 A320D91630 MOV [3016D920],EAX

015F:300D22E8 6820D91630 PUSH 3016D920

015F:300D22ED E80EFBFFFF CALL 300D1E00

015F:300D22F2 83C404 ADD ESP,04

015F:300D22F5 85C0 TEST EAX,EAX

015F:300D22F7 8BC3 MOV EAX,EBX

015F:300D22F9 7505 JNZ 300D2300 (JUMP )

015F:300D2300 5F POP EDI

015F:300D2301 5E POP ESI

015F:300D2302 5D POP EBP

015F:300D2303 5B POP EBX

015F:300D2304 81C4BC000000 ADD ESP,000000BC

015F:300D230A C3 RET

015F:3000ADB6 8BF0 MOV ESI,EAX

015F:3000ADB8 83C404 ADD ESP,04

015F:3000ADBB 8D46FF LEA EAX,[ESI-01]

015F:3000ADBE 83F805 CMP EAX,05

015F:3000ADC1 773D JA 3000AE00 (NO JUMP)





LOG FILE 2. ( Khi chương trình đã hết hạn )

***********

KERNEL32!GetSystemTime

Break due to G (ET=380.57 microseconds)

015F:78026B8C 668B45EA MOV AX,[EBP-16]

015F:78026B90 663B0512870378 CMP AX,[78038712]

015F:78026B97 756B JNZ 78026C04 (JUMP )

015F:78026C04 8D8534FFFFFF LEA EAX,[EBP-00CC]

015F:78026C0A 50 PUSH EAX

015F:78026C0B FF1540D10278 CALL [KERNEL32!GetTimeZoneInformation]

015F:78026C11 83F8FF CMP EAX,-01

015F:78026C14 7430 JZ 78026C46 (NO JUMP)

015F:78026C16 83F802 CMP EAX,02

015F:78026C19 7527 JNZ 78026C42 (NO JUMP)

015F:78026C1B 66837DCE00 CMP WORD PTR [EBP-32],00

015F:78026C20 7420 JZ 78026C42 (NO JUMP)

015F:78026C22 837DDC00 CMP DWORD PTR [EBP-24],00

015F:78026C26 741A JZ 78026C42 (NO JUMP)

015F:78026C28 6A01 PUSH 01

015F:78026C2A 58 POP EAX

015F:78026C2B 56 PUSH ESI

015F:78026C2C 57 PUSH EDI

015F:78026C2D 8D75E0 LEA ESI,[EBP-20]

015F:78026C30 BF08870378 MOV EDI,78038708

015F:78026C35 A5 MOVSD

015F:78026C36 A5 MOVSD

015F:78026C37 A5 MOVSD

015F:78026C38 A5 MOVSD

015F:78026C39 5F POP EDI

015F:78026C3A A300870378 MOV [78038700],EAX

015F:78026C3F 5E POP ESI

015F:78026C40 EB90 JMP 78026CD2 (JUMP )

015F:78026BD2 50 PUSH EAX

015F:78026BD3 0FB745FC MOVZX EAX,WORD PTR [EBP-04]

015F:78026BD7 50 PUSH EAX

015F:78026BD8 0FB745FA MOVZX EAX,WORD PTR [EBP-06]

015F:78026BDC 50 PUSH EAX

015F:78026BDD 0FB745F8 MOVZX EAX,WORD PTR [EBP-08]

015F:78026BE1 50 PUSH EAX

015F:78026BE2 0FB745F6 MOVZX EAX,WORD PTR [EBP-0A]

015F:78026BE6 50 PUSH EAX

015F:78026BE7 0FB745F2 MOVZX EAX,WORD PTR [EBP-0E]

015F:78026BEB 50 PUSH EAX

015F:78026BEC 0FB745F0 MOVZX EAX,WORD PTR [EBP-10]

015F:78026BF0 50 PUSH EAX

015F:78026BF1 E8EE000000 CALL 78026CE4

015F:78026BF6 8B4D08 MOV ECX,[EBP+08]

015F:78026BF9 83C41C ADD ESP,1C

015F:78026BFC 85C9 TEST ECX,ECX

015F:78026BFE 7402 JZ 78026C02 (NO JUMP)

015F:78026C00 8901 MOV [ECX],EAX

015F:78026C02 C9 LEAVE

015F:78026C03 C3 RET

015F:300D2072 83C404 ADD ESP,04

015F:300D2075 8D4C2410 LEA ECX,[ESP+10]

015F:300D2079 51 PUSH ECX

015F:300D207A FF15B4841030 CALL [301084B4]

015F:300D2080 83C404 ADD ESP,04

015F:300D2083 8BF0 MOV ESI,EAX

015F:300D2085 8D54243C LEA EDX,[ESP+3C]

015F:300D2089 B909000000 MOV ECX,00000009

015F:300D208E 8D7C2418 LEA EDI,[ESP+18]

015F:300D2092 8D442418 LEA EAX,[ESP+18]

015F:300D2096 52 PUSH EDX

015F:300D2097 50 PUSH EAX

015F:300D2098 F3A5 REPZ MOVSD

015F:300D209A E8E1FDFFFF CALL 300D1E80

015F:300D209F 83C408 ADD ESP,08

015F:300D20A2 85C0 TEST EAX,EAX

015F:300D20A4 7E19 JLE 300D20BF (JUMP )

015F:300D20BF 8D442460 LEA EAX,[ESP+60]

015F:300D20C3 8D4C2418 LEA ECX,[ESP+18]

015F:300D20C7 50 PUSH EAX

015F:300D20C8 51 PUSH ECX

015F:300D20C9 E8B2FDFFFF CALL 300D1E80

015F:300D20CE 83C408 ADD ESP,08

015F:300D20D1 85C0 TEST EAX,EAX

015F:300D20D3 7E33 JLE 300D2108 (JUMP )

015F:300D2108 6820D91630 PUSH 3016D920

015F:300D210D E83EFCFFFF CALL 300D1D50

015F:300D2112 83C404 ADD ESP,04

015F:300D2115 85C0 TEST EAX,EAX

015F:300D2117 7410 JZ 300D2129 (JUMP )

015F:300D2129 391D20D916230 CMP [3016D920],EBX

015F:300D212F 0F85D6010000 JNZ 300D230B (JUMP )

015F:300D230B 6A4C PUSH 4C

015F:300D230D 6824D91630 PUSH 3016D924

015F:300D2312 E8E9F9FFFF CALL 300D1D00

015F:300D2317 8B0D20D91630 MOV ECX,[3016D920]

015F:300D231D 83C408 ADD ESP,08

015F:300D2320 3BC1 CMP EAX,ECX

015F:300D2322 0F841DFEFFFF JZ 300D2145 (JUMP )

015F:300D2145 8D542418 LEA EDX,[ESP+18]

015F:300D2149 6848D91630 PUSH 3016D948

015F:300D214E 52 PUSH EDX

015F:300D214F E82CFDFFFF CALL 300D1E80

015F:300D2154 83C408 ADD ESP,08

015F:300D2157 85C0 TEST EAX,EAX

015F:300D2159 7D26 JGE 300D2181 (JUMP )

015F:300D2181 803DA480163003 CMP BYTE PTR [301680A4],03

015F:300D2188 0F876D010000 JA 300D22FB (NO JUMP)

015F:300D218E 8BAC24D0000000 MOV EBP,[ESP+000000D0]

015F:300D2195 C745009F860100 MOV DWORD PTR [EBP+00],0001869F

015F:300D219C A0A4801630 MOV AL,[301680A4]

015F:300D21A1 A801 TEST AL,01

015F:300D21A3 744B JZ 300D21F0 (NO JUMP)

015F:300D21A5 33C0 XOR EAX,EAX

015F:300D21A7 8D4C2418 LEA ECX,[ESP+18]

015F:300D21AB A0A5801630 MOV AL,[301680A5]

015F:300D21B0 51 PUSH ECX

015F:300D21B1 6824D91630 PUSH 3016D924

015F:300D21B6 8D3440 LEA 2ESI,[EAX*2+EAX]

015F:300D21B9 C1E603 SHL ESI,03

015F:300D21BC E85FFDFFFF CALL 300D1F20

015F:300D21C1 83C408 ADD ESP,08

015F:300D21C4 3BC3 CMP EAX,EBX

015F:300D21C6 0F8C2F010000 JL 300D22FB (NO JUMP)

015F:300D21CC 3BC6 CMP EAX,ESI

015F:300D21CE 7C0A JL 300D21DA (JUMP )

015F:300D21DA 2BF0 SUB ESI,EAX

015F:300D21DC B8ABAAAA2A MOV EAX,2AAAAAAB

015F:300D21E1 F7EE IMUL ESI

015F:300D21E3 C1FA02 SAR EDX,02

015F:300D21E6 8BC2 MOV EAX,EDX

015F:300D21E8 C1E81F SHR EAX,1F

015F:300D21EB 03D0 ADD EDX,EAX

015F:300D21ED 895500 MOV [EBP+00],EDX

015F:300D21F0 F605A480163002 TEST BYTE PTR [301680A4],02

015F:300D21F7 0F84B3000000 JZ 300D22B0 (JUMP )

015F:300D22B0 B909000000 MOV ECX,00000009

015F:300D22B5 8D742418 LEA ESI,[ESP+18]

015F:300D22B9 BF48D91630 MOV EDI,3016D948

015F:300D22BE F3A5 REPZ MOVSD

015F:300D22C0 8B4500 MOV EAX,[EBP+00]

015F:300D22C3 33C9 XOR ECX,ECX

015F:300D22C5 8A0DA9801630 MOV CL,[301680A9]

015F:300D22CB 3BC1 CMP EAX,ECX

015F:300D22CD 7F05 JG 300D22D4 (JUMP )

015F:300D22D4 6A4C PUSH 4C

015F:300D22D6 6824D91630 PUSH 3016D924

015F:300D22DB E820FAFFFF CALL 300D1D00

015F:300D22E0 83C408 ADD ESP,08

015F:300D22E3 A320D91630 MOV [3016D920],EAX

015F:300D22E8 6820D91630 PUSH 3016D920

015F:300D22ED E80EFBFFFF CALL 300D1E00

015F:300D22F2 83C404 ADD ESP,04

015F:300D22F5 85C0 TEST EAX,EAX

015F:300D22F7 8BC3 MOV EAX,EBX

015F:300D22F9 7505 JNZ 300D2300 (JUMP )

015F:300D2300 5F POP EDI

015F:300D2301 5E POP ESI

015F:300D2302 5D POP EBP

015F:300D2303 5B POP EBX

015F:300D2304 81C4BC000000 ADD ESP,000000BC

015F:300D230A C3 RET

015F:3000ADB6 8BF0 MOV ESI,EAX

015F:3000ADB8 83C404 ADD ESP,04

015F:3000ADBB 8D46FF LEA EAX,[ESI-01]

015F:3000ADBE 83F805 CMP EAX,05

015F:3000ADC1 773D JA 3000AE00 (JUMP )



************************************



Bước 9: Tìm điểm khác biệt đầu tiên của 2 file log :



Bạn có thể nhân thấy rằng 2 file log tương đồng cho đến vị trí : 015F:3000ADC1. Ở file log1 câu lện jump không được thực thi , nhưng ở log2 thì lại khác đơn giản là vì giá trị của EAX tại 2 thời điểm là khác nhau

Hãy nhìn vào 3 dòng lệnh này :

LEA EAX,[ESI-01] ->Cái ra lệnh để tìm ESI-01 và đặt giá trị cho EAX.

CMP EAX,05 So sánh EAX với thông số 5.

JA 3000AE00 Nhảy đến 300AE00 và thóat.



************************************



Bước 10 : Định hướng



Bây giờ thì làm cái quái gì nhỉ , Đơn giản là thay đổi đoạn code để cho lệnh JA không có được thực hiện được . Cũng có khá nhiều cách để thực hiện điều này:

Cách nông dân nhất là dùng nop (90) -- > 015F:3000ADC1 77 3D JA 3000AE00 ta đổi thành 90 90 .

Một cách đúng đắn hơn là thay đổi chương trinh` bằng cách thay 'LEA EAX,[ESI-01]' 3 byte; 'CMP EAX,05' - 3 byte; 'JA' -2 byte; (Tổng cộng có 8 byte trong 3 câu lệnh asm) bằng câu lệnh MOV EAX,00000005 ( 5 byte ) và 3 byte 'NOP' ( Tổng cộng cũng 8 byte ) --> điều này đảm bảo rằng giá trị của EAX đúng và làm cho cấu trúc của chương trình không bị thay đổi .



************************************



Bước 11: Patch chương trình



Tất cả những việc còn lại là dùng hex editor load chương trình ban cần crack , tìm đến đúng offset của nó và thay mã . ví dụ :

Thay thế '8D46FF83F805773D' bằng 'B805000000909090'.

B805000000 = MOV EAX,05

90 = NOP




December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31