Chigco.Orc 发表于 2011-12-12 22:44:36

一个恐怖临时变量。。

本帖最后由 Chigco.Orc 于 2011-12-12 22:48 编辑

1012EB3F    51            push ecx                              ; ecx==00A9F4B8
1012EB40    8B55 08         mov edx,dword ptr ss:
1012EB43    52            push edx                              ; NPC代码 edx=20000014 edx=2000008E
1012EB44    6A 00         push 0x0
1012EB46    A1 CCC52510   mov eax,dword ptr ds:
1012EB4B    50            push eax                              ; eax=07AC4C38
1012EB4C    8B4D E8         mov ecx,dword ptr ss:      
1012EB4F    51            push ecx                              ;一直变化着的值。我们的目标!!!
1012EB50    E8 5B08F6FF   call 1008F3B0;   对话call

向上找。。。

1012EAC0    55            push ebp
1012EAC1    8BEC            mov ebp,esp
1012EAC3    6A FF         push -0x1
1012EAC5    68 F27A1D10   push fsplatfo.101D7AF2
1012EACA    64:A1 00000000mov eax,dword ptr fs:
1012EAD0    50            push eax
1012EAD1    83EC 0C         sub esp,0xC
1012EAD4    A1 50902410   mov eax,dword ptr ds:
1012EAD9    33C5            xor eax,ebp
1012EADB    50            push eax
1012EADC    8D45 F4         lea eax,dword ptr ss:
1012EADF    64:A3 00000000mov dword ptr fs:,eax
1012EAE5    894D E8         mov dword ptr ss:,ecx;郁闷的临时变量。

快到达头部的位置找到。向上一层找吧。。

1011800D    8D4D F0         lea ecx,dword ptr ss:         ; 0012F8B4
10118010    E8 ABC0F0FF   call 100240C0                  ; 好吧,应该是这个call返回的eax,进去看看 3
10118015    8BC8            mov ecx,eax
10118017    E8 A46A0100   call 1012EAC0               ; 上面的代码都在这一层里。发现 mov ecx,eax 正是我们要的 2
1011801C    EB 54         jmp 10118072 ;返回的地方 1

进入 10118010 的 call内部去。

100240C0    55            push ebp
100240C1    8BEC            mov ebp,esp
100240C3    51            push ecx
100240C4    894D FC         mov dword ptr ss:,ecx
100240C7    8B45 FC         mov eax,dword ptr ss:
100240CA    8B00            mov eax,dword ptr ds:
100240CC    8BE5            mov esp,ebp
100240CE    5D            pop ebp
100240CF    C3            retn

天杀的,又是上面的 ecx 传进来的。回去上一层。看看call之前的ecx。就在call前面一句写着。。

1011800D    8D4D F0         lea ecx,dword ptr ss:         ; 0012F8B4


我想哭啊,还跑上去吗?我看到头部了,貌似还得再跑上一层。。
请问,我方向对吗?

雨夜 发表于 2011-12-13 11:03:54

1012EB4B    50            push eax                              ; eax=07AC4C38
1012EB4C    8B4D E8         mov ecx,dword ptr ss:      
1012EB4F    51            push ecx                              ;一直变化着的值。我们的目标!!!   
1012EB50    E8 5B08F6FF   call 1008F3B0;   对话call

1012EAE5    894D E8         mov dword ptr ss:,ecx;郁闷的临时变量。
// 看这条,在这里下断,进游戏对话,断下后如果这里的ECX和
1012EB4F    51            push ecx   
这里的是一样,那就继续向上找,每次对比一下,就不会找错了。

Chigco.Orc 发表于 2011-12-13 23:46:29

回复 2# 雨夜


    明白。。我去试试,谢谢啊。我试完继续反馈。

Chigco.Orc 发表于 2011-12-14 00:16:23

本帖最后由 Chigco.Orc 于 2011-12-14 00:29 编辑

那好,第一次找对了。
在大牛所说的

1012EAE5    894D E8         mov dword ptr ss:,ecx;郁闷的临时变量。
// 看这条,在这里下断,进游戏对话,断下后如果这里的ECX和
1012EB4F    51            push ecx   

ecx 是一致的,我往上一层找,没错了。

那继续我之前的做法。往上一层走。


