Перейти к содержанию

CE Lua флуд. Отладить флуд код


Рекомендуемые сообщения

Написал сегодня утром скриптец и не дописал. Если хотите, то можете помочь.

 

Скрипт трейсит код приложения от брейкпоинта на адресе кода и логирует границы исполняемого кода. Ну, вот... а получается ерунда под конец

 

Выводит:

Старт! Дождитесь завершения...

Макс. кол-во адресов трассировки : 10000

Макс. кол-во регионов кода : 10000

Не трейсить : Call

Превышено макс. кол-во адресов трассировки

Регионы кода пройденные трассировкой:

0045464A - 00454684 <==== мы здесь были

0045468C - 0045468F <==== мы здесь были

00454695 - 00454695 <==== мы здесь были

75B962FA - 75B96319 <==== мы здесь были

75B96D3A - 75B96D53 <==== мы здесь были

75B9965E - 75B99673 <==== мы здесь были

75B996C5 - 75B996C9 <==== мы здесь были

75BD5FBB - 75BD5FBE <==== мы здесь были

75BD60FC - 75BD6102 <==== мы здесь были

75BD60FD - 75BD6102 <==== мы здесь были

75BD60FE - 75BD6102 <==== мы здесь были

75BD60FF - 75BD6102 <==== мы здесь были

75BD6100 - 75BD6102 <==== мы здесь были

Кол-во регионов : 13

Время : 28.48 секунд(ы)

Поиск регионов кода завершен

 

  

Там где красное, те регионы лишние. Они не должны создаваться

 

 

 

tableCode = {}isStartFindingCode = falselocal maxCountStep = 10000		-- количество шагов трассеровкиlocal maxCountRegions = 10000 	-- количество формируемых регионов в таблицеlocal targetAdress = 0local startTimer = 0local isCallExecute = false-- Выводит таблицуfunction PrintTable()	print('Регионы кода пройденные трассировкой:')	if(targetIs64Bit()) then 		for i = 1, #tableCode do print(string.format('%16X - %16X	<==== мы здесь были', tableCode[i][1],tableCode[i][2])) end	else 		for i = 1, #tableCode do print(string.format('%08X - %08X	<==== мы здесь были', tableCode[i][1],tableCode[i][2])) end	end		print(string.format('Кол-во регионов : %s', #tableCode))	print(string.format("Время : %.2f секунд(ы)", os.clock() - startTimer))	print('Поиск регионов кода завершен\n')endfunction ReadAdressCode(addressCode)	for i = 1, #tableCode do if(tableCode[i][1] >= addressCode and addressCode <= tableCode[i][2]) then return end end	for i = 1, #tableCode do		--print(string.format('> %X == %X',tableCode[i][2]+1, addressCode))		if(tableCode[i][2]+1 == addressCode) then 			tableCode[i][2] = tableCode[i][2] + getInstructionSize(addressCode)			return 		end	end	-- Код не был пройден и далеко от найденных границ	table.insert(tableCode, {addressCode, addressCode + getInstructionSize(addressCode)-1})endfunction debugger_onBreakpoint()	if(isStartFindingCode) then		countStep = countStep + 1		if(targetIs64Bit()) then ReadAdressCode(RIP) else ReadAdressCode(EIP) end		if(countStep >= maxCountStep) then			isStartFindingCode = false			print("Превышено макс. кол-во адресов трассировки ")			debug_removeBreakpoint(targetAdress)			debug_continueFromBreakpoint(co_run)			PrintTable()			return 1		end		if(#tableCode >= maxCountRegions) then			isStartFindingCode = false			print("Превышено макс. кол-во регионов кода ")			debug_removeBreakpoint(targetAdress)			debug_continueFromBreakpoint(co_run)			PrintTable()			return 1		end		-- Иначе делать шаг по коду		if(isCallExecute) then			debug_continueFromBreakpoint(co_stepinto) --co_run (just continue), co_stepinto(when on top of a call, follow it), co_stepover 		else			debug_continueFromBreakpoint(co_stepover)		end		return 1 -- не показывать дизассемблер во время поиска isStartFinding	end	return 0 -- показывать дизассемблерendfunction Start(address)	print("Старт! Дождитесь завершения...")	print(string.format("Макс. кол-во адресов трассировки : %s", maxCountStep))	print(string.format("Макс. кол-во регионов кода : %s", maxCountRegions))		if(isCallExecute) then		print("Трейсить : Call")	else		print("Не трейсить : Call")	end		isStartFindingCode = true	countStep = 0	tableCode = {}	targetAdress = address	startTimer = os.clock()	debug_setBreakpoint(address)end--Start('test.exe+5B5A4')--0045464A - FF 05 A4B54500        - inc [0045B5A4] : [000003EC]Start('0045464A')
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.