追逐自己的梦想----------辅助制作第三十三课:向仓库存入N个物品对象汇编实现代码

	BYTE nbData[0x90] = {
		0x00, 0x00, 0x94, 0x00, 0x84, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x0C,
		0x17, 0x24, 0x68, 0xCA, 0x9A, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
		0x00, 0x00, 0x15, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x9E, 0x64, 0xE1, 0x20, 0x05,
		0xB0, 0x0B, 0x68, 0xCA, 0x9A, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
		0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x00, 0x4F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
		0x00, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x3A, 0x00, 0x00,
		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1C, 0x28, 0x00, 0x00,
		0x00, 0x00, 0x1C, 0x29, 0x12, 0x20, 0x2D, 0x0E, 0x1A, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

				__asm{
					lea ecx, nbData
					mov DWORD ptr[ecx + 0x12], 0x3B9ACA65
					mov WORD ptr[ecx+0x1a] ,2
					mov DWORD ptr[ecx + 0x2a], 0x0B65E0FD
					mov DWORD ptr[ecx + 0x2a + 4], 0x0BF007A8
					mov DWORD ptr[ecx + 0x32], 0x3B9ACA65
					mov DWORD ptr[ecx + 0x3a], 0x000000B2
					mov BYTE ptr[ecx + 0x43],	0x00
					push 0x86			
					push ecx
					MOV ECX, DWORD PTR DS : [0xF34880]
					mov eax, 0x004A9AE0
					CALL eax
				}

其中用到的数据就是上节课分析的那些数据,这些数据是手动提取出来的,具体参数如下:


下内存写入断点 得到
+2A的来源:(8字节) db [[物品背包基址]+410+ 4*1]+54
16F9BDD4  FD E0 65 0B A8 07 F0 0B BD                       e??金创药(
+1A的来源: (2字节) 物品数量
+2A的来源:(8字节) db [[物品背包基址]+410+ 4*1]+54
+3A:  物品最大上限 db [[物品背包基址]+410+ 4*1]+c44
+12的来源:(4字节) db [[物品背包基址]+410+ 4*1]+4c
+32的来源:(4字节) db [[物品背包基址]+410+ 4*1]+4c
+43的来源:(1字节)  物品下表db [[物品背包基址]+410+ 4*1]+1f4

0X31BB524  背包列表基址




金疮药(小)
+4C  4字节   3B9ACA65                  
+54  8字节0B65E0FD 0BF007A8                       
+c44 4字节  000000B2
+1f4 1字节  00

00 00 94 00 84 00 01 00 00 00 03 00 00 00 2B 0C 
17 24 65 CA 9A 3B 00 00 00 00 01 00 00 00 00 00 
00 00 4D 00 00 00 00 00 00 00 FD E0 65 0B A8 07  
F0 0B 65 CA 9A 3B 00 00 00 00 B6 00 00 00 00 00 
00 00 01 08 00 00 01 00 4F 90 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 AB 00 00 00 00 00 00 00 00 00 00 27 3A 00 00 
00 00 00 00 00 00 00 00 00 00 00 0F 1C 28 00 00 
00 00 1C 29 12 20 2D 0E 1A 26 00 00 00 00 00 00 



雪原参 2
+4C  4字节  3B9ACA6A

                
+54  8字节B73B0653 0B704F99                     
+c44 4字节  0000001D
+1f4 1字节  01 

具体的函数封装SaveGoodsToDepot(char* szpName , DWORD ndNum);就留在下节课来完成了,下节课我们将完成一个结构体的封装,用来实现上面数据的封装,并实现数据对其,以方便我们对数据的操作,增加代码的可读性等。具体实现留到下节课来完成了

你可能感兴趣的:(c++)