读取指定内存的数据进行排序后做为地址,该怎么处理

读取指定内存的数据进行排序后做为地址
1、DWORD   dwAdr_4all   =   0x00050CC4;           <==读取以这里为开头的连续4个字节
0x00050CC4   53   8c   49   4e   45   00   4d   00   45   00   4e   00   53       <=这里的53   8c   49   4e

2、将得到的53   8c   49   4e进行倒排得:4e498c53,并做

为地址0x4e498c53

3、用0x4e498c53+加上偏移=得最终地址

4、将这个最终地址锁定     (完)

用C++怎么做?大侠们给个例子吧,弄好久都弄不出来了~

------解决方案--------------------
不是说你C/C++的基础不牢,是指对计算机处理数据方式的理解就还不够。
不用怀疑,上面那段已经达到要求了。
------解决方案--------------------
其实这样就够了
result = (DWORD)((*((DWORD*)dwAdr_4all)) + offset);
如果你每个步骤的结果都要:
1、(DWORD*)dwAdr_4all,将这个数值作为DWORD型地址
2、*((DWORD*)dwAdr_4all),读取这个地址的4个字节数据,因为计算机处理数据的方式原因,其实已经倒过来了。
3、(*((DWORD*)dwAdr_4all)) + offset,加上偏移量
4、锁定不知道你是什么意思?
------解决方案--------------------
你是不是想做游戏修改器?
首先你要确定你所说的内存地址到底是不是正常的。
如果你不相信*((DWORD*)dwAdr_4all)这个的结果,可以用
CString str;
str.Format( "%x ",*((DWORD*)dwAdr_4all));
MessageBox(NULL,str,NULL,MB_OK);
验证。
------解决方案--------------------
ReadProcessMemory(hProc2,(LPVOID)(result_hc),(LPVOID)&Addr_hc,1,NULL);
WriteProcessMemory(hProc2 , (LPVOID)&Addr_hc , (LPVOID)sWrite_hc , dwSize_wq , NULL);
我分析一下,你以上两句的作用:
第一句,在得到的最终地址处,读取了一个字节的数据到Addr_hc里面,这点很难理解,读一个自己做什么,根据你的下一条语句,读四个字节才有意义啊?
第二句,这条语句怎么看都有问题吧,&Addr_hc这个是这个变量本身的地址,这样的话,上面读出来的数据根本没用上,难道应该是(LPVOID)Addr_hc?

LZ对指针、地址和数据的概念不是很清楚,而且你上面这两条语句一定有问题,不过我不知道你具体要干什么,所以无法确定怎么改
------解决方案--------------------
刚刚才发现,你所说的DWORD dwAdr_4all = 0x00050CC4是指别的进程的地址,我一直以为你说的是自己的进程。

DWORD Addr_base; //类型不要是char[]
ReadProcessMemory(hProc2,(LPVOID)(dwAdr_4all),(LPVOID)&Addr_base,4,NULL);
如果你是直接修改读取的这个地址的值,那
WriteProcessMemory(hProc2 , (LPVOID)(Addr_base+lOffer_wq) , (LPVOID)sWrite_hc , dwSize_wq , NULL);