簡體   English   中英

指向Cycript中C ++函數的指針

[英]Pointer to C++ function in Cycript

在cycript中,可以獲取對c函數指針的引用,但是我一直無法使用該語法從符號表中使用其正確的或錯誤的函數名稱來檢索指向c ++函數的指針。

有沒有辦法從這里到達那里?

更新:

來自Saurik輸入的更新:

我沒有嘗試使用c樣式符號中的函數指針,但是您絕對正確的是,需要刪除開頭的下划線。 _DES_encrypt3需要通過以下方式訪問:

cy# dlsym(RTLD_DEFAULT, "DES_encrypt3")
0x14dc19

這給了我一個有效的指針地址。

當我查看xmpp :: CapsManager :: ~~ CapsManager()的亂碼時,它是__ZN4xmpp11CapsManagerD2Ev_1bf718,我嘗試

cy# dlsym(RTLD_DEFAULT, "__ZN4xmpp11CapsManagerD2Ev_1bf718")
null
cy# dlsym(RTLD_DEFAULT, "_ZN4xmpp11CapsManagerD2Ev_1bf718")
null
cy# dlsym(RTLD_DEFAULT, "ZN4xmpp11CapsManagerD2Ev_1bf718")
null

這些變化都不產生指針。

我的直接猜測是,您正在嘗試獲取原始的錯誤的符號名稱(如您所描述的那樣,從符號表中獲取它),然后將其傳遞給dlsym ...但是dlsym需要一個C級符號名稱,這意味着您的方法會即使對於簡單的C符號也不起作用:您將在開頭加一個_(如果檢查符號表,您會發現C函數也以_開頭被修飾了)。 如果刪除前導_,則應該可以使用dlsym查找損壞的C ++符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM