• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

POPAD? Nie dziala tak jak powinien?

VPS Starter Arubacloud
0 głosów
183 wizyt
pytanie zadane 7 czerwca 2022 w Assembler przez JanekCode Nowicjusz (120 p.)

Czesc, mianowicie mam problem gdy daje POPAD - Dane Push wchodza ale chyba nie tak jak powinny, gdy nie dam POPAD, to leci crash i petli ten kod "az do crasha"

 

C++/ASM

 

SOACS_Intercept PartyLupineSkillFix() { // 0046BCCE
										//ExecuteType9ExecuteType9(UserID, UserID, pMagicInfo->iNum);
	_sosm{ // ASM START -> Jest to zdefinowane z __asm do _sosm jakby co
		//mov eax, dword ptr ss : [ebp - 0x8]
		//push dword ptr ds : [ebx]
		//mov ecx, dword ptr ds : [eax + 0x4]
		//add ecx,0x1470
		MOV AX,WORD PTR DS : [ESI + 0x8058]
		MOV PartyLupine_Hook_UserID,AX
	}
	SendLupineToParty(PartyLupine_Hook_UserID);
	_sosm{
		POPFD
		POPAD
		JMP PartyLupineReturn;
	}

}
void SendLupineToParty(int UserID) {
	char text[1024]; memset(text, NULL, 1024);
	if (IsUserConnected(UserID)) {
		sprintf(text, "UserID: %i", UserID);
		ConsoleOutput(text, LightRed);
		_USER_DATA* pUserData;
		pUserData = reinterpret_cast<_USER_DATA*>(GetUserPointer(UserID));
		ConsoleOutput("Debug 1", LightGreen);
		_PARTY_GROUP* PartyInfo = reinterpret_cast<_PARTY_GROUP*>(GetPartyArray(GetPartyID(UserID))); // GET PARTY INFO
		if (PartyInfo != nullptr) {
			ConsoleOutput("Debug 2", LightGreen);
			if (IsRealPartyMember(UserID) && (GetPartyID(UserID) != -1)) {
				int PartyID = GetPartyID(UserID);
				sprintf(text, "PartyID: %i", PartyID);
				ConsoleOutput(text, LightBlue);
				ConsoleOutput("Debug 3", LightGreen);
				//for (int x = 0; x < 8; x++) {
					if (IsUserConnected(PartyInfo->uid[0]) && IsRealPartyMember(PartyInfo->uid[0])) {
						//Checking users is connected to the game && really member of the party 
						ConsoleOutput("Debug 4", LightGreen);
						ExecuteType9(PartyInfo->uid[0], PartyInfo->uid[0], 107735); I tu wlasnie mi crashuje -> 
						ConsoleOutput("Debug 5", LightGreen);
					}
				//}
				return;
			}
		}
		return;
	}
	return;
}

Executetype9 funkcja - rowniez zawiera kod ASM [Jesli nie dam w nim POPAD -> to petli sie az do crasha, a jesli dam to nie daje pushuje tak jakbym chcial zeby bylo]

bool ExecuteType9(int UserID, int TargetID, int SkillID) {
	char text[1024]; memset(text, NULL, 1024);
	if (!IsUserConnected(UserID)) {
		return false;
	}
	sprintf(text, "DEBUG function");
	ConsoleOutput(text, LightRed);
	unsigned long pMagicPoint = GetMagicInfoPointer(UserID);
	sprintf(text, "DEBUG function 1 ");
	ConsoleOutput(text, LightRed);
	_sosm{
		popad
		PUSH 0x0
		PUSH 0x0
		PUSH 0x0
		//LEA ECX,DWORD PTR DS:[ECX+0x874C]
		PUSH TargetID
		PUSH UserID
		PUSH SkillID
		MOV ECX,pMagicPoint
		CALL g_ExecuteType9
		//JMP g_ParserExit
	}
	sprintf(text, "DEBUG function 3");
	ConsoleOutput(text, LightRed);
	return true;
}

 

 

Tak powinno byc w ollydbg

a jest cos takiego i nie wiem dlaczego jestem poczatkujacy

1 odpowiedź

0 głosów
odpowiedź 8 czerwca 2022 przez doublechess Obywatel (1,300 p.)
https://www.felixcloutier.com/x86/popa:popad

Sprawdź może POPA.

POPAD, jeśli dobrze mówię jest od rejestrów 32-bit, a POPA od innych.
1
komentarz 9 czerwca 2022 przez Wiciorny Ekspert (269,120 p.)

nie do końca i jest to określone zaraz na początku

Opcode Instruction Op/En 64-Bit Mode Compat/Leg Mode Description
61 POPA ZO Invalid Valid Pop DI, SI, BP, BX, DX, CX, and AX.
61 POPAD ZO Invalid Valid Pop EDI, ESI, EBP, EBX, EDX, ECX, and EAX.

The POPA instruction is intended for use when the operand-size attribute is 16 and the POPAD instruction for when the operand-size attribute is 32 

Podobne pytania

0 głosów
0 odpowiedzi 363 wizyt
pytanie zadane 15 grudnia 2016 w Assembler przez Michał Gibas Pasjonat (19,610 p.)
0 głosów
1 odpowiedź 327 wizyt
pytanie zadane 3 czerwca 2020 w Assembler przez niezalogowany
0 głosów
1 odpowiedź 1,991 wizyt
pytanie zadane 19 grudnia 2019 w Assembler przez progNewbie Obywatel (1,130 p.)

92,453 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...