Rồi các bạn nhìn xuống một chút, chúng ta sẽ thấy 00416245 JMP EDI, Hãy đến 00416245, àh các bạn nên đặt Hardware breakpoints executation (đừng nên đặt F2 tại địa chỉ trên), và nhớ xóa các breakpoints khi mà trace xong, ta sẽ đến đoạn mã sau: Các bác nên F8 từng cái thì mới có được hình dạng như trên. Ta ngưng ở 00378353: JMP 0040400F lệnh nhảy tới FALSE OEP Ừm F7, ta tới đây: Nếu có ai đó chưa hiện đúng như vậy thì hãy dùng chức năng plugin Analyze this! Của OLLY. OEP thì tại 00404000, những chỉ lệnh trên là những junk code, Chúng sẽ làm rối mù chúng ta. Bây giờ ta tiến hành DUMP. (trong crackme này thì crackme vẫn làm việc tốt). 3. IMPORTS Các bạn hãy tìm chuỗi nhị phân sau: FF 25, rồi chọn đại một lệnh nhảy, Enter, các bạn sẽ thây như sau: Các lệnh nhảy lúc này sẽ nhảy đến những thủ tục của Obsidium.Ở đó, Obsidium không dùng hàm GetProcAddress mà thay vào đó, những imports được lưu trữ như: - dll image base (handle), - some flag (FFFFFFFF is good one), - import code (which is 2,4,1,80, or 40), - first character of import, - CRC32 hash. Obsidium sẽ lấy thông tin mà chương trình cần dùng dll, sau đó nó sẽ dùng một vài kỹ thuật kiểm tra bên trong (đây có phải là import cần hay không,…), sau đó nó sẽ tìm kiếm trong export Dll mà ký hiệu đầu tiên sẽ phù hợp với một cái gì đó trong bảng “obsidium import info", sau đó nó sẽ tìm kiếm cho cái import đó dựa vào CRC32 hash bằng với một giá trị trong bảng này. Giờ thì xem ví dụ của chúng ta: Ta hãy xem phân tích sau: 003E00B4 60 PUSHAD 003E00B5 66:BE 25A2 MOV SI,0A225 < Đây là 2giá trị mà chứa thông 003E00B9 B7 67 MOV BH,67 < / tin về Dll 003E00BB -E9 695389FF JMP 00395429 Sau đó, ta enter vào địa chỉ 003E00BB: Xem: 00375467 CMP DWORD PTR DS[EDI+EAX+4] kiểm tra, nếu là DLL được load, giá trị là FFFFFFFF. Tôi gọi đây là [1] 00375477 MOVZX EAX,WORD PTR DS:[ESI] < Nó sẽ lấy từ bảng “import code” (2,4,1,80,40) [2] 003754AA CALL DWORD PTR DS:[EBX+50] < Nếu "import code" is 2, nó tìm kiếm import đó ở đây. TEST EAX,EAX < [3] EAX sẽ là API value. [3] Hầu hết các import thì ở trong “code 2” loại. Tôi đã dùng script để chỉnh sửa imports. Đầu tiên, ta xem xét bảng Imports trong file gốc : Giờ thì ta tiến hành fix Imports bằng tay heng. Đặt “New Origin here” tại vị trí đầu tiên 003E0000, sau đó F7 đến 003E0007 Jmp 00375421 Rồi F7 tới 00375421, rồi đặt điểm ngắt tại 3 vị trí [1], [2],[3]: Ta shift+F9, dừng tại 003754AD TEST EAX,EAX để xem API, rồi điền vào bảng IAT,lần lượt như sau: . phân tích sau: 00 3E00B4 60 PUSHAD 00 3E00B5 66:BE 25A2 MOV SI,0A225 < Đây là 2giá trị mà chứa thông 00 3E00B9 B7 67 MOV BH,67 < / tin về Dll 00 3E00BB -E9 695389FF JMP 00 395429 Sau đó,. here” tại vị trí đầu tiên 00 3E 000 0, sau đó F7 đến 00 3E 000 7 Jmp 00 3754 21 Rồi F7 tới 00 3754 21, rồi đặt điểm ngắt tại 3 vị trí [1] , [2],[3]: Ta shift+F9, dừng tại 00 3754AD TEST EAX,EAX để xem. ở 00 378353: JMP 00 404 00F lệnh nhảy tới FALSE OEP Ừm F7, ta tới đây: Nếu có ai đó chưa hiện đúng như vậy thì hãy dùng chức năng plugin Analyze this! Của OLLY. OEP thì tại 00 404 000 , những