2016-06-01 2 views
0

저는 5 년이 걸리지 않고 컴퓨터의 CPU를 하늘 높이보다 높이 지 않고 모듈을 기본 크기에서 모듈 크기로 복사하려고했습니다.메모리를 복사하지 않고 모듈의 크기를 영원히 받아들입니까?

내가 조립이 스크립트는 치트 엔진 LUA에, 그리고 내가 (memcopy // newmem2) 할당 된 공간에 쓰기를 사용할 수 있도록 다음 한 줄에 각 바이트를 인쇄, 읽기를 통해 메모리를 복사하는 것 :

autoAssemble[[ 
    alloc(newmem2, 2048) 
    label(memcopy) 
    registerSymbol(memcopy) 

    newmem2: 
    memcopy: 
]] 

for i = 0x00, getModuleSize("Notepad.exe") do 
    x = readBytes(getAddress("Notepad.exe+0" .. string.format("%x", i))) 
    if (string.len(x) == 1) then 
     print(x .. "0") 
    else 
     print(string.upper(string.format("%x", x))) 
    end 
    if (isKeyPressed(VK_F) == true) then break end 
end 

기본적으로 할당 된 공간에 정확한 모듈을 다시 만들려고합니다 (스크립트 내에서 메모리를 쓰지 않습니다).

도움을 많이 받으실 수 있습니다!

답변

0

This document에는 '문자열 정보'라는 특정 장이 있으며 루프의 연결에 대해 권장합니다. 여기 기사의 대체 솔루션에 대한 견적이 있습니다.

local t = {} 
for line in io.lines() do 
t[#t + 1] = line 
end 
s = table.concat(t, "\n") 

txt 파일 읽기를 고려합니다. 기본적으로 각 가져온 문자열을 테이블 요소에 넣은 다음 기본 제공 함수를 사용하여 단일 메가 스트링을 작성합니다.

루프의 문자열 변경은 코드에서 중요한 것으로 보이지만 어쩌면 개별 연산이 아닌 더 큰 문자열에서 정규 표현식으로 수행 할 수 있습니다.

그리고 디스크에 쓰는 것이 너무 많은 오버 헤드를 가지고 있다고 생각합니다. 회피 문자가 \n 인 큰 테이블로 단일 print()을 호출하면 속도가 빨라집니다. 인쇄중인 디스크의 파일 인 경우

관련 문제