以下寫在DLL的對話框的,地址沒有問題,權限沒有問題
1
.這樣寫全局變量DWORD *BagNub1=(DWORD*)(*(DWORD*)0x08CBEE8+0x30),為什么調用的程序無法運行
這樣寫全局變量DWORD *BagNub1
并緊接著寫BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),編驛器通不過,說出錯
這樣寫全局變量DWORD *BagNub1
然后在ONPAINT里面BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),這樣是行的
這樣寫全局變量DWORD *BagNub1
在OnInitDialog里面BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),這樣也會出錯行的
到底全局變量的初始化,和ONPAINT,OnInitDialog等這些函數的先后執行順序是怎么樣的,我想要做的是
在對話框剛啟動的時候讓BagNub1指向一個地址的里面的內容(也是一個地址)加上一個偏移之后的地址.
2.注入后用指針讀取數據的問題
char *p=(char*)Base;
*p是所有的字符串
TYBE *p=(TYBE*)Base;
*p是一個字節
DWORD *p=(DWORD*)Base;
*p是四個字節的
我現在想用指針從Base開始讀取19個字節,
我想的辦法是用一個19個字節長變量申明指針,好像沒有這樣的變量啊,結構體行不行啊
幫我用指針的方式寫最最簡單的代碼讀取BASE開始的19個字節;
DWORD *p=(DWORD*)Base;
這樣可以讀4個字節,但是好像讀出的來的數據和內存中的順序是不一樣,高高低低的
怎么處理成一樣的順序呢?
3.sizeof(MEMORY_BASIC_INFORMATION))和
MEMORY_BASIC_INFORMATION.SIZE_T RegionSize
有啥區別啊,打個比方行不,謝謝
1
.這樣寫全局變量DWORD *BagNub1=(DWORD*)(*(DWORD*)0x08CBEE8+0x30),為什么調用的程序無法運行
這樣寫全局變量DWORD *BagNub1
并緊接著寫BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),編驛器通不過,說出錯
這樣寫全局變量DWORD *BagNub1
然后在ONPAINT里面BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),這樣是行的
這樣寫全局變量DWORD *BagNub1
在OnInitDialog里面BagNub1=*(DWORD*)(*(DWORD*)0x08CBEE8+0x30),這樣也會出錯行的
到底全局變量的初始化,和ONPAINT,OnInitDialog等這些函數的先后執行順序是怎么樣的,我想要做的是
在對話框剛啟動的時候讓BagNub1指向一個地址的里面的內容(也是一個地址)加上一個偏移之后的地址.
2.注入后用指針讀取數據的問題
char *p=(char*)Base;
*p是所有的字符串
TYBE *p=(TYBE*)Base;
*p是一個字節
DWORD *p=(DWORD*)Base;
*p是四個字節的
我現在想用指針從Base開始讀取19個字節,
我想的辦法是用一個19個字節長變量申明指針,好像沒有這樣的變量啊,結構體行不行啊
幫我用指針的方式寫最最簡單的代碼讀取BASE開始的19個字節;
DWORD *p=(DWORD*)Base;
這樣可以讀4個字節,但是好像讀出的來的數據和內存中的順序是不一樣,高高低低的
怎么處理成一樣的順序呢?
3.sizeof(MEMORY_BASIC_INFORMATION))和
MEMORY_BASIC_INFORMATION.SIZE_T RegionSize
有啥區別啊,打個比方行不,謝謝
那么*(DWORD*)(*(DWORD*)0x08CBEE8+0x30);一定是错的,想都不用想
你说在OnPain里正常,我觉得你在骗人,或者其他的过程你没给全 至于说为啥不运行,你有问你自己了,你说地址全限没问题,那么计算呢
你保证你的扩号位置没有错误?2 你所说的:char *p=(char*)Base;*p是所有的字符串
那只是你自以为的猜想.
要取19个字节,总得有地方放
方法一:
char buf[19];
char *p=(char*)Base;
memcpy(buf,p,19);
方法二:
typedef struct XXX
{
char buf[19];
};
XXX *p=(XXX*)Base;
p->buf就是你需要的结果3 sizeof是规定按字节计算的,比如人的重量
MEMORY_BASIC_INFORMATION.SIZE_T RegionSize
根据MEMORY_BASIC_INFORMATION的定义不同可能会有不同的计量单位
那么如果
sizeof(你)=60 表示你有60公斤
sizeof(你老婆)=50 表示你老婆有50公斤
显然 sizeof(你两口子)=110;
那么如果 MEMORY_BASIC_INFORMATION是按人头算呢
显然, 按人头算,你和你老婆分别是1,一起算就是2
你说一样不一样
按字面意思应该是基本内存的信息那么如果sizeof(你) 表示取你的重量
那么MEMORY_BASIC_INFORMATION可能相当于sizeof(你全家)
第一個,是我根據實際情況而說的.地址我有CE加好的,每次附加進程之后都是正確的,
所以不會錯,權限是注入之后讀取,應該也不可能錯,我是用OD找的,然后用CE添加指針的,
本人菜鳥,請大俠告知為什么你認為肯定是不對的呢?空指針嗎?因為整個程序需要用到它,
所以我只能聲明成全局變量,
所以不能最直接回答和解决你的问题
只能凭你给的信息和常规信息DWORD *BagNub1;是定义的一个数据的指针
而*(.....)是取的指针的值
所以:
BagNub1= *(DWORD*)(*(DWORD*)0x08CBEE8+0x30);
翻译成中文意思就是: 指针=值;
这就是我肯定是错的理由,谁家编译器能编译通过那才是怪事
所以正确状况一定是: BagNub1=(DWORD*)....现在来看:DWORD *BagNub1=(DWORD*)(*(DWORD*)0x08CBEE8+0x30)
毫无疑问这句的语法格式是对的,可行的
关键是(*(DWORD*)0x08CBEE8+0x30)是不是正确表达了我们要的东西那么,这个变数就很大了,我怎么知道你要啥呢?(DWORD*)0x08CBEE8+0x30
(DWORD*)(0x08CBEE8+0x30)
*(DWORD*)0x08CBEE8+0x30
*(DWORD*)(0x08CBEE8+0x30)
*((DWORD*)0x08CBEE8+0x30)
*((DWORD*)(0x08CBEE8+0x30))等仅仅是扩号的区别,但实际值的意义却是天壤之别之别
那个才是你想要的,只有你自己才知道所以,0x08CBEE8
但你保证0x08CBEE8+0x30了吗?
就算0x08CBEE8+0x30正常
你能保证(DWORD*)0x08CBEE8+0x30吗
就酸(DWORD*)0x08CBEE8+0x30正常
你能保证*(DWORD*)0x08CBEE8+0x30吗?也许你要的是*((DWORD*)(0x08CBEE8+0x30))
也能保证正常,
但你写成了 *(DWORD*)0x08CBEE8+0x30
这就不在你的保证范围了,你还能保证吗?
1, 0x08CBEE8 代表啥
2, 为啥要加0x30, 是直接加,还是取和0x08CBEE8有关系的数来加
3, 你最后需要啥就用你的例来说
DWORD *BagNub1=(DWORD*)(*(DWORD*)0x08CBEE8+0x30)我理解的意思就是0x08CBEE8代表一个地址
*(DWORD*)0x08CBEE8代表该地址保存的一个DWORD的数据
把这个数据作为一个新的基地址
取该基地址偏移0x30处的数做为最后地址
这个地址指向的内存保存的那个数才是你最后要的数你自己看着办
BagNub=(DWORD*)(*(DWORD*)0x08CBEE8+0x30);正常編譯要是把BagNub=(DWORD*)(*(DWORD*)0x08CBEE8+0x30);寫在
OnInitDialog里,就是編譯出錯;
'BagNub' : undeclared identifier
'=' : cannot convert from 'unsigned long *' to 'int'
'BagNub' : 'unsigned long *' differs in levels of indirection from 'int'
何解啊這樣是對的(DWORD*)(*(DWORD*)0x08CBEE8+0x30);
我的原意是這樣1.取得地址0x08CBEE8的值,取到的值假設為A,(A也是一個地址)
2.把A加上0X30得到另一個值B ,B也是一個地址
3.把指針BagNub對准B
4.*BagNub就是地址B里面的值
全局變量的初始化在OnInitDialog后面,在ONPAINT前面.
但你说在OnInitDialog使用出错说明多半是你的变量BagNub定义有问题
你是如何定义全局变量的呢?
有没有和局部变量重名呢?
在哪定义的这个变量
我是定義在DLG.CPP里的,但是OnInitDialog這個函數在前面,我這個DWORD *BagNub,定義到了
他的后面,而我添加的ONPAINT函數在最最后面,這樣子問題就出來啦,哈哈我明白了,謝謝樓上的几位大
哥,我感謝你們,特別鳴謝gz_qmc(二农戏猪)
http://topic.csdn.net/u/20110711/21/5c181475-90ad-4359-a63c-b312b6256a58.html