c = pString[i];
if((c >= ‘a’) && (c <= ‘z’))
pString[i] = c-0x20;
//…end of loop
Các bạn thấy đó , mọi thứ đã sáng tỏ và dễ hiểu hơn rất nhiều. Bây giờ chúng ta đã bắt
đầu hiểu những gì đoạn code này đang làm. Chúng ta hãy sắp xếp lại chúng lại thành
đoạn code cuối cùng như sau :
void SomeFunction(char* pString)
{
int i; //Local variables have to be declared
unsigned char c; //at the start of the function.
for(i = 0; i < lstrlenA(pString); i++)
{
c = pString[i];
if((c >= ‘a’) && (c <= ‘z’))
pString[i] = c-0x20;
}
}
Cuối cùng chúng ta đã có được một đoạn code ngắn gọn hơn nhiều so với những gì chúng
ta đã đọc với ASM code.Nó đã được chuyển đổi hoàn toàn sang ngôn ngữ C, nhiệm vụ
của nó là lấy từng kí tự từ String đầu vào, và nếu kí tự đó nằm trong khoảng ‘a’ và ‘z’
(tức là các kí tự chữ cái thường) nó sẽ được trừ đi cho 0x20h. Mà phép trừ này biểu diễn
cho quá trình chúng ta chuyển
đổi nó từ chữ cái thường thành chữ cái hoa. Do đó chúng
ta sẽ đặt tên cho hàm này một cách gợi nhớ hơn là ToUpperCase .
V. Lời kết
Toàn bộ quá trình mà tôi và các bạn đã làm ở trên được gọi với cái tên : RE (Reverse
Engineering). Chúng ta thấy rằng nó không phải là một việc làm quá khó, nhưng nó đòi
hỏi một lòng kiên nhẫn và một kiến thức nền tảng vững chắc. Để chỉ khi ta chỉ nhìn lướt
qua đoạn code ta có thể hiểu ngay được nó làm gì. Có một công cụ giúp chúng ta đơn
giản hóa công việc đi rất nhiều, một trong số đ
ó chính là IDA mà tôi đã giới thiệu với anh
em.Hi vọng bài viết này của tôi sẽ phần nào giúp mọi người hiểu được quá trình phân tích
một đoạn code như thế nào, chỉ có một lời khuyên duy nhất đó là các bạn hãy thực hành
thật nhiều mới có thể đạt được những điều mình mong muốn. Qua đây tôi cũng xin cảm
ơn tác giả Webbit đã cho chúng ta một bài viết rất hay và bổ ích.
Thời gian trôi đi rất nhanh
Vì sao ta cứ mãi đứng yên
Ngoài kia bóng tối đang dần buông
Lại một ngày nữa sắp qua mất rồi.
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 J
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 J
>>>> If you have any suggestions, comments or corrections email me:
kienbigmummy[at]gmail.com
Appendix A1 :
Appendix A2 :
Appendix A3 :
I. Introduction:
Về phương pháp Unpack Armadillo 4.xxthì loạt Tut của anh Hacnho đã chỉ dẫn rất
cặn kẽ. Nhưng để thành công thì bạn cần có sự kiên nhẫn và lòng đam mê. Hôm
nay, Em xin giới thiệu các tool có sẵn để Unpack nhanh các Soft pack bằng
Armadillo mà ko cần phải OllyDBG với nhiều câu lệnh phức tạp mà vẫn thành
công. Tut này viết giành riêng cho Newbie nên mấy đại ca Try Arma bỏ qua hen!!
Hiện nay, chúng ta tạm có 2 tool hỗ trợ Unpack Armadillo đó là:
ArmaDumper 1.0 by Avatar:
tool này hỗ trợ unpack dạng Standard Protection+ Code Splicing+ IAT
Elimination lâu lâu còn luộc được Debug blocker Nhưng với Copy Mem IIthì bó
tay hoàn toàn
ArmadilloDumpers by Deroko:
Còn Tool này thì Đã lém các Bác xem:
Debug Blocker and Copy Mem II dumpers
dumper1.exe - Debug Blocker oep locator and import fixer
dumper2.exe - Copy Mem II dumper and import fixer
If you have codesplices or Eliminated IAT use ArmInline to fix em.
Both dumpers are console applications.
usage:
dumper1 progy.exe
dumper2 progy.exe
II. Tools:
· Tool cần dùng
§ Armadillo FindProtected V1.2
§ ArmadilloDumpers by deroko
§ ImportREC 1.6
§ ArmInline v0.95
§ PEiD 0.94
§ CFF Explorer IV
§ OllyDGB 1.1
· Target:
Ace Utilitie 3.0 (Standard Protection)
hxxp://www.acelogix.com/
Automation Anywhere 2.52 (CopyMemII + Debugblocker+ Nanomites)
hxxp://www.tethyssolutions.com/
III. Unpacking:
#TUT1: Sử dụng ArmaDumper 1.0 by Avatar
_ Đầu tiên chúng ta sử em Ace Utilitie 3.0. Dùng PEiD 0.94 quét coi Soft có bị pack hay
ko và pack loại nào?
_Như vậy là ta đã xác định được Soft được Pack bằng Armadillo. Để biết chính xác trong
File Pack có tùy chọn Standard Protectionhay CopyMemII + Debugblocker…để biết
đường mà unpack thì chúng ta dùng Armadillo FindProtected V1.3
_Hehe dạy là Cu này chỉ cóStandard Protection. Nói thêm, Tool này còn có khả năng
Detach Debugblocker (nếu có) gi
ống ArmaDetach 1.1.
_Giờ thì chạy ArmaDumper 1.0 và chọn như hình dưới
_ và chọn file “au.exe”
_Haha…ArmaDumper đã xử lý dùm ta công việc nhàm chán là Patch Magic Jump để
có bản IAT Full.
_Giờ thì mở thêm ImportREC, chọn PID cho chính xác và điền OEP=0007BFBA,
Nhấn IAT AutoSearch
_ nhấn Get Imports à Show Valid
_Nhấn Chuột phải chọn như hình
_Nhấn Fix Dump chọn File “Unpacked.exe” và chạy thử File” Unpacked_.exe”
_Hehe, dạy là sao… ta cần nhớ dòng thông báo này …huhu Load File Unpacked_.exe
vào Olly và ta dừng ở đây
_Nhấp chuột phải chọn như hình dưới
_Tìm chuỗi “ Is the Program protected” và chúng ta ở đây
_Nhấp đôi vào dòng đó ta tới đây:
_Nhìn lên trên có 1 lệnh nhảy và ta patch nó như sau:
_Save File và đặt tên là Fix_unpacked.exe