-
09-06-2012, 09:01 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Khi bạn loadlibrary dll lên bộ nhớ thì nó cũng load các hàm trong dll tại các địa chỉ nhất định trong bộ nhớ.Dù dll có sẵn hay bạn tự build ra thì cách gọi hàm cũng thế thôi.Bạn truyền sai đối số,gọi sai tên hàm ... thì nó mới không thực thi theo ý bạn.
Tham khảo cách sử dụng các hàm trong dll ở đây :
http://diendan.congdongcviet.com/showthread.php?t=47180
http://diendan.congdongcviet.com/showthread.php?t=118600View more random threads:
- Đối số thứ 3 của hàm SetWindowHookEx (HINSTANCE hMod) nghĩa là gì?
- Mouse Scroll Control VC++ Windows ?
- chạy debug chương trình bị not responding
- Lấy định dạng RTF từ Rich Edit trong Win32
- Sự khác nhau giữa std::map và std::vector
- Không gửi được message vào một cửa sổ khác.
- Windows 7 EndTask trong Task Manager
- [Hook]Bắt sự kiện các chương trình hook keyboard và hook bắt URL?
- So sánh kiểu dữ liệu trong C Native và VC++ khi lập trình APIs
- SetWindowsHookEx dont Work on Vista
-
09-06-2012, 05:26 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Làm thế nào để liên kết các hàm đã export trong 1 dll. (proxy function )
Trong 1 game âm nhạc, fmod.dll làm nhiệm vụ chơi các âm thanh, nhạc .v.v., bản thân fmod.dll này export tổng cộng 230 function để quản lí nhạc, âm thanh này.
Tớ thay tên fmod.dll thành _fmod.dll rồi sau đó viết code vào source fmod mới, fmod mới này cũng export đầy đủ 230 function ( gọi tắt là fake cái fmod gốc ).
Nhưng khi build xong, để vào game ( bỏ luôn cái _fmod.dll, vì tớ loadlibrary cái fmod này để GetProcAddress tất cả 230 hàm trong đó ) thì Game không có bất cứ nhạc, âm thanh gì cả.
Vậy các anh chị em giúp dùm tớ, hiện tại tớ GetProcAddress tất cả 230 hàm rồi còn phải làm gì nữa để có thể fake fmod kia hoàn hảo. Có 1 người gợi ý cho tớ là sử dụng proxy để liên kết hàm đã get ở _fmod.dll. Vậy làm thế nào các anh chị em giúp tớ với.
Tớ xem 1 cái fmod cũng làm như tớ nhưng đến đoạn này tớ không hiểu nó làm gì, các anh chị giải thích dùm em. ( đây cũng là công việc sẽ làm sau khi GetProc cái hàm, mà vẫn k hiểu nó làm gì )
-
09-06-2012, 06:38 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Giải thích rõ hơn được không bạn ?
Mình đọc đi đọc lại mà vẫn chưa hiểu mục đích và cách làm của bạn.
-
09-06-2012, 06:46 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cái tên file dll không ảnh hưởng gì khi bạn load lên bộ nhớ cả.Vấn đề ở đây tôi nghĩ là do namemanling khi biên dịch làm các hàm export ra khác với tên hàm khi code khiến gọi hàm trong chương trình bạn không được.Bạn thử check lại tên các hàm được export trong đó xem.
-
09-06-2012, 07:52 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Hoàn toàn đúng, vì tớ đã thử viết sai hàm 1 lần, và game nó báo thiếu hàm đấy, tớ export đúng hoàn toàn không sai gì cả, cũng không thiếu 1 hàm nào, nhưng có 1 người nói " export rồi mà để đó thì chẳng khác nào gọi hàm MessageBox của use32 rồi để đó ", tuy nhiên công việc tiếp theo khi đã export là phải làm thế nào ? để khi game load dll của tớ nó sẽ có đầy đủ nội dung hàm và hoạt động bình thường.
Porxy function là gì ?
-
16-06-2012, 11:27 AM #6Silver member
- Ngày tham gia
- Sep 2015
- Đang ở
- Hà Nội
- Bài viết
- 0
Gửi bởi hsagduag
Proxy funtion trong bài toán của bạn là 1 cái cầu nối từ 1 function trong dll fake này tới 1 function trong dll ( xịn ) ko fake.
Ví dụ: _fmod.dll( original function ) có function A # fmod.dll có function A
Bởi vì function A trong _fmod bạn ko thể biết được thân hàm nó làm gì .
Và cái function A trong fmod bạn mới tạo.
Khi bạn dùng cách fake dll thì app gọi fmod -> call cái funtion A bạn tạo ra .
Và nếu bạn muốn có tí thực thi giống ban đầu thì
Từ cái function A này bạn gọi tiếp function A của _fmod.
Còn về vấn đề vụ fake dll của bạn .
- Bạn phải biết chắc là cái app gameamnhac.exe của bạn nó dùng kiểu nạp dll tĩnh hay động
- Nắm rõ tham số ( input ) truyền vào hàm cũng như return value ( output )
Nếu nạp dll động thì còn đơn giản .
Nếu nạp dll tĩnh thì bạn phải sửa lại import address table. Cái này thì bạn cố đọc chút tài liệu để làm nhé [IMG]images/smilies/biggrin.png[/IMG]
Ngọc Bích xanh bản chất thuộc dòng đá đá hoa (jade). Và cẩm thạch là tên gọi chung của ngọc bích. Vì thực chất chúng thuộc dòng đá đa khoáng được hình thành từ chất Silicat dưới dạng dioxy. Ngọc bích...
Chia sẻ Vòng tay ngọc bích xanh là...