Trao đổi với tôi

http://www.buidao.com

10/14/10

[Reverse] Hướng dẫn viết hack game (game trainer) - Part 5

Chap 5 : Cheat mode
hôm nay ko rảnh rảnh nhưng vẫn ngồi viết tiếp phần mở đầu cho chap 5
I. Fix lại lỗi bị dis khi chơi :
khi chúng ta chơi pikachu, chúng ta thấy game bị dis mỗi khi bài hát hết, bực mình thật đó,
ko biết làm sao cả, tôi lại phân tích thế này
sau khi unpack và dùng reshack tôi phát hiện ra trong source dùng midi làm nhạc nền cho app, có 3 bài nhạc nền
vậy là đầu tiên chúng chơi 1 bài, sau đó đổi bài chơi bài tiếp
vậy là lỗi khi đổi bài,

xem tiếp source decompile 1 lúc, chưa thấm gì, dùng vbdecompiler 7.9 thì thấy nó decompiler ra cả source vb chứ ko phải là asm nữa,
tôi thì chưa từng học vb bao giờ cả
nhưng xem source vb này, sơ sơ tôi đánh giá được như này nè
ở trong vb5.0 nó có thể play midi mà ko cần đến việc quan tâm tạo ra 1 player như trong C++ mà chỉ việc bắt play music còn lại thì msvbvm quyết định,
sound play được nhúng vào từ wmmlib chỉ là để play các .wav thôi chứ lại ko play midi......
tớ thấy là thế, các vb coder sai ở đâu thì giúp tớ chỉ bảo tớ nhé. cám ơn các bạn

tớ bắt đầu tìm thêm code thấy là nó như này, nó dùng 1 sự kiện timer của form để bắt đầu đếm xem đã play được đến đâu rồi, nếu mà hết bài thì nó thực hiện đoạn mã đổi bài
vụ này được nằm hết trong sự kiện timer của main form
mở lại VB Decompiler Pro ta thấy được dòng như sau

PHP Code:
Private Sub Timer_PlayMidi_Timer() 4B30D0
rất gợi mở phải ko nào

Load pikachu với olldbg
chuột phải vào dòng go to -> Expression
nhập địa chỉ 4B30D0 để jump đển hàm đó
chà, hàm này dài quá, loằng ngoằng nữa, tôi cũng hơi gà, ko biết đoạn lệnh nào là chuyển đổi bài hát cả,
thôi mạo muội đổi đổi luôn cái hàm này thành hàm ko có gì
chỉ vào dòng có địa chỉ 4B30D0, ấn space 1 cái, đổi mã của hàm này thành
PHP Code:
RET
(lúc ấn space xong, nó hiện ra 1 cái ô input nhỏ, cứ thể gõ RET vào rồi enter phát là được)
tức là câu lệnh return trong C ấy mà, có mã là C3
rồi ấn vào nút play ở trên menu (hoặc F9) để chạy thử cái, thấy ngon lành cành đào, đợi tiếp xem hết bài nhạc có dis ko, ko thấy dis, hì hì
bây giờ ngon rồi,

==>> ta sẽ xóa bỏ tất cả các dòng còn còn lại trong hàm đó bằng các : bôi đen toàn bộ dòng code của hàm này, chuột phải
vào edit binary
chỉ vào ô hex ở trong cửa sổ edit, ấn ctrl + a
rồi chuột phải tiếp vào set zero để toàn bộ vùng này có giá trị là 0 hết (0 là ko có gì )
==> ngon rồi, ta đã loại bỏ đi cái hàm thừa thãi ko cần thiết

làm thế nào nhỉ để lấy được cái chương trình đã debug này?
chuột phải, vào dòng dump debugged process rồi ấn dump là được
hi hi
tôi thấy lạ là tôi dùng windows7 dump thì được file chạy luôn
ở trong xp dump thì phải dùng ImportREC để rebuild lại mới chạy được


bây giờ được rồi, chạy hoài ko dis

nhưng mà thế này rõ ràng là thừa 2 file midi trong resource rồi
lại dùng reshack để del 2 bài midi thứ 2 và thứ 3 đi
thế là dung lượng nhỏ đi bao nhiêu


II. Sửa đổi màu nền khi chơi
trong quá trình tìm ra ma trận biểu diễn các con bài trên màn hình nền của form chính tôi phát hiện ra như sau :
new game ở pikachu rồi , bật artmoney lên, tìm chế độ unknown value, interger 1 byte (để dò từng byte 1) trong khoảng dữ liệu tôi tính (lần trước thấy cả 3 biến cần thiết ở cái vùng đó, nên rõ ràng tôi vẫn khoanh vùng đó đề tìm kiếm rồi )
lose game ở pikachu, new game mới rồi tìm lại các giá trị was changed
lại lose game ở pikachu, new game mới rồi tìm lại các giá trị was changed
lại lose game ở pikachu, new game mới rồi tìm lại các giá trị was changed
.....
ở lần thứ 3 tôi thấy cái ô này
PHP Code:
004B6070
có giá trị thay đổi theo mỗi lượt chơi,
thử thay đổi 1 phát
thấy màu nền thay đổi luôn
nghịch thêm tí thấy :
ô này là ô màu nền, có giá trị từ 0 đến 5
tương ứng với 6 màu khác nhau
==> code hack, tương tự như các code đã share ở trên thôi, chưa có gì đặc biệt cả

III. Ma trận các con bài
(đi ngủ thôi, mai viết tiếp)




(sẽ viết chap 5-final ở đây)