banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thủ thuật reverse engineering Cần giúp đỡ về PE Header !  XML
  [Question]   Cần giúp đỡ về PE Header ! 12/08/2012 14:35:26 (+0700) | #1 | 268332
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Chào các anh/chị của HVAOnline, em là một mem mới của forum, em có một số vướng mắc nho nhỏ về cấu trúc PE rất cần anh/chị giúp đỡ.
Em có 1 file exe game (đã được unpack), em Việt hóa nó bằng Hex Editor (Vì Resource Hacker, Restorator hay PE Explorer đều không thấy được các text cần Việt hóa) khi độ dài chuỗi ký tự Việt hóa = độ dài chuỗi ký tự tiếng Anh gốc => game vẫn chạy và hiển thị tiếng Việt tốt. Nhưng nếu chuỗi ký tự Việt hóa dài hơn chuỗi ký tự tiếng Anh gốc 1 hoặc vài ký tự thì khi save lại: size của file tăng lên và không chạy được nữa. Em cũng đã tìm hiểu một chút về PE Header và biết em đang Việt hóa các text thuộc section .rsrc. Vậy anh/chị cho em hỏi: em insert thêm ký tự vào file như vậy có làm đảo lộn trật tự các thành phần khác trong section đó không? Có thể biên dịch lại file này để nó nhận thêm các ký tự mới thêm kia không? Và nếu biên dịch được thì file còn hoạt động được chính xác không? Mong anh/chị giải đáp giúp em nhé, hoặc chỉ cần trả lời có hoặc không thôi cũng được, để em tự tìm hiểu ^^. Em xin cảm ơn.
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 15/08/2012 15:28:36 (+0700) | #2 | 268444
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]
Bạn add thêm như thế sẽ bị lỗi đấy. Để thay đổi string mà dài hơn chuỗi gốc bạn cần làm như sau:
1. Hoặc là tìm một vùng trong section toàn byte 00 có thể đảm bảo nó ko bao giờ dùng tới để ghi chuỗi của bạn vào, hoặc là add thêm 1 section data mới để ghi vào.
2. Thay đổi address của chuỗi gốc đến chuỗi của bạn.

Chúc bạn may mắn. smilie
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 16/08/2012 14:50:47 (+0700) | #3 | 268476
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]

xwhitelight wrote:
Bạn add thêm như thế sẽ bị lỗi đấy. Để thay đổi string mà dài hơn chuỗi gốc bạn cần làm như sau:
1. Hoặc là tìm một vùng trong section toàn byte 00 có thể đảm bảo nó ko bao giờ dùng tới để ghi chuỗi của bạn vào, hoặc là add thêm 1 section data mới để ghi vào.
2. Thay đổi address của chuỗi gốc đến chuỗi của bạn.

Chúc bạn may mắn. smilie  


Rất cảm ơn anh đã trả lời giúp em. smilie
Cho em hỏi phần thay đổi address (offset) của chuỗi nằm ở đâu vậy anh ? Em thử dùng các tool như PE Explorer hay CFF Explorer nhưng đều không thấy chức năng này ?
P/s: có phải là dùng Olly Debug không anh ? smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 17/08/2012 16:00:25 (+0700) | #4 | 268503
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]

ttlove wrote:

xwhitelight wrote:
Bạn add thêm như thế sẽ bị lỗi đấy. Để thay đổi string mà dài hơn chuỗi gốc bạn cần làm như sau:
1. Hoặc là tìm một vùng trong section toàn byte 00 có thể đảm bảo nó ko bao giờ dùng tới để ghi chuỗi của bạn vào, hoặc là add thêm 1 section data mới để ghi vào.
2. Thay đổi address của chuỗi gốc đến chuỗi của bạn.

Chúc bạn may mắn. smilie  


Rất cảm ơn anh đã trả lời giúp em. smilie
Cho em hỏi phần thay đổi address (offset) của chuỗi nằm ở đâu vậy anh ? Em thử dùng các tool như PE Explorer hay CFF Explorer nhưng đều không thấy chức năng này ?
P/s: có phải là dùng Olly Debug không anh ? smilie 

Có lẽ là mình đã nhầm. Nếu như chuỗi được chứa trong resource (bạn đã dùng Resource Hacker để sửa đổi) thì đơn giản hơn nhiều. Bạn hãy dùng Resource Hacker để sửa chuỗi đó thành một chuỗi dài hơn bằng tiếng Anh mà có độ dài bằng chuỗi tiếng Việt bạn cần sửa lại, sau đó lại dùng Hex Editor để sửa lại như bình thường thôi. smilie
Nhưng hình như nếu resource đã chứa được unicode thì chắc là Resource Hacker cũng sửa thẳng luôn được đấy. Bạn thử dùng bảng mã Unicode tổ hợp để gõ rồi compile xem sao. smilie
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 17/08/2012 17:22:36 (+0700) | #5 | 268510
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]

xwhitelight wrote:
Có lẽ là mình đã nhầm. Nếu như chuỗi được chứa trong resource (bạn đã dùng Resource Hacker để sửa đổi) thì đơn giản hơn nhiều. Bạn hãy dùng Resource Hacker để sửa chuỗi đó thành một chuỗi dài hơn bằng tiếng Anh mà có độ dài bằng chuỗi tiếng Việt bạn cần sửa lại, sau đó lại dùng Hex Editor để sửa lại như bình thường thôi. smilie
Nhưng hình như nếu resource đã chứa được unicode thì chắc là Resource Hacker cũng sửa thẳng luôn được đấy. Bạn thử dùng bảng mã Unicode tổ hợp để gõ rồi compile xem sao. smilie 


Ồ, nhưng vấn đề là các tool edit resource lại không thấy được các chuỗi này để mà edit anh ạ, em có trình bày ở đầu topic rồi mà smilie
Có một topic khác gần tương tự như topic này của em, và có một anh đã đưa ra một phương pháp rất giống của anh:
/hvaonline/posts/list/41672.html
Còn đây là file game cần Việt hóa của em (nó chỉ chạy bằng command ^^)
http://www.mediafire.com/?3xffdxnpka5fd1k
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 17/08/2012 17:38:42 (+0700) | #6 | 268512
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
À như vậy cho dễ đi. Nếu anh có thể quay cho em 1 video hướng dẫn edit chữ "TCVN3 (ABC)" của phần mềm Unikey 4.0 RC2 thành chữ "TC Viet Nam 3 (ABC)" như trong hình này:


(Chỉ được edit bằng hex, không được edit trực tiếp bằng các tool edit resource như: Resource Hacker, Restorator, PE Explorer hay ExeScope)
Em sẽ tặng cho anh 1 thẻ nạp di động 50k (mạng tùy ý smilie) coi như để cảm ơn anh. Nếu anh đồng ý, anh pm số mobile: 0982523821 cho em nhé.
Em đang rất cần và vô cùng biết ơn nếu anh giúp đỡ smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 10:15:27 (+0700) | #7 | 268529
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]

ttlove wrote:
À như vậy cho dễ đi. Nếu anh có thể quay cho em 1 video hướng dẫn edit chữ "TCVN3 (ABC)" của phần mềm Unikey 4.0 RC2 thành chữ "TC Viet Nam 3 (ABC)" như trong hình này:


(Chỉ được edit bằng hex, không được edit trực tiếp bằng các tool edit resource như: Resource Hacker, Restorator, PE Explorer hay ExeScope)
Em sẽ tặng cho anh 1 thẻ nạp di động 50k (mạng tùy ý smilie) coi như để cảm ơn anh. Nếu anh đồng ý, anh pm số mobile: 0982523821 cho em nhé.
Em đang rất cần và vô cùng biết ơn nếu anh giúp đỡ smilie 

Cái này sửa bằng Resource Hacker bạn à. Ở mục Menu, item 40057, bạn tự sửa lại đi nhé. Còn tiền nong khỏi cần, ở các diễn đàn bạn ko cần phải thế đâu. smilie
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 15:47:40 (+0700) | #8 | 268534
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Ôi trời! anh hiểu nhầm ý em rồi, anh không đọc dòng chữ em “mở ngoặc” dưới hình à ? smilie
Ý em muốn nói là anh có thể hướng dẫn em sửa dòng chữ đó bằng hex không? (để từ đó em áp dụng vào việc Việt hóa game của em), chứ edit bằng Resource Hacker thì dễ quá rồi, cái hình Unikey bên trên là do chính em edit và upload mà. smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 16:09:35 (+0700) | #9 | 268535
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Nói cho ngắn gọn và dễ hiểu, vấn đề của em là: khi edit 1 file exe bằng mã hex, làm sao để sửa 1 chuỗi ký tự có sẵn thành 1 chuỗi ký tự dài hơn mà không làm lỗi file exe đó. Xin nhắc lại là vấn đề này đối với em có ý nghĩa rất quan trọng, em chấp nhận đánh đổi tất cả vì nó. Nên anh hoặc ai đó có thể giúp được em thì em xin chân thành cảm ơn và hậu tạ.
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 16:53:43 (+0700) | #10 | 268536
TQN
Elite Member

