Nếu như Reference là một lời gọi CALL thì trong IDA nó sẽ được thể hiện như sau : Một trong những tính năng tuyệt vời khác của IDA đó chính là việc thể hiện các biến được dùng trong chươ
Trang 1Vậy là 0x0040131A = 0x004012F1 + 0x29
1 Lệnh nhảy này được nằm tại CODE section
Nếu như Reference là một lời gọi (CALL) thì trong IDA nó sẽ được thể hiện như
sau :
Một trong những tính năng tuyệt vời khác của IDA đó chính là việc thể hiện các
biến được dùng trong chương trình.Thậm chỉ bạn có thể nhấn đúp chuột vào chúng
để đi tới địa chỉ nơi mà các biến được lưu trữ : Lea edi, [esp + 1B8h + var_104]
Một trong những tính năng khiến cho IDA trở thành một công cũ rất mạnh đó
chính là việc sử dụng Flirt Signatures Giải thích một cách đơn giản nhất đó là
trong quá trình disassembly IDA cố gắng nhận diện chính xác các hàm thư viện có liên quan với trình biên dịch Ví dụ :
Trang 2Wow các bạn có nhận thấy sự khác biệt không? Riêng tôi thì IDA quả là tuyệt, nó
nói cho ta tất cả mọi thứ, rõ ràng như ban ngày
Trang 3Một số tính năng khác tương tự với W32Dasm đó là “Goto code location” thì trong
IDA là “Jump-Jump to Address” Hay “Goto entrypoint” thì trong IDA sẽ là “Jump
– Jump to entry point”
Đó là một số tính năng quan trọng nhất khi chúng ta bắt đầu con đường chinh phục
IDA Ah tôi quên mất, trong IDA còn một tính năng khá thú vị nữa đó chính là
thỉnh thoảng chúng ta thấy có rất nhiều đoạn như sau ‘db’ mà lại không thấy có
các String References, nhưng đó lại chính là những đoạn code Chỉ việc trỏ chuột
vào và nhấn phím tắt C trên bàn phím, ngay lập tức IDA sẽ chuyển nó thành code
Ví dụ như sau :
Còn lý do tại sao chắc tôi sẽ viết một bài về việc làm thế nào để hiểu một đoạn
code có ý nghĩa gì.Đến đây coi như là kết thúc quá trình tôi cùng các bạn tìm hiểu
một số tính năng của IDA Sau khi bạn đọc bài viết này của tôi có thể bạn sẽ đặt
cho mình một câu hỏi “Liệu tôi có nên tiếp tục sử dụng W32Dasm nữa không”,
câu trả lời nằm ở chính bạn.Còn riêng với cá nhân tôi, tôi sẽ vẫn giữ lại W32Dasm
vì trong một số trường hợp đơn giản nó vẫn rất có ích
Trang 4III Lời kết
Vậy là tut này đến đây là kết thúc, 7 trang giấy trong bài viết này không thể nói hết được những tính năng rất mạnh của IDA Chỉ có thực sự bắt tay vào công việc chúng ta mới thấy được, mới tìm hiểu được những tính năng rất mạnh của nó
Không lý do gì mà IDA lại được giới Reverser cũng như giới Security yêu thích đến thế, chắc chắn nó sẽ có nhiều điều thú vị nữa khiến cho mọi người đều đam mê Bài viết này của tôi chỉ là một phần nhỏ giới thiệu về IDA, hi vọng nó đã mang đến cho các bạn một cái nhìn khác về chương trình Disassembly rất mạnh này.Rất cảm
ơn anh em đã dành thời gian đọc nó
PS : Hi vọng anh TQN, Thug và light.phoenix có thời gian viết vài bài cho anh
em mở rộng tầm mắt
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
++ ==[ Special Thanks To ]== ++
- coruso_trac, pat, trm_tr Thug4lif3, vn_blackrain, v v and all brothers in VSEC
++ ==[ 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
>>>> If you have any suggestions, comments or corrections email me:
kienbigmummy[at]gmail.com
Understanding Code
Author: _[kienmanowar]_
“Cuộc sống luôn đầy cám dỗ
Trang 5Ngày ngày níu kéo con người
Làm sao thắng được chính mình Làm sao
Ngựa non lớn lên thường háu đá
Tuổi trẻ nào suy tính gì
Nên đi tới con đường bế tắc
Chìm sâu trong bóng tối”
I Intro :
Chào tất cả anh em REA, chúng ta lại gặp nhau trong bài viết này của tôi viết về
“Understanding Code” Đây là bài viết của tác giả Kwazy Webbit, đề cập tới
vấn đề đọc hiểu code của các chương trình được Disassembly bằng W32Dasm, IDA v v Tại sao tôi lại chọn nó là chủ đề cho bài viết thứ 3 này bởi vì một lý do hết sức đơn giản, có đọc hiểu code chúng ta mới biết được chương trình đang làm
gì, đoạn code mà chúng ta đang RE được dùng vào mục đích gì, đề từ đó có những thay đổi chỉnh sửa sao cho hợp lý để phục vụ mục đích của chúng ta Hầu hết những anh em tôi quen biết đến với RE, Cracking theo những cách thức khác nhau,
có người muốn chỉ trong một thời gian ngắn có thể Crack được một phần mềm mà không cần tìm hiểu xem tại sao lại làm như thế, nhiều người chỉ thực hiện theo các tut một cách dập khuôn, ăn sẵn để rồi cuối cùng vẫn luẩn quẩn với những câu hỏi
“Tại sao lại làm như thế ?” , “Tại sao tôi làm thế không được ?” v…v… mà không hề có một chút đầu tư nghiên cứu tìm hiểu, nhưng ngược lại có những người
đi từ những viên gạch đầu tiên, từ từ từng bước một, những viên gạch của quá trình lạo động tìm hiểu nghiêm túc, tốn nhiều mồ hôi, nước mắt để rồi bù lại họ có được những kiến thức làm tôi kinh ngạc.Có những người còn rất trẻ và những người lớn tuổi hơn tôi, có người chuyên về IT và cũng có người không Nhưng những người
đó đã để lại cho tôi lòng khâm phục bởi tinh thần làm việc nghiêm túc, lòng đam
mê, sự chia sẻ kiến thức tới cộng đồng không hề vụ lợi
Việc chúng ta tìm hiểu xem một đoạn binary biểu diễn ý nghĩa gì là một công việc quan trọng.Các đoạn mã thực thi và dữ liệu được biểu diễn ở mức thấp nhất đó là tập hợp của các bit 0 và 1.Bạn có thể cố gắng cho thực thi một đoạn dữ liệu như một đoạn mã, nhưng hầu hết trong các trường hợp việc làm này sẽ dẫn đến
crash.Lấy ví dụ, việc cố gắng để sử dụng một đoạn mã thực thi như là một Picture data cũng sẽ là không hợp lệ hoặc ngược lại, nhưng đó chỉ là một sự ngẫu nhiên nào đó mà thôi Đó là bởi vì có một cấu trúc để biểu diễn chúng khiến cho chúng không chỉ đơn thuần là binary mà còn bao hàm nhiều ý nghĩa khác Để giúp ích cho bạn, bạn cần phải tìm hiểu về cấu trúc này và từ đó sẽ diễn dịch được nó theo đúng cách
Trang 6Để cụ thể hơn, tôi sẽ lấy một ví dụ, chẳng hạn tôi có 4 con số như sau :
112, 43, 149, 184
Như các bạn thấy chúng có thể mang rất nhiều ý nghĩa Nếu như tôi nói với bạn rằng đây là ví dụ về một đường thẳng, và hãy tưởng tượng rằng đây là một đường
thẳng 2 chiều, bắt đầu tại tọa độ thứ nhất là (112, 43) và kết thúc tại tọa độ thứ hai
là (149, 184) Tuy nhiên nếu như có ai đó lại nói với bạn là đây chính là một hình
vuông, liệu bạn có tin không? Tôi thì tin liền khà khà bởi vì đơn giản tôi nghĩ đây
là một hình vuông với 4 các tọa độ của nó Như các bạn thấy, 4 con số trên có rất nhiều ý nghĩa đúng không, tất cả chúng đều phụ thuộc vào sự suy diễn của bạn và tôi Điều này sẽ dẫn đến nhiều vấn đề, làm sao chúng ta