Bir işlemdeki her iş parçacığı için modül adını almaya çalışıyorum. Süreç gezgini, her iş parçacığı ile ilişkili modülün adını gösterir. Şu anki süreçteki tüm modülleri ve tüm konuları hiçbir sorun olmadan numaralandırabilir ve bunlarla ilgili verileri alabilirim. Maalesefİş parçacığı bilgisinden modül adı alma
if(module.BaseAddress < thread.StartAddress && (module.BaseAddress + module.BaseMemorySize) > thread.StartAddress)
{
// this is our module ;)
}
, bunu yapmanın bir somut yol olarak görünmüyor: ilişkili modülü çözmekten Benim şu anki yöntem şudur. xfire_toucan.dll modülü ProceXP ince gösterir:
modül listesinde1972 : xfire_toucan.dll!ToucanSendGamestatsConsoleLine_V1+0x80
, bize 0x1026b000
bir maksimum bellek addr veren 0x10000000
bir taban addr ve 0x26b000
boyutunda gösterir. Bununla birlikte, ilişkili iş parçacığı başlangıç adresi, modülün ana bellek aralığı dışındaki işlemdeki ayrılmış bellek bloğunun bir parçası olan 0x775e2ca0
'dur.
ProcExp gibi bir modül nasıl alınır?
Ben C ve C# biliyorum, bu yüzden iyi, ama benim projem olması tercih ediyor, böylece C# ya:]
Yığının yürümesi nasıl güvenilir olur? İş parçacığı işlevi için ayarlanmış yığın ofseti yok. Ayrıca, iş parçacığı işlevinden önce belirli bir arama kümesi yoktur: http://stackoverflow.pastebin.com/e1TLxwuj – Polynomial
Ne hakkında konuştuğumun daha iyi açıklaması: http://stackoverflow.pastebin.com/cFNjueAq – Polynomial
Aslında, orada olduğunu. Yığın yürüyüşü yapmak için, modülle ilişkili .pdb dosyasına ihtiyacınız vardır. Bu dosya, diğer şeylerin yanı sıra her bir yığın çerçevesinin boyutunu içerir. –