logo

INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM CRACKLATINOS


INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM CRACKLATINOS INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM CRACKLATINOS (_kienmanowar_) I. L i nói đ u : M t l n n a g i l i chào t i toàn th anh em trong REA. Tình c qua bên site c a lão Ricardo Narvaja th y đư c b tut này khá hay và r t cơ b n cho t t c nh ng ai mu n tìm hi u v cracking thông qua s tr giúp c a chương trình debugger đã tr nên quá n i ti ng, đó chính là Ollydbg. Tôi r t khoái các tut bên Cracklatinos nhưng ng t n i toàn là ti ng TBN, nhưng th y b tut này hay nên máu quá , quy t đ nh trans t TBN qua English, r i t Eng l i hì h c vi t l i theo cách mình hi u đ truy n đ t nh ng gì mình bi t cho anh em. Ý tư ng chính c a lo t tut này theo như tác gi c a nó nói là nh m cung c p nh ng ki n th c cơ b n nh t cho t t c nh ng ai chu n b b t đ u bư c vào tìm hi u ngh thu t cracking v i s tr giúp c a Ollydbg. M c dù tiêu đ c a tut là Introduction (t c là ch gi i thi u thôi) nhưng th c ch t b tuts này s cung c p cho chúng ta m t ki n th c n n t ng v ng ch c đ có th đ c và hi u đư c các tuts dành cho nh ng ngư i có trình đ advanced và đ c bi t là nh ng tut s p đư c gi i thi u trên Cracklatinos (hehe tác gi c a nó qu ng cáo ác quá), đ ng th i thông qua lo t tuts này nó còn giúp chúng ta có kh năng áp d ng các kĩ thu t m i trong vi c cracking. II. T i sao l i là Ollydbg ? Tham gia vào REA đi u đ u tiên có l chúng ta th y nhi u nh t đó là s xu t hi n c a “Ollydbg”, v y t i sao l i là Ollydbg mà không ph i là m t công c nào khác. đây chúng ta s không bàn lu n đ n vi c t o ra m t công c khác hay hơn, m nh hơn Ollydbg cũng như không đ c p t i vi c ch nh s a l i m t chương trình đã quá n i ti ng t lâu là SoftIce, ch đơn gi n là nh ng tín đ cu ng tín c a SoftIce đang d n d n chuy n qua xài Ollydbg b i tính d dùng, không gây crash máy b t thình lình như SoftIce, đư c h tr b i nhi u teams trên th gi i thông qua các Plugins cũng như các b n Ollydbg đư c mod l i nh m ch ng l i các cơ ch anti-debug cũng như anti-Ollydbg, và vì m t lý do đơn gi n khác n a đó là lo t tuts này dành riêng đ nói v Ollydbg ☺. III. Nhi m v đ u tiên Hì nhi m v đ u tiên c a chúng ta bây gi là gì ? Do đây là tut vi t v Olly nên vi c chúng ta ph i làm là đi tìm Olly đâu đ còn load v mà xài. Th nh t b n có th lên home site c a Olly là ollydbg.de đ download, còn không thì trong REA có đưa r t nhi u link đ download Ollydbg. Riêng b n thân tôi cũng sưu t m đư c có l g n ch c b n Olly khác nhau, hic hic có l là đ i ver 2.0 c a Olly thôi ☺ 1 Khi download đư c Olly v r i thì r t đơn gi n ch vi c extract nó ra r i s d ng, tôi khuyên b n nên đ chung t t c công c liên quan đ n RE, Cracking vào 1 thư m c, ví d như c a tôi trên hình minh h a, như th ta d dàng qu n lý hơn. Okie coi như b n đã có Ollydbg, chúng ta ch vi c Run cái file OLLYDBG.exe là Olly ho t đ ng li n, không ph c t p v m t cài đ t cũng như s d ng như SoftIce. Giao di n c a Ollydbg như sau : ðây là b n Ollydbg c a tôi, đã đư c ch nh s a cũng như c u hình l i. N u như các b n download b n Ollydbg trên home site ho c t các ngu n khác có th s khác c a tôi, và đ có th hi n th menu Plugins thì các b n làm như sau : 2 Ch n như hình trên ho c vào Options > Appearance , ch n tab Directories và ch nh l i đư ng d n t i thư m c Plugins và thư m c UDD. Sau đó nh n Ok và ch y l i Olly thì s th y đư c menu Plugins. Ph n ti p theo, tôi s gi i thi u t i các b n chi ti t các c a s chính trong Ollydbg và đ minh h a cho các ph n sau c a bài vi t, tôi s s d ng m t Crackme r t n i ti ng đó là : CRACKME.EXE c a tác gi CRUEHEAD. ð load crackme này vào trong Olly ta nh n chu t vào bi u tư ng sau ho c vào File > Open (or F3) : Sau đó chúng ta s ch n chính xác crackme mà chúng ta dùng đ minh h a cho bài vi t này. K t qu sau khi load vào Olly chúng ta có đư c như sau : 3 Ch c các b n nhìn vào s c m th y choáng ng p, không bi t ph i b t đ u t đâu. Hic ngày đ u tiên khi tôi load m t target vào trong Olly, nhìn ngư c nhìn xuôi cũng không hi u gì h t luôn hehe, c ng i ng m mãi vì ch ng bi t làm gì hơn. Nhưng không sao m i th đ u có cách gi i quy t, khi chưa bi t thì ph i tìm tài li u mà đ c, khi đ c mà không hi u lúc đ y h ng đi h i. Nhưng h i cũng ph i bi t đư ng mà h i, n u không s ch ng bao gi b n nh n đư c câu tr l i mà có khi còn khi n ngư i khác c m th y b c mình. Tôi s cùng các b n tìm hi u t ng c a s m t c a Olly. Như các b n nhìn th y trên màn hình chính c a Olly đư c phân ra làm 5 c a s chính, m i c a s có m t nhi m v và m t tên riêng : 4 đây chúng ta th y có 4 c a s l n: - The Disassembler Window : c a s này các b n có th nhìn th y các đo n code c a chương trình d ng ngôn ng asm, và đ ng th i t i c a s này các b n cũng có th chú thích cho t ng t ng dòng mã asm . - The Registers Window : ðây là c a s ch a thông tin chi ti t v các thanh ghi như eax, ebx, ecx v….v…..Các c tr ng thái cũng đư c qu n lý t i c a s này - The Dump Window : T i c a s này b n có th xem ho c ch nh s a theo 2 d ng là hex và Ascii b nh c a chương trình mà b n mu n debug - The Stack Window : M t c a s không kém ph n quan tr ng , m i th trư c khi đư c th c hi n ph i đư c n p vào Stack. Cu i cùng có m t c a s n m bên dư i c a s Disassembler Window : Chúng ta g i nó là The Tip Window . ðây không ph i là tên g i c a nó nhưng v i tôi, tôi thích g i như v y ☺ .Khi b n đang t i m t dòng code nào đó trong quá trình debug , Olly s cho b n th y thông tin chi ti t v dòng code đó . L y ví d đơn gi n như sau : n u b n debug t i dòng l nh “ mov eax , dword ptr [123]” . Thì c a s này s cho b n bi t đư c giá tr hay con s nào đang đư c lưu gi t i [123] . Và còn nhi u đi u thú v khác n a mà c a s này s mang l i cho chúng ta . Trên đây là nh ng gì t ng quan nh t mà các b n nên bi t. Ph n dư i đây tôi s đi vào gi i thi u v ch c năng c a t ng c a s m t thông qua các hình minh h a, t t nhiên không th gi i thi u chi ti t h t đư c, chúng ta s tìm hi u d n d n trong t ng trư ng h p c th 5 các lo t tuts sau thêm vào đó các b n cũng nên ch đ ng t mình tìm hi u, đ ng nên quá l thu c vào bài vi t này. 1. The DISASSEMBLER Window : ðây là c a s chính đ u tiên c a Olly và là c a s r t quan tr ng, chúng ta s làm vi c r t nhi u trên c a s này. Khi b n mu n debug m t chương trình, b n load file th c thi c a chương trình đó vào trong Olly.Các chương trình mà b n load vào Olly là nh ng chương trình có th đư c code b ng nh ng ngôn ng khác nhau như : VB, VC++, Borland Delphi hay MASM nhưng t i c a s này toàn b code c a chương trình s đư c list ra dư i d ng các mã ASM. Theo m c đ nh c a Olly thì b t c chương trình nào mà b n load vào Olly s đư c Olly ti n hành phân tích toàn b code chính c a chương trình đó và đưa ra các comment thích h p. B n có th tùy bi n ch c năng này thông qua hình minh h a dư i đây : N u như b n ch n s d ng ch c năng này c a Olly thì nh ng gì xu t hi n trên c a s b n s gi ng v i nh ng hình minh h a trư c. Còn n u như b n không ch n, chúng ta s th y ngay đư c s khác bi t, Olly s không t đ ng phân tích chương trình n a công vi c phân tích này chúng ta s ph i th c hi n m t cách manual sau khi chương trình đư c load vào trong Olly. Okie, tôi th b ch n và load l i Crackme vào trong Olly, ta s đư c như sau : 6 Như các b n th y trên hình trên, n u như chúng ta không ch n ch c năng t đ ng phân tích c a Olly thì s th y các thông tin trong ph n Comment đã b lư c b đi khá nhi u, đi u này d n đ n vi c khó khăn trong quá trình debug chương trình. Tuy nhiên không ph i lúc nào ch c năng này cũng ho t đ ng m t cách hi u quá, nhi u khi chúng ta đ cho Olly t đ ng phân tích s l i d n đ n m t k t qu hoàn toàn ngư c l i, đo n code đư c phân tích và th hi n ra không đư c chính xác, ví d như trư ng h p dư i đây chúng ta s nh n đư c đo n code toàn ch a DB : Trong trư ng h p như th này chúng ta có th th c hiên m t cách manual đ remove nh ng gì mà Olly đã ti n hành phân tích ch đơn gi n b ng cách nh n chu t ph i t i màn hình này và ch n Analysis > Remove analysis from module 7 Và k t qu là chúng ta có đư c đo n code chính xác như sau : Do đó trong quá trình làm vi c v i Olly các b n nên linh ho t trong quá trình s d ng ch c năng này. Ngoài ra còn m t ph n khác cũng không kém ph n quan tr ng, như các b n th y trên hình minh h a Olly c a tôi các câu l nh đư c phân bi t màu s c m t cách rõ ràng, có th các b n không chú tr ng đ n v n đ này nhưng theo tôi vi c chúng ta phân bi t cũng như tinh ch nh l i màu s c trong Olly s khi n cho chúng ta nh n bi t các câu l nh d dàng hơn cũng như ph n nào th hi n năng khi u th m mĩ c a b n ☺. ð tinh ch nh l i màu s c trong Olly các b n vào các Tabs sau : 8 2. The REGISTERs Window : M t c a s quan tr ng ti p theo, đó chính là c a s Register. Như đã nói đây là c a s ch a thông tin chi ti t v các thanh ghi như eax, ebx, ecx v…v… Các c tr ng thái cũng đư c qu n lý t i c a s này. C a s này s cung c p cho chúng ta r t nhi u thông tin trong quá trình chúng ta làm vi c cùng Olly. N u như ch nhìn vào hình minh h a trên các b n ch c cũng s như tôi c m th y r ng nó s không có ý nghĩa nhi u l m, nhưng kì th c đây là nơi cung c p nhi u thông tin r t h u ích. 3. The STACK Window : Trư c tiên chúng ta s đi tìm hi u sơ qua v Stack. ðây là nơi lưu tr t m th i các d li u và đ a ch , nó là m t c u trúc d li u m t chi u. Các ph n t đư c c t vào và l y ra t m t đ u c a c u trúc này, t c là nó đư c x lý theo phương th c “vào trư c, ra sau” (LIFO : Last In First Out). Ph n t đư c c t vào cu i cùng g i là đ nh c a Stack. Các b n có th hình dung Stack như là m t ch ng đĩa, chi c đĩa đư c đ t lên cu i cùng s n m trên đ nh và ch có nó m i có th đư c l y ra đ u tiên. Hai thanh ghi chính làm vi c v i Stack là ESP và EBP. Theo m c đ nh trong Olly, Stack đư c bi u di n theo thanh ghi ESP tuy nhiên chúng ta có th luân chuy n qua l i gi a ESP và EBP b ng cách nh n chu t ph i và ch n như hình sau : 9 4. The DUMP Window : ðây là c a s hi n th n i dung c a b nh ho c file. Ta có th ch n nhi u đ nh d ng khác nhau đ bi u di n n i dung c a memory trong c a s này : byte, text, integer, float, address, disassembly ho c PE Header. C a s này cho phép chúng ta tìm ki m cũng như th c hi n các ch c năng ch nh s a, thi t l p các Break points v..v... V y là chúng ta đã d o qua 1 vòng các c a s chính c a Olly, tuy nhiên bên c nh đó Olly còn có r t nhi u c a s khác mà chúng ta không nhìn th y m t cách tr c ti p như các c a s trên đư c.Chúng ta ph i truy c p vào các c a s đó thông qua Menu như hình minh h a dư i đây : Chúng ta s lư t qua ch c năng c a t ng c a s m t. _ Nút L dùng đ m c a s Log c a Olly, c a s này cho chúng ta th y nh ng thông tin mà Olly ghi l i. Theo m c đ nh thì c a s này s lưu các thông tin v các module, import library ho c các Plugins đư c load cùng chương trình t i th i đi m đ u tiên khi ta load chương trình vào Olly. Bên c nh đó c a s này cũng ghi l i các thông tin v các Break points mà chúng ta đ t trong chương trình. Trong trư ng h p crackme c a chúng ta, ta có đư c thông tin như sau : 10 M t tính năng n a c a c a s này là khi chúng ta mu n lưu l i nhưng thông tin v Log c a s này cũng cung c p cho chúng ta kh năng ghi ra file. _ Nút E dùng đ m c a s Executables, c a s này s đưa ra danh sách nh ng 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 nhi u thông tin b ích khác n a : 11 T i c a s này chúng ta cũng có th s d ng tính năng Search đ tìm ki m thông tin v các strings, các đo n hexa c th hay unicode v..v.. thêm vào đó nó còn cung c p cho chúng ta nh ng ki u thi t l p Break points khác nhau t i các Sections. Vi c thi t l p các BPs là tùy thu c vào yêu c u và m c đích c a chúng ta. _ Nút T dùng đ m c a s Threads, c a s này li t kê các Threads c a chương trình : _ Nút W dùng đ m c a s Windows _ Nút H dùng đ m c a s Handles _ Nút C thì kh i nói , b n c nh n vào là kh c bi t ngay ☺ _ Nút / đ m c a s Patches, c a s này s cho chúng ta các thông tin v nh ng gì mà chúng ta đã edit trong chương trình. _Nút K đ m c a s Call Stack, hi n th m t danh sách các l nh call mà chương trình c a chúng ta đã th c hi n khi chúng ta Run b ng F9 và dùng F12 đ t m d ng chương trình. _ Nút B đ m c a s Break Points, c a s này s hi n th t t c các BPs mà chúng ta đ t trong chương trình. Tuy nhiên nó ch hi n th các BPs đư c set b ng cách nh n F2 thôi, còn các d ng BPs khác như : hardware breakpoint ho c memory breakpoints thì không đư c li t kê ra đây: _ Nút R đ m c a s References, c a s này là k t qu cho nh ng gì chúng ta th c hi n ch c năng Search trong Olly, k t qu s đư c hi n ra đây : 12 Phù khá nhi u c a s ph i không các b n, tôi s không đi vào chi ti t thêm n a b i vì chúng ta s 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) Khi m t s chương trình th c thi và nó t o ra Exception, Windows có th g i Registered Debugger (các debuggers đư c c u hình thành JIT) và attach nó vào chương trình. Tính năng này đư c g i là Just-in-time debugging. M t vài JIT debuggers d ng l i t i System breakpoint. Ollydbg thì ti p t c th c thi cho đ n khi nó đi đ n câu l nh đã t o ra Exception. ð c u hình Ollydbg tr thành 1 JIT b n làm như sau : N u như b n không mu n s d ng tính năng này thì b n có th Restore l i. 13 V. M t s phím cơ b n đ làm vi c v i Olly : F7 : Khi b n nh n F7 s th c thi t ng dòng l nh 1. N u trong quá trình Trace mà g p l nh Call thì s đi vào trong lòng c a l nh Call đó và th c thi t ng câu l nh trong l nh Call này cho đ n khi g p l nh Retn đ tr l i chương trình chính, t c là câu l nh ti p theo sau l nh Call. F8 : Cũng tương t như F7 nhưng có 1 đi m khác bi t là khi Trace code, n u như g p l nh Call nó b qua không c n quan tâm các l nh bên trong l nh Call mà th c thi luôn l nh Call đó và d ng l i t i câu l nh ti p theo dư i l nh Call. F2 : ð t m t Break point trong chương trình. V y Break point là gì , đơn gi n nó ch là vi c chúng ta t o 1 đi m ng t trong chương trình theo m t đi u ki n nào đó đ khi th c thi chương trình, n u th a đi u ki n mà chúng ta đ t ra thì chương trình s d ng l i t i v trí mà chúng ta đã đ t BP. Ví d , trong hình minh h a dư i đây : Bây gi tôi mu n đ t m t BP t i hàm Call g i t i API: LoadIconA. T c là khi tôi th c thi chương trình, chương trình g i t i hàm này thì ngay l p t c nó s d ng l i t i đây.Vi c ti p theo là tôi có th tùy bi n l i hàm này theo m c đích c a tôi, ch ng h n tôi NOP nó đ chương trình không còn g i đ n hàm này n a v..v.. ð làm đư c đi u này b n nh n chu t t i v trí c n Set BP, sau đó nh n F2. Ch chúng ta Set BP s đư c đánh d u màu đ : ð b BP mà chúng ta đã set thì ch vi c ch n v trí đánh d u màu đ và nh n F2. F9 : Cho phép th c thi chương trình trong ch đ Debug, tương t như vi c chúng ta nh p đúp chu t vào chương trình đ th c thi nó. Tuy nhiên khác v i vi c nh p đúp chu t, n u chúng ta nh n F9 thì Olly s tìm xem có BP nào đư c Set hay không, chương trình có tung ra các Exception gì không, hay n u chương trình có cơ ch ch ng Debug thì nó s terminate ngay l p t c. N u như không có b t kì c n tr nào thì chương trình s Run hoàn toàn và trên status bar c a Olly s báo cho chúng ta bi t đi u này : 14 F12 : T m d ng chương trình l i. VI. L i k t : Trên đây là nh ng gì t ng quan nh t v Olly, như đã nói các b n không nên quá l thu c vào bài vi t này c a tôi, các b n có th t mình tìm hi u thêm nh ng tính năng khác c a Olly. Các ph n sau c a lo t tuts này làm vi c trên Crackme c a tác gi CRUEHEAD, đ ti n cho các b n đ m t công tìm ki m tôi đã kèm luôn target cùng v i bài vi t này. Hi v ng nh ng gi tôi đã vi t trên đã giúp cho các b n ph n nào hi u đư c t i sao Ollydbg đang ngày càng tr nên ph bi n. 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, dqtln, ARTEAM .... all my friend, and YOU. --++--==[ Thanks To ]==--++-- iamidiot, WhyNotBar, trickyboy, dzungltvn, takada, hurt_heart, haule_nth, hytkl v..v.. các b n đã đóng góp r t nhi u cho REA. Hi v ng các b n s 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). And finally, thanks to RICARDO NARVAJA and all members on CRACKSLATINOS. >>>> If you have any suggestions, comments or corrections email me: kienbigmummy[at]gmail.com 15 INTRODUCTION TO THE CRACKING WITH OLLYDBG FROM CRACKLATINOS (_kienmanowar_) I. L i nói đ u Chào m i ngư i, sau tut đ u tiên c a tôi gi i thi u t i các b n v Ollydbg, b ng đi m t th i gian do công vi c b n r n tôi đành gác bút chưa th vi t ti p đư c. Bây gi m i vi c có v n đ nh r i, tôi s dành chút th i gian đ ti p t c b tut này. M c dù có b n đã làm ti p công vi c c a tôi là d ch và vi t đ n tut th 16, nhưng tôi s v n vi t l i theo cách vi t và phong cách c a tôi. ðây v a là nh ng bài vi t mà tôi chia s đ n các b n cũng đ ng th i là vi c tôi đúc k t và 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 mư i và cu i cùng là h th p l c phân.Chúng ta s đi l n lư t đ nh nghĩa v t ng h th ng này. H nh phân : Trong h đ m nh phân cơ s là 2 và nó ch có hai ch s là 0 và 1. H mư i (th p phân) : Có 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 phân, và c m t h đ m th ba là h 16 hay còn g i t t là s hex. S hex cho phép chúng ta chuy n đ i m t cách d dàng sang s h nh phân và ngư c l i. Note : ð đ i s hex sang s nh phân chúng ta ch vi c bi u di n các ch s c a nó dư i d ng nh phân. Còn đ i s nh phân sang s hex, thì ta nhóm 4 ch s c a s nh phân l i theo th t l n lư t t ph i qua trái. Sau đó chuy n thành s hex tương ng. H đ m hex là h đ m có cơ s 16 cho nên các ch s c a nó là : 0-9, A-F. (Vì h t các kí hi u ch s đ bi u di n nên ngư i ta dùng thêm các ch cái đ bi u di n: các ch cái t A – F tương ng bi u di n các s t 10 – 15). Khi b n mu n làm quen v i công vi c debug trong Olly thì đi u đ u tiên tôi khuyên b n nên làm quen v i các h th ng s trên, Olly ch y u s d ng h 16. Bên c nh đó các b n cũng ph i h c các phương pháp chuy n đ i đơn gi n gi a các h s v i nhau đ ti n cho quá trình b n làm vi c. Có th các b n s cho l i tôi nói là th a b i vì ngày nay có quá 1 nhi u công c h tr cho chúng ta làm vi c này, nhưng theo tôi đây v n là nh ng ki n th c tiên quy t vì công c ch là h tr đ chúng ta làm vi c nhanh chóng mà thôi, còn mu n hi u sâu, r ng thì chúng ta không nên b qua nh ng chi ti t dù là v n v t nh t. đây trong bài vi t này, tôi coi như các b n đã t mình trang b nh ng ki n th c cơ b n r i. Do đó đ d dàng hơn cho chúng ta khi làm vi c v i các h th ng s , Windows cung c p cho chúng ta m t công c khá m nh mà đôi khi ít ngư i đ ý mà th m chí có khi còn không bi t là nó h tr cho chúng ta các tính năng liên quan đ n vi c chuy n đ i ☺, đó chính là ti n ích Calculator. Có nhi u cách th c đ m chương trình này nhưng cách nhanh nh t là vào menu Run và gõ Calc.exe (th m chí ch c n gõ Calc cũng m đư c). Như b n th y trên hình sau khi chúng ta gõ Calc thì ngay l p t c công c Calculator s hi n ra dư i d ng m t máy 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ư v y? M t câu tr l i r t đơn gi n là vì t lúc cha sinh m đ chúng ta t i gi chúng ta s d ng h 10, h đ m chu n c a loài ngư i ☺ nên chương trình đ default như v y là hoàn toàn h p lý. Các b n có th luân chuy n sang các h khác r t đơn gi n thông qua các tùy ch n. L y m t ví d , tôi mu n chuy n m t con s t h 10 sang h 16 thì tôi làm th nào? T i màn hình Calculator b n ch n Dec và gõ vào m t con s b t kì, ví d : 1111) ð chuy n sang h Hex b n ch vi c nh p ch n vào tùy ch n Hex t i c a màn hình c a Calculator, ngay l p t c s h 10 c a b n s đư c chuy n sang s h 16 m t cách chính xác. 3 Trên hình trên b n đã th y khi h 10 thì các ch cái t A – F đ u b disable. Kh b n ch n chuy n sang h hex thì các ch cái này s đư c enable lên đ ph c v cho các b n làm vi c h hex. Vi c chuy n đôi qua l i các h s khác cũng làm tương t như trên, qua đó b n th y công c này đã đơn gi n hóa cho chúng ta r t nhi u các công vi c liên quan đ n vi c chuy n đ i b ng tay.T t c nh ng gì b n ph i làm là gõ s và nh n ch n khà khà ☺. III. S có d u trong h 16 Ph n c ng c a máy tính c n gi i h n kích thư c c a các s đ có th lưu nó trong các thanh ghi hay các ô nh . Trong h hex v n đ s n y sinh khi chúng ta mu n bi u di n m t s âm ví d như -1 ch ng h n, chúng ta không th làm b ng cách thêm m t d u tr phía trư c con s gi ng như trong h 10 đư c.Vì n u làm th thì đơn gi n quá r i, đâu c n ph i đ c p đ n v n đ này làm gì và vì h th ng máy tính mà chúng ta đang s d ng ch làm vi c v i hai s 0 và 1 mà thôi, cho nên đ bi u di n m t s có d u ph i có qui đ nh khác. Do chúng ta đang làm vi c v i h th ng 32 bít cho nên d i s c a nó s đư c bi u di n h hex là t 00000000 – FFFFFFFF.D i này s đư c c t n a ra, m t n a dùng đ bi u di n s dương và m t n a dùng đ bi u di n s âm. V y s dương s b t đ u t 00000000 và k t thúc là 7FFFFFFF, còn s âm s b t đ u t 80000000 và k t thúc là FFFFFFFF. V y làm th nào đ nh n bi t đâu là s âm và đâu là s dương? Các b n hãy đ ý đ n m t bit đ c bi t, đó là bit n m t n cùng bên trái hay còn đư c g i v i m t cái tên khác là bit có tr ng s n ng nh t (MSB - Most significant bit). Tương t như v y ta cũng có m t bit có tr ng s th p nh t hay còn g i là bít nh nh t đó là s n m t n cùng bên ph i (LSB – Least Significant bit). N u như bit có tr ng s cao nh t là 0 thì s đó đư c hi u là s dương. Còn n u như bít có có tr ng s cao nh t là 1 thì s đư c đư c hi u là s âm. B ng 0 hay b ng 1 là khi chúng ta bi u di n s đó dư i d ng nh phân. Các s âm trong máy tính đư c lưu d ng s bù 2 (Note: s bù 2 có đư c b ng cách đ o bít c a m t s nguyên và c ng v i 1). Theo đó ta có đư c d i bi u di n như sau : S DƯƠNG : 00000000h h 16 – 0 h 10 00000001h h 16 – 1 h 10 4
DMCA.com Protection Status Copyright by webtailieu.net