[Minus]    0    [Plus]
Joined: 29/06/2006 22:28:01
Messages: 888
Location: Biết làm chi ?
Offline
[Profile] [PM] [WWW] [Yahoo!]
Không phải cái gì cũng edit = Hex Editor được. Tuỳ cái, tuỳ trường hợp.
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 18:07:54 (+0700) | #11 | 268537
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]

TQN wrote:
Không phải cái gì cũng edit = Hex Editor được. Tuỳ cái, tuỳ trường hợp.
 


A chào anh TQN, thành viên năng nổ nhất của HVA smilie
Anh giúp em vụ này với, file exe game của em Việt hoá được thế này rồi:


Chỉ còn mấy từ tiếng Anh bên dưới dịch ra tiếng Việt thì dài quá, Việt hoá là bị lỗi ngay (mà cái file này chỉ Việt hoá được bằng hex thôi mới đau chứ smilie)
http://www.mediafire.com/?3xffdxnpka5fd1k
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 19:48:32 (+0700) | #12 | 268539
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]

ttlove wrote:
Ôi trời! anh hiểu nhầm ý em rồi, anh không đọc dòng chữ em “mở ngoặc” dưới hình à ? smilie
Ý em muốn nói là anh có thể hướng dẫn em sửa dòng chữ đó bằng hex không? (để từ đó em áp dụng vào việc Việt hóa game của em), chứ edit bằng Resource Hacker thì dễ quá rồi, cái hình Unikey bên trên là do chính em edit và upload mà. smilie 

À, ra vậy. Nhưng đúng như anh TQN nói, nếu đã có thể sửa bằng Resource Hacker thì sửa bằng Hex rất khó (tất nhiên là được nhưng phải hiểu cấu trúc section resource và thực hiện cũng rất lâu).
Nhưng thật sự mình không biết các chuỗi đó nằm ở đâu trong file mà bạn post khi mình đã dùng Hex Editor để tìm kiếm và ko có kết quả cho cả mã ASCII lẫn Unicode. smilie
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 18/08/2012 20:49:22 (+0700) | #13 | 268541
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Để search thấy các chuỗi em đã Việt hóa, anh phải dùng WinXP (đã thiết lập môi trường tiếng Việt) open file này trong Hex Editor và search string với bảng mã Vietnamese locale CP 1258 của Unikey. Đây là file exe của game Ace Online (bên VTC Game gọi là Phi Đội)
Giúp em với các cao thủ ơi, ngoài HVA ra em chẳng còn nơi nào để cầu cứu nữa. smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 19/08/2012 02:18:45 (+0700) | #14 | 268548
acoustics89
Member

[Minus]    0    [Plus]
Joined: 08/07/2011 10:17:19
Messages: 50
Offline
[Profile] [PM]
Nếu 1 xâu được cất trong resource, bạn dùng Resource hacker hoặc mấy tool edit resource là ổn. Với trường hợp xâu được lập trình viên để trong code, mình nghĩ bạn cần 1 disassembler , ví dụ như IDA. Mở file Exe bằng IDA, bạn nhấn Shift F12 để nó tìm tất cả các String của file, có thể nếu IDA không phân tích được đầy đủ file, bạn phải tìm các xâu này bằng tay. Nhưng như thế là nhanh hơn cách bạn làm rất nhiều.

Có nhiều yếu tố khiến cho cách việt hoá của bạn không thành công:
Các tác giả không build ở chế độ Unicode -- kiểu này thì khỏi cần việt hoá, vì không làm được.
Tiếng Anh ngắn gọn và xúc tích hơn tiếng Việt ví dụ như từ time (4 kí tự ) dịch ra tiếng Việt là "thời gian" (9 kí tư). Bạn không thể để 9 kí tự vào ô nhớ của 4 kí tự được. Trừ khi ăn may, gặp cavity, còn về lý thuyết, bạn phải tạo thêm 1 section nữa hoặc nới rộng section cuối, viết các xâu tiếng Việt vào đó và sửa địa chỉ con trỏ ở tất cả các vị trí trong file trỏ tới xâu tiếng Việt. Để tìm nhanh vị trí cần sửa, có thể phải dùng IDA hoặc Olly Dbg. Số vị trí cần sửa có thể là 1, 2 chỗ hoặc rất nhiều.

Ngoài ra, để sửa địa chỉ chính xác, bạn cần xem section đó có được relocation khi load lên bộ nhớ không. Bạn cũng nên tìm hiểu thêm về ASLR, để tránh sửa nhầm địa chỉ, khiến file bị lỗi.

