-
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:
- Call Funcition in Process
- Nhận biết chương trình dạng console vừa được mở lên
- Sử dụng WMI để ghi giá trị vào object của NetworkApdaper không được. Nguyên nhân ?
- Hook zwopenprocess để chống kill process như thế nào?
- Hide Window CMD in .Bat ?
- Lập trình Win API | Không cho thay đổi kích thước cửa sổ?
- Lấy Threadid hoặc Process id từ Thread Handle?
- Hàm native API NT CreateProcess
- TC đếm số cluster còn trống trên đĩa
- Sử dụng CloseHand() bị crash
-
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]
Ngoại trừ một số ít trường hợp rãnh mũi - má và “râu rồng silicon” xuất hiện sớm, có khi từ tuổi thanh niên do cơ địa, còn lại, đại đa số do căn do lão hoá đã gây nên ba diễn biến: Giảm mô xương gò...
Cách thẩm mỹ má ở tuổi trung niên...