<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%9D%B4%EC%98%81%ED%98%B8%2F%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0</id>
	<title>이영호/지뢰찾기 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%9D%B4%EC%98%81%ED%98%B8%2F%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%9D%B4%EC%98%81%ED%98%B8/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;action=history"/>
	<updated>2026-05-15T03:38:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EC%9D%B4%EC%98%81%ED%98%B8/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;diff=66662&amp;oldid=prev</id>
		<title>imported&gt;qa22ahj at 09:36, 27 November 2013</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%9D%B4%EC%98%81%ED%98%B8/%EC%A7%80%EB%A2%B0%EC%B0%BE%EA%B8%B0&amp;diff=66662&amp;oldid=prev"/>
		<updated>2013-11-27T09:36:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;모기 땜에 잠 설쳐서 지뢰찾기 시작.&lt;br /&gt;
모기도 많고 지뢰찾기도 안되고 해서 지뢰찾기 Reverse Engineering&lt;br /&gt;
지뢰찾기 만든 coder가 어떤 생각으로 이걸 짰는지 분석부터 시작.&lt;br /&gt;
&lt;br /&gt;
목표: 지뢰 찾기 분석&lt;br /&gt;
결과: 2차원 배열로 만들어져 있으며 일반적이다.&lt;br /&gt;
Crack: 분석 완료 직후, Inline Patch로 배열 부분을 손보고 지뢰 찾기 시작 후 고급 기록 1초 갱신 완료.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
아래 소스는 지뢰찾기 분석한 것을 coder가 제작한 게임 소스 그대로 C언어로 완벽하게 구현한 것이다. (아마 M$에 있는 소스와 완벽히 똑같을 것이다.)&lt;br /&gt;
&lt;br /&gt;
 --------------------------------지뢰 생성 함수 시작--------------------------------&lt;br /&gt;
 int func(int limit)&lt;br /&gt;
 {&lt;br /&gt;
 	int num = (int)rand();&lt;br /&gt;
 	return num%limit;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // 지뢰 생성 함수&lt;br /&gt;
 // srand(GetTickCount()); 를 이 함수 밖에서 수행한다.&lt;br /&gt;
 main_func()&lt;br /&gt;
 {&lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 	int base = 0x1E;	// 가로길이 (30) &amp;amp;lt;- 원래 main_func()의 매개변수로 받아온다.&lt;br /&gt;
 	int height = 0x10;	// 세로길이 (16)&lt;br /&gt;
 	int count = 0x0A;	// 지뢰 갯수(10)&lt;br /&gt;
 	int map[height][base] = {0x0f, };	// 눈여겨 볼점은 x좌표는 뒤에 y좌표는 앞에 썼다는 점.. 지뢰 없는 곳은 0x0f로 기록 있는 곳은 0x80&lt;br /&gt;
 	int ret_base, ret_height;&lt;br /&gt;
 &lt;br /&gt;
 	do {&lt;br /&gt;
 		ret_base = func(base)++;&lt;br /&gt;
 		ret_height = func(height)++;&lt;br /&gt;
 &lt;br /&gt;
 		if(map[ret_height][ret_base] == 0x80)&lt;br /&gt;
 			continue;&lt;br /&gt;
 &lt;br /&gt;
 		map[ret_height][ret_base] = 0x80;&lt;br /&gt;
 &lt;br /&gt;
 		count--;&lt;br /&gt;
 	} while(count);&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 }&lt;br /&gt;
 // map 배열은 DS:1005340에서 시작&lt;br /&gt;
 --------------------------------지뢰 생성 함수 끝--------------------------------&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
재밌네..~ 전에 동우님(http://ssrnet.snu.ac.kr/~leedw)처럼 디스어셈블 시도해서 분석한 것임~? --&amp;amp;#91;1002&amp;amp;#93;&lt;br /&gt;
네~ 맞아요~! 이거 쓰고 모기를 16마리 잡았네요 -0- --[[이영호]]&lt;br /&gt;
  Reverse 하는 김에 모기 퇴치 프로그램도 같이 짜야 할듯; --&amp;amp;#91;1002&amp;amp;#93;&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;qa22ahj</name></author>
	</entry>
</feed>