- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
TLS_Callback:
0051CAC3: push ebp
0051CAC4: mov ebp,esp
0051CAC6: cmp dword ptr ds:[51C01C],0
0051CACD: je expressor.51CAD6
0051CACF: pop ebp
0051CAD0: jmp dword ptr ds:[51C020]
0051CAD6: mov eax,dword ptr ss:[ebp + 8]
0051CAD9: xor ecx,ecx
0051CADB: inc ecx
0051CADC: test eax,eax
0051CADE: je expressor.51CAF3
0051CAE0: mov edx,dword ptr ds:[eax + 3C]
0051CAE3: mov edx,dword ptr ds:[edx + eax + 28]
0051CAE7: cmp byte ptr ds:[eax + edx],CC
0051CAEB: jne expressor.51CAF3
0051CAED: mov dword ptr ds:[51C038],ecx
0051CAF3: cmp dword ptr ds:[51C038],0
0051CAFA: mov dword ptr ds:[51C028],eax
0051CAFF: mov eax,dword ptr ss:[ebp + C]
0051CB02: mov dword ptr ds:[51C02C],eax
0051CB07: mov eax,dword ptr ss:[ebp + 10]
0051CB0A: mov dword ptr ds:[51C03C],ecx
0051CB10: mov dword ptr ds:[51C030],eax
0051CB15: jne expressor.51CB21
0051CB17: call expressor.51C81B
0051CB1C: mov dword ptr ds:[51C038],eax
0051CB21: pop ebp
0051CB22: ret C
Что получает через mov eax,dword ptr ss:[ebp + C] и mov eax,dword ptr ss:[ebp + 10]?
это кстати не адреса? я в диалектах асма не оч
мне кажется это сегмент SS, и внутри него смещение 12 от регистра BP, не?
Ну обычно так раньше делали. Вот ты на стек поклал кучу переменных, потом поставил BP наверхс тека, и от него отсчитываешь.
Потом стали писать на сях, и передавать их через стек.
А потом пришел x64, и опять стали стараться все через регистры (бо их стало дохуя)
Мы в этом купе пятнадцать лет втроем едем, я тебя по запятым опознать могу.
поскольку я этот код понимаю, он вероятно руками писаный
А вот если там кусочек других данных, то ты можешь получить совершенно неожиданные результаты
Впрочем, если компилятор сумеет доказать, что там NULL, то он просто выкинет весь твой код, да и всё