1011800D    8D4D F0         lea ecx,dword ptr ss:         ; 0012F8B4
10118010    E8 ABC0F0FF   call 100240C0                  ; 好吧,应该是这个call返回的eax,进去看看 3
10118015    8BC8            mov ecx,eax
10118017    E8 A46A0100   call 1012EAC0               ; 上面的代码都在这一层里。发现 mov ecx,eax 正是我们要的 2
1011801C    EB 54         jmp 10118072 ;返回的地方 1

进入 10118010 的 call内部去。

100240C0    55            push ebp
100240C1    8BEC            mov ebp,esp
100240C3    51            push ecx
100240C4    894D FC         mov dword ptr ss:,ecx
100240C7    8B45 FC         mov eax,dword ptr ss:
100240CA    8B00            mov eax,dword ptr ds:
100240CC    8BE5            mov esp,ebp
100240CE    5D            pop ebp
100240CF    C3            retn

天杀的,又是上面的 ecx 传进来的。回去上一层。看看call之前的ecx。就在call前面一句写着。。

1011800D    8D4D F0         lea ecx,dword ptr ss:         ; 0012F8B4

Chigco.Orc 发表于 2011-12-14 00:28:24

找到头部吧。。。

发现:


10117EE0    55            push ebp
10117EE1    8BEC            mov ebp,esp
10117EE3    6A FF         push -0x1
10117EE5    68 3B631D10   push 101D633B
10117EEA    64:A1 00000000mov eax,dword ptr fs:
10117EF0    50            push eax
10117EF1    83EC 08         sub esp,0x8
10117EF4    A1 50902410   mov eax,dword ptr ds:
10117EF9    33C5            xor eax,ebp
10117EFB    50            push eax
10117EFC    8D45 F4         lea eax,dword ptr ss:
10117EFF    64:A3 00000000mov dword ptr fs:,eax
10117F05    894D EC         mov dword ptr ss:,ecx
10117F08    8B4D EC         mov ecx,dword ptr ss:; 怀疑。
10117F0B    E8 B0D0F1FF   call 10034FC0         ;
10117F10    50            push eax   ;执行到这一句,发现 ecx 是我们要的值。那就进入10117F0B call 查看

10117F0B call 内部


10034FC0 >55            push ebp
10034FC1    8BEC            mov ebp,esp
10034FC3    51            push ecx
10034FC4    894D FC         mov dword ptr ss:,ecx
10034FC7    8B45 FC         mov eax,dword ptr ss:
10034FCA    8378 18 00      cmp dword ptr ds:,0x0
10034FCE    74 0A         je 0034FDA
10034FD0    8B4D FC         mov ecx,dword ptr ss:
10034FD3    8B41 18         mov eax,dword ptr ds:
10034FD6    EB 28         jmp 10035000
10034FD8    EB 26         jmp 10035000
10034FDA    8B55 FC         mov edx,dword ptr ss:
10034FDD    837A 1C 00      cmp dword ptr ds:,0x0
10034FE1    74 1B         je 10034FFE
10034FE3    8B45 FC         mov eax,dword ptr ss:
10034FE6    8B48 1C         mov ecx,dword ptr ds:
10034FE9    E8 D2FFFFFF   call 10034FC0
10034FEE    8B4D FC         mov ecx,dword ptr ss:
10034FF1    8941 18         mov dword ptr ds:,eax
10034FF4    8B55 FC         mov edx,dword ptr ss:
10034FF7    8B42 18         mov eax,dword ptr ds:
10034FFA    EB 04         jmp 10035000
10034FFC    EB 02         jmp 10035000
10034FFE    33C0            xor eax,eax
10035000    8BE5            mov esp,ebp
10035002    5D            pop ebp
10035003    C3            retn


可以断定是上一层的ecx吗?

就是。



10117F05    894D EC         mov dword ptr ss:,ecx
10117F08    8B4D EC         mov ecx,dword ptr ss:; 怀疑。

----------------------------------

我返回上一层的话,会无限断。。

zhangchenggu 发表于 2011-12-14 21:35:58

楼主我也正在找CALL的参数,但是遇到瓶颈了,找不到来源那个基址一直是【ESP+???】
求老师做个找参数基址的教程!!!

Chigco.Orc 发表于 2011-12-16 15:25:09

还是无思路。 - -。。纠结的变量。
页: [1]
查看完整版本: 一个恐怖临时变量。。