Như mình đã trình bày, công việc sửa thế này cực kì vất vả và khó khăn. Cách dễ nhất là email yêu cầu tác giả build 1 bản cho tiếng Việt. Nhưng xem ra cách này lại vướng khó khăn kiểu khác, bạn nhỉ?
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 19/08/2012 11:31:04 (+0700) | #15 | 268554
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Vâng, đúng là các text của file này bị trộn vào code và chỉ edit được bằng Hex Editor thôi anh ạ:




Và game này chỉ chấp nhận Việt hóa bằng bảng mã Vietnamese locale CP 1258 anh ạ, nếu dùng các bảng mã khác như: Unicode tổ hợp, Unicode dựng sẵn, VNI,v.v...là text Việt hóa hiển thị lỗi tùm lum.
Với các chuỗi Việt hóa có độ dài vừa phải, em phải dùng đến phương án "viết tắt" và tận dụng các bytes null (00) đằng sau chuỗi gốc. Nhưng với các chuỗi Việt hóa dài hơn nhiều lần so với chuỗi gốc thì em bó tay.
Nghe anh acoustics89 phân tích như vậy em thấy có vẻ "gian nan" lắm smilie, em thì chưa biết gì về RE cả. Anh nói là "trên lý thuyết thì như vậy" còn nếu áp dụng thực tế cho trường hợp của em liệu có thành công không anh ? Để em còn chuẩn bị "bông băng và thuốc đỏ" để bước vào con đường RE smilie
Game này là game có bản quyền do MasangSoft Korea phát hành anh ạ, VTC mua bản quyền game này và tất nhiên là họ có tool rebuild nên có thể Việt hóa dễ dàng, còn việc email đến nhân viên MasangSoft hay GM VTC Game em chỉ dám thực hiện "trong mơ" thôi anh à. smilie
P/s: à anh acoustics89 cho em hỏi 1 chút: tool OllyDebug chỉ có công dụng debug thôi chứ đâu có hỗ trợ save file lại sau khi chỉnh address hả anh ?
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 19/08/2012 13:31:13 (+0700) | #16 | 268555
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]
Đây là video mình đã sửa chuỗi "Quantity:" thành "So luong:" ko sử dụng hex editor:
http://www.mediafire.com/?agtlcug4ooh9voc
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 19/08/2012 14:14:36 (+0700) | #17 | 268558
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]

xwhitelight wrote:
Đây là video mình đã sửa chuỗi "Quantity:" thành "So luong:" ko sử dụng hex editor:
http://www.mediafire.com/?agtlcug4ooh9voc 


Đúng là tuổi trẻ tài cao, cảm ơn bạn, để tối về mình test, nếu thành công và game chạy ngon lành mình xin hậu tạ. smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 20/08/2012 10:27:57 (+0700) | #18 | 268569
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Kết quả tuyệt vời! cảm ơn bạn xwhitelight nhiều nhé smilie, khi nào bạn online pm mình ngay nhé smilie
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 20/08/2012 19:56:03 (+0700) | #19 | 268585
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]
Mình không tìm được địa chỉ một số string khi Goto Expression trong OllyDbg, xwhitelight xem và giải đáp giùm mình nhé. smilie
Download video:
http://www.mediafire.com/?tgq6n0smf4hat4j
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 25/08/2012 13:27:29 (+0700) | #20 | 268742
[Avatar]
xwhitelight
Member

[Minus]    0    [Plus]
Joined: 03/02/2011 01:39:33
Messages: 63
Location: HVA & REA
Offline
[Profile] [PM]

ttlove wrote:
Mình không tìm được địa chỉ một số string khi Goto Expression trong OllyDbg, xwhitelight xem và giải đáp giùm mình nhé. smilie
Download video:
http://www.mediafire.com/?tgq6n0smf4hat4j 

Anh đưa con trỏ xuống vùng Dump Window (ở phía dưới vùng Disassemble Window) rồi đi đến địa chỉ đó sẽ thấy.
Life in God Mode
[Up] [Print Copy]
  [Question]   Cần giúp đỡ về PE Header ! 25/08/2012 16:29:47 (+0700) | #21 | 268745
ttlove
Member

[Minus]    0    [Plus]
Joined: 10/08/2012 19:47:38
Messages: 16
Offline
[Profile] [PM]

xwhitelight wrote:

ttlove wrote:
Mình không tìm được địa chỉ một số string khi Goto Expression trong OllyDbg, xwhitelight xem và giải đáp giùm mình nhé. smilie
Download video:
http://www.mediafire.com/?tgq6n0smf4hat4j 

Anh đưa con trỏ xuống vùng Dump Window (ở phía dưới vùng Disassemble Window) rồi đi đến địa chỉ đó sẽ thấy. 


Thanks ^^
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
2 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|