U E D R S I H C RSS
ID
Password
Join
외교관계는 인간관계와 같이 끝이 없다. 한 가지 문제를 해결하면 또 다른 문제가 생기니까. ―제임스 레스턴(美 시사평론가)

 * luac.lua 소스는 다음과 같습니다. (배포본에 포함된 소스에 버그가 있습니다. "w" -> "wb"로 고쳐서 이진화일형태로 열어야합니다)
-- bare-bones luac in Lua
-- usage: lua luac.lua file.lua

assert(arg[1]~=nil,"usage: lua luac.lua file.lua")
f=assert(io.open("luac.out","wb"))
f:write(string.dump(loadfile(arg[1])))
io.close(f)
  • string.dump()는 함수값에 담겨있는 루아 청크를 문자열로 바꾸어 반환합니다. (0이 중간에 끼어있을 수 있습니다만, string.len() 함수는 정상적으로 길이를 반환하는 것으로보아 길이를 따로 관리하는 듯합니다)
  • 만일 특정 루아코드를 문자열로 덤프하고 싶으면 다음과 같이 합니다.
    dump_ = string.dump(loadstring([[..... 코드 내용 ....]]))
    
    dump_에 결과 덤프화일이 담겨있게 됩니다.
  • 실험결과, 코드의 내용이 완벽하게 숨겨지지 않기 때문에(예: 주석문이 드러납니다) 덤프를 통한 이진방식으로 바꾸어도 용량이 줄어드는 경우는 거의 없습니다. 네트워크로 전송할 짤막한 길이의 코드라면 그냥 암호화된 코드 text자체를 보내는 것도 좋은 방법이라 생각됩니다.

  • Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2010-10-28 12:42:52
    Processing time 0.0817 sec