Tại đây các bạn nhấn F7 or F8 một lần duy nhất. Các bạn hãy để ý rằng giá trị của các thanh ghi lúc này đã được đẩy vào Stack Đó là do kết quả của việc chúng ta cho thực thi câu lệnh PUSHAD như trên hình. Câu lệnh PUSHAD này sẽ đẩy giá trị của các thanh ghi vào Stack theo thứ tự tương ứng của chúng. Tức là EAX sẽ được đẩy vào trước , sau đó đến ECX tiếp tục như thế cho tới thanh ghi EDI. Những gì mà chúng ta phải làm tiếp theo là tìm ra vị trí mà các thanh ghi này được khôi phục bởi vì từ đó chúng ta sẽ tìm ra được đâu là OEP của chương trình . Chúng ta biết rằng khi có một lệnh PUSH thì chắc chắn ở đâu đó sẽ có một lệnh POP, mà cụ thể bây giờ phải là POPAD. Hàm này sẽ thực hiện việc lấy tất cả giá trị của các thanh ghi đã được khởi tạo ban đầu ra khỏi Stack và đưa trở về đúng với từng thanh ghi một. Bạn đã biết cơ chế mà các thanh ghi được đẩy vào Stack thông qua lệnh PUSH thì không lí do gì mà không thể suy luận ra được cơ chế mà các thanh ghi sẽ được lấy ra thông qua lệnh POP. EDI là thanh ghi cuối cùng và cũng sẽ là thanh ghi được lấy ra giá trị đầu tiên từ Stack.Chúng ta cũng biết được vị trí của EDI trên Stack thông qua thanh ghi ESP, vì ESP trỏ tới đỉnh của Stack (chi tiết hơn các bạn hãy đọc lại tut của Gabri3l). Oki , như trên đã nói sau khi các bạn nhấn F7 or F8 1 lần duy nhất. Bây giờ các bạn hãy chuyển qua cửa sổ REGISTER (FPU) , các bạn để ý thấy rằng lúc này thanh ghi này đã chuyển sang màu đỏ. Click chuột phải trên thanh ghi ESP và chọn Follow in Dump.Bạn sẽ thấy cửa sổ Dump window của chúng ta ở tại vị trí 0012FFA4. Tại cửa sổ Dump window, chúng ta chọn 4 bytes đầu tiên và chọn Break Point > Hardware on access > Dword. Những gì chúng ta vừa làm là thiếp đặt một BP buộc Olly phải dừng lại khi 4 bytes đầu tiên (EDI) được truy nhập. Lý do mà chúng ta chọn Dword là vì chúng ta đã chọn 4 bytes mà 2 bytes là một Word và do đó 2 Words là một Dword (Double Word). Oki chúng ta vừa thiết lập một điểm dừng khi mà EDI được POPed ra khỏi Stack. Tiếp theo chúng ta nhấn F9 để Run chương trình.Tôi giả sử rằng các bạn đã làm đúng những gì mà tôi đã trình bày ở trên. Nếu như các bạn thực hiện đúng thì sau khi nhấn F9 , trong Olly chúng ta sẽ dừng lại tại câu lệnh 006493B0 /75 08 JNZ SHORT splitter.006493BA . Dịch lên một chút các bạn sẽ thấy ngay phía trên câu lệnh JNZ chính là câu lệnh POPAD mà chúng ta cần. Bây giờ chúng ta vẫn chưa ở tại OEP. Lí do là chương trình Packer cần phải thoát khỏi quá trình decryption. Các bạn nhấn F7 or F8 2 lần , các bạn sẽ thấy rằng chương trình sẽ PUSH một địa chỉ vào trong Stack và sau đó ngay lập tức sẽ follow theo địa chỉ này thông qua câu lệnh RETN. Vậy thì địa chỉ mà trong câu lệnh PUSH đó chính là OEP mà chúng ta cần tìm và sau đó chương trình sẽ thực hiện lệnh RETN để đưa chúng ta đến OEP : Oki chúng ta đang ở tại câu lệnh RETN , giờ nhấn F7 or F8một lần nữa để thực thi câu lệnh RETN và chúng ta ở tại OEP : ). Khà khà vậy là chương trình của chúng ta đã được Unpack vào trong bộ nhớ và chúng ta thì đang ở tại Entry Point của chương trình. Tiếp theo chúng ta sẽ tiến hành Dump file đã được unpacked từ bộ nhớ. Tại OEP của chúng ta, nhấn chuột phải và chọn Dump Debugged Process. Cửa sổ OllyDump sẽ hiện ra cho phép chúng ta tiến hành Dump File : Nhấn Dump, và lưu dưới một cái tên tùy thích. Ở đây tôi chọn là SlpitterDump.exe và nhấn Save để lưu lại. Bây giớ chúng ta đã có file được unpacked nhưng vấn đề là ở chỗ file này chưa Run được . Nếu chúng ta cố tình Run file thì nó sẽ bị Crash ngay. Công việc mà chúng ta phải làm tiếp theo là sử dụng chương trình ImportREC để lấy thông tin về IAT từ chương trình gốc và sau đó Attach IAT này vào file Dumped của chúng ta. Oki , giữ nguyên cửa sổ Olly, giờ chúng ta Open ImportRec lên và chọn Splitter Process : ImportREC cần phải biết được nó sẽ phải tìm IAT ở đâu. Như đã nói ở trước chúng ta phải ghi nhớ giá trị OEP tìm được và bây giờ là lúc mà chúng ta sử dụng đến nó. Bạn nhập OEP vào text box OEP , nhấn IAT AutoSearch. ImportREC sẽ thông báo cho ta biết nó đã tìm thấy những gì nó cần. Nhấn Ok, sau đó chọn Get Imports và đợi chương trình đưa ra danh sách các hàm được Imported : . hiện đúng thì sau khi nhấn F9 , trong Olly chúng ta sẽ dừng lại tại câu lệnh 00 6493B0 /75 08 JNZ SHORT splitter .00 6493BA . Dịch lên một chút các bạn sẽ thấy ngay phía trên câu lệnh JNZ chính. thanh ghi ESP và chọn Follow in Dump.Bạn sẽ thấy cửa sổ Dump window của chúng ta ở tại vị trí 0 012 FFA4. Tại cửa sổ Dump window, chúng ta chọn 4 bytes đầu tiên và chọn Break Point >. hơn các bạn hãy đọc lại tut của Gabri3l). Oki , như trên đã nói sau khi các bạn nhấn F7 or F8 1 lần duy nhất. Bây giờ các bạn hãy chuyển qua cửa sổ REGISTER (FPU) , các bạn để ý thấy rằng lúc