能力值:
(RANK:410 )
|
-
-
2 楼
一般在前面有像下面这类的指令将数据指针传给ESI。
mov esi,xxxxxxxx
mov esi,[exx]
mov esi,exx
lea esi,[xxxxxxxx]
mov esi,[exx+exx]
....
等等。
如果你想知道ESI的数据是怎么来的,你可以试试对[ESI]的地址下内存写入断点来跟踪。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢您的指导,像这样的,如果在高级语言里写的话,是个什么样的过程?
|
能力值:
( LV13,RANK:970 )
|
-
-
4 楼
高级语言里面就是个memcpy之类的数据转移
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
呵呵,
00844BB8 |> \8B8B 30010000 |mov ecx, [ebx+130]
00844BBE |. 8B93 40010000 |mov edx, [ebx+140] ; 注意一下这里
00844BC4 |. 8BC5 |mov eax, ebp
00844BC6 |. 8BB1 38100000 |mov esi, [ecx+1038] ; 这里变了一次ESI
00844BCC |. 03F2 |add esi, edx ; 这里变了二次ESI
00844BCE |. 3BEF |cmp ebp, edi
00844BD0 |. 75 04 |jnz short 00844BD6
00844BD2 |. 33C0 |xor eax, eax
00844BD4 |. EB 45 |jmp short 00844C1B
00844BD6 |> 8B93 8C000000 |mov edx, [ebx+8C]
00844BDC |. 8D8C2A 00E0FF>|lea ecx, [edx+ebp-2000]
00844BE3 |. 3BCF |cmp ecx, edi
00844BE5 |. 7E 04 |jle short 00844BEB
00844BE7 |. 8BC5 |mov eax, ebp
00844BE9 |. 2BC1 |sub eax, ecx
00844BEB |> 3BC7 |cmp eax, edi
00844BED |. 7F 04 |jg short 00844BF3 ; eax>edi跳
00844BEF |. 33C0 |xor eax, eax
00844BF1 |. EB 28 |jmp short 00844C1B
00844BF3 |> 8BBB 88000000 |mov edi, [ebx+88]
00844BF9 |. 8BC8 |mov ecx, eax
00844BFB |. 03FA |add edi, edx
00844BFD |. 8BD1 |mov edx, ecx
00844BFF |. C1E9 02 |shr ecx, 2 ; 除4
00844C02 >|. F3:A5 |rep movs dword ptr es:[edi], dword ptr [esi] ; 在这里内存复制包,从ESI到EDI
esi的地址每次都不一样,我怎样下断才可以找到esi地址中的东西是怎么来的?
下ESI内存断点没什么用了,它复制时,ESI的值是不固定的,断不下来。
|
能力值:
( LV12,RANK:410 )
|
-
-
6 楼
我感觉这里好像是一个结构中的指针。
typedef struct
{
....
char* esi;
...
}STest,*pSTest;
int test(STest* pParma)
{
char* p = pParama->esi;
....
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
00844BC6 |. 8BB1 38100000 |mov esi, [ecx+1038] ; 这里变了一次ESI
00844BCC |. 03F2 |add esi, edx
esi=[ecx+1038]+edx
你找ecx和edx的关系,不就得出esi吗?
还有,这应该是一个内部call,重点应该放在分析参数
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
恩,酷酷 说的对,可是。。。。
esi=[ecx+1038]+edx
程序在这之前就把esi地址里的东西计算好了,这样下内存断点,不起作用。
ecx和edx的关系?恩,好的,我再去分析一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
ecx=[ebx+130]
edx=[ebx+140]
esi=[ecx+1038]+edx
esi=[[ebp+130]+1038]+[ebx+140]
这是典型的以ebx为参数的call,有点像是BCB程序
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
一般会从一个静态地址取出一个指针,然后再读数的
比如
mov eax,[xxxxx] xxxx 是固定的
隔了一段距离后
mov esi, [eax+xx]
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
恩,那我如何去追踪和找出那里面的数据呢?
|
|
|