<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>공부 발자취</title>
    <link>https://peraspera.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 9 Aug 2026 18:19:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>B612</managingEditor>
    <image>
      <title>공부 발자취</title>
      <url>https://tistory1.daumcdn.net/tistory/4783434/attach/2a176cdf5e534fea8609211a020fc36a</url>
      <link>https://peraspera.tistory.com</link>
    </image>
    <item>
      <title>뒤늦은 라섹 후기 (약 10개월 후)</title>
      <link>https://peraspera.tistory.com/131</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;정말정말 오랜만에 블로그에 왔다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;밀린 글은 엄청 많지만 한 번 안들어오기 시작하니까 들어올 엄두가 안나더라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각설하고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://peraspera.tistory.com/121&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.03.27 - [잡글/라섹] - 라섹 강남 병원 3곳 검안 후기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1742123940194&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;라섹 강남 병원 3곳 검안 후기&quot; data-og-description=&quot;제일 친한 친구가 라섹을 위해 고군분투 하는 것을 보며.. 나도 격하게 하고 싶어졌다 사실 2월 말에 띵가띵가 놀았는데, 이때 알아볼 걸ㅠㅠ 하는 후회가 좀 많이 들긴하는데 쩔수 각 병원 마다 &quot; data-og-host=&quot;peraspera.tistory.com&quot; data-og-source-url=&quot;https://peraspera.tistory.com/121&quot; data-og-url=&quot;https://peraspera.tistory.com/121&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bCbV8h/hyYrYJksHe/MaKjZkw18Eo0H4hUakW2KK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bJumZ5/hyYqLDMn5h/Z9zwBxZTf5ULBv2TvHPOfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/eipGIz/hyYrU7Zhwm/c1GkDgWlGXtI0ZkY2p3xck/img.jpg?width=444&amp;amp;height=333&amp;amp;face=0_0_444_333&quot;&gt;&lt;a href=&quot;https://peraspera.tistory.com/121&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://peraspera.tistory.com/121&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bCbV8h/hyYrYJksHe/MaKjZkw18Eo0H4hUakW2KK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bJumZ5/hyYqLDMn5h/Z9zwBxZTf5ULBv2TvHPOfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/eipGIz/hyYrU7Zhwm/c1GkDgWlGXtI0ZkY2p3xck/img.jpg?width=444&amp;amp;height=333&amp;amp;face=0_0_444_333');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;라섹 강남 병원 3곳 검안 후기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;제일 친한 친구가 라섹을 위해 고군분투 하는 것을 보며.. 나도 격하게 하고 싶어졌다 사실 2월 말에 띵가띵가 놀았는데, 이때 알아볼 걸ㅠㅠ 하는 후회가 좀 많이 들긴하는데 쩔수 각 병원 마다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;peraspera.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라섹을 하였습니다,,, 그리고 10개월이 지났습니다,,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론을 먼저 말씀드리자면 라섹 추천합니다 다만 눈 관리를 꾸준히 6개월-1년 간은 잘 하는게 정말 중요한 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이야기 하고 싶은 것이 두 가지가 있는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째는, 라섹을 하고 나서 원장의 태도가 미묘하게 달라졌다는 것이다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 눈이 흐려요 -&amp;gt; 원래 반년은 그래요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(반 년 지나고 나서) 저 눈이 흐려요 -&amp;gt; 원래 그래요 뭐 해줄 수 있는게 없어요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;궁금한 걸 물어봐도 성의없게 대답하는 느낌,,, 을 받아서 눈과 별개로 기분이 좋지 않았음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째는, 눈 관리를 정말 잘 해야된다는 것이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 달간은 정말 빡세게 쉬었고 그 이후에는 슬금슬금 롤도 하고 그랬는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터를 계속 보는 직종이다 보니까 어쩔수없이 점점 침침해지고 흐릿해 지는 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 그 이외에는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라섹하고 집 가는 길에 마취가 풀렸는데 정말 눈을 뽑아버리고 싶다 라는 생각이 들 정도로 고통스러웠음ㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미리 방에 햇빛이 들어오지 못하도록 시트지를 붙여놓은게 다행이였고, 가족이 있는 것이 다행이였음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확하게 기억은 안나지만 일주일 이내로 괜찮아졌던 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 처음에는 눈이 잘 안보여서 정말 걱정했었음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 눈은 처음부터 지금까지 흐리게 보이는 느낌이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 눈은 선명하게 보이다가 어느 순간 흐리게 보이더니 그 이후로 쭉 흐리게 보인다 &amp;larr; 이게 정말 짜증남&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래도 안구건조증이 정말 심한편이였는데, 지금도 꽤나 심한건 그대로 유지되고 있는 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라섹 직후로 돌아가면 눈 관리를 좀 더 빡세게 해보지 않을까.. 라는 생각이 듦&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝.&lt;/p&gt;</description>
      <category>잡글/라섹</category>
      <category>10개월</category>
      <category>라섹</category>
      <category>후기</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/131</guid>
      <comments>https://peraspera.tistory.com/131#entry131comment</comments>
      <pubDate>Sun, 16 Mar 2025 20:28:40 +0900</pubDate>
    </item>
    <item>
      <title>Frida-Labs 0x2</title>
      <link>https://peraspera.tistory.com/130</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://peraspera.tistory.com/129&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2024.05.13 - [공부/안드로이드] - Frida-Labs 0x1&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Sr7ap/btsHIV3lTNB/qkZ7FS1k7i8FkoqMRiabJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Sr7ap/btsHIV3lTNB/qkZ7FS1k7i8FkoqMRiabJk/img.png&quot; data-alt=&quot;자기를 후킹해보라는 당돌한 앱이다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Sr7ap/btsHIV3lTNB/qkZ7FS1k7i8FkoqMRiabJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSr7ap%2FbtsHIV3lTNB%2FqkZ7FS1k7i8FkoqMRiabJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;230&quot; height=&quot;486&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자기를 후킹해보라는 당돌한 앱이다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0k3f/btsHIuSJjzH/RN0j53pHv3Gkkm2krAG3Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0k3f/btsHIuSJjzH/RN0j53pHv3Gkkm2krAG3Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0k3f/btsHIuSJjzH/RN0j53pHv3Gkkm2krAG3Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0k3f%2FbtsHIuSJjzH%2FRN0j53pHv3Gkkm2krAG3Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;993&quot; height=&quot;284&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;284&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전과 똑같이 MainActivity로 가면 저 메소드가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a의 값을 4919로 만들면 flag를 얻을 수 있을 것 같다는 느낌이 든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 우리는 a를 입력할 수 있는 곳이 어디에도 없는데??!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니까 frida를 사용해야한다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brk2bX/btsHJRTtCyb/N59PnPW44Jh88pl20cqgKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brk2bX/btsHJRTtCyb/N59PnPW44Jh88pl20cqgKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brk2bX/btsHJRTtCyb/N59PnPW44Jh88pl20cqgKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrk2bX%2FbtsHJRTtCyb%2FN59PnPW44Jh88pl20cqgKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;677&quot; height=&quot;334&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬으로 작성한 스크립트는 앱이 실행된 이후, js 스크립트는 앱이 실행되기 전 후킹이 된다는 차이점이 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1717085819755&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Java.perform(function() {
    let MainActivity = Java.use(&quot;com.ad2001.frida0x2.MainActivity&quot;);
    MainActivity.get_flag(4919);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굉장히 간단한 코드이다,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8PbYW/btsHJQG15wq/kvXKQ5EKup7iv3GiHVdEPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8PbYW/btsHJQG15wq/kvXKQ5EKup7iv3GiHVdEPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8PbYW/btsHJQG15wq/kvXKQ5EKup7iv3GiHVdEPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8PbYW%2FbtsHJQG15wq%2FkvXKQ5EKup7iv3GiHVdEPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;249&quot; height=&quot;527&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플래그를 얻었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #666666; text-align: left;&quot;&gt;※ 나는 아직 frida를 1퍼센트도 사용하지 못하고 있는 것 같다 흑흑 열심히 살아야지&lt;/span&gt;&lt;/p&gt;</description>
      <category>공부/안드로이드</category>
      <category>2</category>
      <category>Frida</category>
      <category>fridalabs</category>
      <category>후킹</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/130</guid>
      <comments>https://peraspera.tistory.com/130#entry130comment</comments>
      <pubDate>Fri, 31 May 2024 01:20:05 +0900</pubDate>
    </item>
    <item>
      <title>Frida-Labs 0x1</title>
      <link>https://peraspera.tistory.com/129</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://peraspera.tistory.com/92&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.11.24 - [공부/안드로이드] - frida 설치&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715568875591&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;frida 설치&quot; data-og-description=&quot;frida란.. frida를 설치해봅시다 pip install frida pip install frida frida-tools frida --version 설치한 frida 버전을 확인한다. getprop ro.product.cpu.abi 에뮬레이터의 비트를 확인한다. 설치한 frida 버전 &amp;amp; 에뮬레이터의&quot; data-og-host=&quot;peraspera.tistory.com&quot; data-og-source-url=&quot;https://peraspera.tistory.com/92&quot; data-og-url=&quot;https://peraspera.tistory.com/92&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cIotMt/hyV6iCfDOu/XH1gPEtLKZGja5Hzti4tIK/img.png?width=800&amp;amp;height=226&amp;amp;face=0_0_800_226,https://scrap.kakaocdn.net/dn/Bc0pE/hyV2wIVLr9/EGSFQyTTgNbFvy4XbRVxL1/img.png?width=800&amp;amp;height=226&amp;amp;face=0_0_800_226,https://scrap.kakaocdn.net/dn/biMtmF/hyV6ivtNpX/84vBxulcbovQ4RYDkHvuF1/img.png?width=1095&amp;amp;height=430&amp;amp;face=0_0_1095_430&quot;&gt;&lt;a href=&quot;https://peraspera.tistory.com/92&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://peraspera.tistory.com/92&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cIotMt/hyV6iCfDOu/XH1gPEtLKZGja5Hzti4tIK/img.png?width=800&amp;amp;height=226&amp;amp;face=0_0_800_226,https://scrap.kakaocdn.net/dn/Bc0pE/hyV2wIVLr9/EGSFQyTTgNbFvy4XbRVxL1/img.png?width=800&amp;amp;height=226&amp;amp;face=0_0_800_226,https://scrap.kakaocdn.net/dn/biMtmF/hyV6ivtNpX/84vBxulcbovQ4RYDkHvuF1/img.png?width=1095&amp;amp;height=430&amp;amp;face=0_0_1095_430');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;frida 설치&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;frida란.. frida를 설치해봅시다 pip install frida pip install frida frida-tools frida --version 설치한 frida 버전을 확인한다. getprop ro.product.cpu.abi 에뮬레이터의 비트를 확인한다. 설치한 frida 버전 &amp;amp; 에뮬레이터의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;peraspera.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;frida 설치는 위의 글을 참고하면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/DERE-ad2001/Frida-Labs&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715568979561&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - DERE-ad2001/Frida-Labs: The repo contains a series of challenges for learning Frida for Android Exploitation.&quot; data-og-description=&quot;The repo contains a series of challenges for learning Frida for Android Exploitation. - DERE-ad2001/Frida-Labs&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot; data-og-url=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yzEN5/hyV6hXDPtl/kwyhHOSwaTL6iHqkhAuqU0/img.png?width=1640&amp;amp;height=924&amp;amp;face=0_0_1640_924&quot;&gt;&lt;a href=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/DERE-ad2001/Frida-Labs&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yzEN5/hyV6hXDPtl/kwyhHOSwaTL6iHqkhAuqU0/img.png?width=1640&amp;amp;height=924&amp;amp;face=0_0_1640_924');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - DERE-ad2001/Frida-Labs: The repo contains a series of challenges for learning Frida for Android Exploitation.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The repo contains a series of challenges for learning Frida for Android Exploitation. - DERE-ad2001/Frida-Labs&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 링크에서 Challenge 0x1.apk 를 다운받아 진행한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5XNNY/btsHot6EUEk/Cycb4OnmF7QCWC6zyet8Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5XNNY/btsHot6EUEk/Cycb4OnmF7QCWC6zyet8Y1/img.png&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot; data-is-animation=&quot;false&quot; width=&quot;266&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5XNNY/btsHot6EUEk/Cycb4OnmF7QCWC6zyet8Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5XNNY%2FbtsHot6EUEk%2FCycb4OnmF7QCWC6zyet8Y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CA0Io/btsHmbUfrho/DxT56cKZm2TZmpWMtvsN7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CA0Io/btsHmbUfrho/DxT56cKZm2TZmpWMtvsN7K/img.png&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot; data-is-animation=&quot;false&quot; width=&quot;268&quot; height=&quot;567&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CA0Io/btsHmbUfrho/DxT56cKZm2TZmpWMtvsN7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCA0Io%2FbtsHmbUfrho%2FDxT56cKZm2TZmpWMtvsN7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;408&quot; height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;apk 실행 화면 / 숫자를 입력했을 때의 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각 apk를 실행했을 때의 화면, 숫자를 입력했을 때의 화면이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 jadx로 코드를 분석해보자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQzVVF/btsHnXAe8CX/bZed9dQVOKYjZ4RxCY6lk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQzVVF/btsHnXAe8CX/bZed9dQVOKYjZ4RxCY6lk1/img.png&quot; data-alt=&quot;AndroidManifest.xml&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQzVVF/btsHnXAe8CX/bZed9dQVOKYjZ4RxCY6lk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQzVVF%2FbtsHnXAe8CX%2FbZed9dQVOKYjZ4RxCY6lk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;674&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AndroidManifest.xml&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 분석할 때 가장 먼저 하는 것은 AndroidManifest.xml 파일을 보는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 파일에는 액티비티, 패키지명 등등 가장 기본적인 정보들이 명시되어 있기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 여기서 간단하게 메인액티비티가 존재한다는 점, 패키지 명이 com.ad2001.frida0x1 이라는 점을 확인한 후 넘어갔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액티비티가 하나밖에 존재하지 않기 때문에, 바로 메인액티비티를 분석해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 빨간 박스의 mainactivity 부분을 더블클릭하면 바로 옮겨갈 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;984&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAweoW/btsHnVPXHvQ/Ih8luq0rCXKqJd72KmGh31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAweoW/btsHnVPXHvQ/Ih8luq0rCXKqJd72KmGh31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAweoW/btsHnVPXHvQ/Ih8luq0rCXKqJd72KmGh31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAweoW%2FbtsHnVPXHvQ%2FIh8luq0rCXKqJd72KmGh31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1188&quot; height=&quot;984&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;984&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MainActivity 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽을 수 있는 부분만 읽더라도, 문제를 푸는 데 지장이 갈 정도로 어려운 것 같진 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, onCreate()는 액티비티를 생성할 때 실행되는 메소드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리의 메인액티비티가 생성될 때 onCreate()는 무조건 실행된다는 소리이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onCreate에서 중요하게 볼 부분은 아래의 빨간 두 박스인 것 같습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X30aC/btsHnKnwllQ/qofhxk4QE3XRVKq39jFFP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X30aC/btsHnKnwllQ/qofhxk4QE3XRVKq39jFFP1/img.png&quot; data-alt=&quot;oncreate, get_random&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X30aC/btsHnKnwllQ/qofhxk4QE3XRVKq39jFFP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX30aC%2FbtsHnKnwllQ%2Fqofhxk4QE3XRVKq39jFFP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1230&quot; height=&quot;546&quot; data-origin-width=&quot;1230&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;oncreate, get_random&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 우선 i에는 get_random() 함수의 결과가 들어가게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;get_random() 함수는 밑에서 확인할 수 있는데, 구글링 해보니 0 ~ 99 의 랜덤 값이 들어간다고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. onClick 함수의 if 문에서는 우리가 입력한 숫자를 check 함수를 통해 확인하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;check 함수의 첫 번째 인자에는 i, 두 번째 인자에는 우리가 입력한 숫자가 들어가는군요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 숫자가 아니라면 Enter a valid number !! 이라는 문구가 뜨게 되죠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 check 함수를 확인해봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9Omg4/btsHoIWVL1i/W9hjkzdUuFWNx6Lu2LjVF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9Omg4/btsHoIWVL1i/W9hjkzdUuFWNx6Lu2LjVF1/img.png&quot; data-alt=&quot;check&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9Omg4/btsHoIWVL1i/W9hjkzdUuFWNx6Lu2LjVF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9Omg4%2FbtsHoIWVL1i%2FW9hjkzdUuFWNx6Lu2LjVF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;583&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;check&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 입력한 인자값이 i2로 들어갑니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 i*2+4 == i2 라면 플래그를 얻을 수 있는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i의 값은 어플이 실행되었을 때 단 한 번 get_random을 통해 결정되기 때문에 값이 정해진 이후에는 변경되지 않습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i를 알아내기 위해서 get_random 함수를 후킹하는 방법을 사용해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;443&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mdUXO/btsHl5fsYQ2/stZKEHQJY9wrjAjPKrPrG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mdUXO/btsHl5fsYQ2/stZKEHQJY9wrjAjPKrPrG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mdUXO/btsHl5fsYQ2/stZKEHQJY9wrjAjPKrPrG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmdUXO%2FbtsHl5fsYQ2%2FstZKEHQJY9wrjAjPKrPrG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;404&quot; height=&quot;443&quot; data-origin-width=&quot;404&quot; data-origin-height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수에서 우클릭을 하면 프리다 코드를 작성해줍니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아주 좋은 기능이에요....&lt;/p&gt;
&lt;pre id=&quot;code_1715571194995&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import frida, sys

Hook_package = &quot;com.ad2001.frida0x1&quot;

def on_message(message, data):
    print(&quot;{} -&amp;gt; {}&quot;.format(message, data))

jscode = &quot;&quot;&quot;
    Java.perform(function() {
        let MainActivity = Java.use(&quot;com.ad2001.frida0x1.MainActivity&quot;);
        
        MainActivity.get_random.implementation = function () {
            console.log(`MainActivity.get_random is called`);
            let result = this[&quot;get_random&quot;]();
            console.log(`MainActivity.get_random result=${result}`);
            return result;
        };
    });
&quot;&quot;&quot;

try:
    device = frida.get_usb_device(timeout=10)
    pid = device.spawn([Hook_package])
    print(&quot;App is starting.. pid:{}&quot;.format(pid))
    process = device.attach(pid)
    device.resume(pid)
    script = process.create_script(jscode)
    script.on('message', on_message)
    print(&quot;[-] Running FRIDA&quot;)
    script.load()
    sys.stdin.read()

except Exception as e:
    print(e)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jscode의 &quot;&quot;&quot; &quot;&quot;&quot; 내부에 코드를 넣어줍니다. 이로서 코드까지 준비가 되었고, 후킹만 하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/llWUE/btsHmDQj4oj/BkwRkbrq59fmTtMDb0vAt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/llWUE/btsHmDQj4oj/BkwRkbrq59fmTtMDb0vAt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/llWUE/btsHmDQj4oj/BkwRkbrq59fmTtMDb0vAt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FllWUE%2FbtsHmDQj4oj%2FBkwRkbrq59fmTtMDb0vAt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;396&quot; height=&quot;199&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기기가 연결된 것을 확인한 후, 코드를 실행시키니 i의 값이 39임을 알게 되었습니다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋아요.. 그럼 우리는 i*2+4 == i2 에 따라서 39*2+4=82==i2 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqFfcT/btsHmX8Oywz/CsgainZNnfrOMyChaIxeW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqFfcT/btsHmX8Oywz/CsgainZNnfrOMyChaIxeW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqFfcT/btsHmX8Oywz/CsgainZNnfrOMyChaIxeW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqFfcT%2FbtsHmX8Oywz%2FCsgainZNnfrOMyChaIxeW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;330&quot; height=&quot;698&quot; data-origin-width=&quot;408&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;82를 입력하고 플래그를 얻을 수 있었습니다 (〜￣▽￣)〜&lt;/p&gt;</description>
      <category>공부/안드로이드</category>
      <category>Frida</category>
      <category>frida labs</category>
      <category>jadx</category>
      <category>프리다</category>
      <category>후킹</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/129</guid>
      <comments>https://peraspera.tistory.com/129#entry129comment</comments>
      <pubDate>Mon, 13 May 2024 12:42:38 +0900</pubDate>
    </item>
    <item>
      <title>XSS(Cross-Site Scripting)</title>
      <link>https://peraspera.tistory.com/128</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;내가 어제 공부를 진득히 안했다는 생각이 들어서, 카페에 왔다.&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;오늘은 조금 더 꼼꼼히 공부해야지&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XSS 취약점은 웹 리소스에 악성 스크립트가 삽입되기 때문에 발생한 취약점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 취약점은 &lt;span style=&quot;color: #006dd7;&quot;&gt;브라우저가 서버로부터 전달받은 컨텐츠를 신뢰한다는 점을 악용해 발생&lt;/span&gt;한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;악성 스크립트를 삽입하고, 이후 이용자가 악성 스크립트가 포함된 페이지를 방문하면 스크립트가 실행되어 쿠키와 세션이 탈취 될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비록 SOP 보안 정책이 등장하며 이전에 비해 까다로워졌지만, 그럼에도 우회하는 다양한 기술을 통해 XSS 공격이 끊기지 않고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트를 통해 웹 페이지를 조작하거나, 웹 브라우저의 위치를 임의의 주소로 변경할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 자바스크립트를 좀 알아야 공격할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;내가 외워야 할 자바스크립트&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;new Image()&lt;/span&gt; : 이미지 생성 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;src&lt;/span&gt; : 이미지의 주소 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;location.href&lt;/span&gt; : 이용자의 위치 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 코드를 실행할 수 있는 태그는 &amp;lt;script&amp;gt; 이외에도 상당수 존재한다. ex) onload, onerror, onfocus 등&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:javascript 스키마는 URL 로드 시 자바스크립트 코드를 실행할 수 있다. &amp;rarr; url을 속성 값으로 받는 a, iframe 태그 등에 사용 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rArr; 정규화를 이용해 우회할 가능성 존재&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 키워드를 필터링할 때는 정규표현식을 이용 &amp;rarr; 정규표현식 필터링 자체에 문제가 있을 경우 xss 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;문자열을 필터링 할 경우&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Unicode escape sequence로 우회 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; Computed member access : 속성 이름을 동적으로 계산&lt;/p&gt;
&lt;pre id=&quot;code_1713859888284&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;alert(document[&quot;\u0063ook&quot; + &quot;ie&quot;]);  // alert(document.cookie)
window['al\x65rt'](document[&quot;\u0063ook&quot; + &quot;ie&quot;]);  // alert(document.cookie)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;따옴표가 필터링 된 경우&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 템플릿 리터럴 사용 (내장된 표현식 허용) `를 이용해 선언할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1713861384628&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var foo = &quot;Hello&quot;;
var bar = &quot;World&quot;;
var baz = `${foo},
${bar} ${1+1}.`; // &quot;Hello,\nWorld 2.&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 따옴표와 `가 모두 필터링 된대도 문자열을 만들 수 있는 방법은 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; RegExp 객체 이용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; String.fromCharCode 함수 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;document.body.innerHTML&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트에서는 문서 내에 새로운 HTML 코드를 추가하는 것이 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; innerHTML로 HTML 코드를 실행할 때는 보안 상 &amp;lt;script&amp;gt; 태그를 삽입해도 실행이 안된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 이벤트 핸들러를 이용해 자바스크립트 코드 실행&lt;/p&gt;
&lt;pre id=&quot;code_1713864116701&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;document.body.innerHTML+=&quot;&amp;lt;img src=x: onerror=alert&amp;amp;#40;1&amp;amp;#41;&amp;gt;&quot;;
document.body.innerHTML+=&quot;&amp;lt;body src=x: onload=alert&amp;amp;#40;1&amp;amp;#41;&amp;gt;&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;this['al'+'ert'](this['docu'+'ment']['coo'+'kie']);&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발생 형태에 따라 다양한 종류로 구분된다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Stored : 서버의 db 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생하는 XSS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Reflected : 서버가 악성 스크립트가 담긴 요청을 출력할 때 발생. if 검색 결과가 응답에 포함되어 있을 경우 &amp;rarr; 이용자의 요청에 의해 발생!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DOM-based&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Universal&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;...&lt;/p&gt;</description>
      <category>공부/웹</category>
      <category>XSS</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/128</guid>
      <comments>https://peraspera.tistory.com/128#entry128comment</comments>
      <pubDate>Tue, 23 Apr 2024 19:01:03 +0900</pubDate>
    </item>
    <item>
      <title>BoB 12기 후기</title>
      <link>https://peraspera.tistory.com/127</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;BoB 수료한지 어연 두 달이 지났습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 그 동안 게임 했고, 몇 군데 지원서도 작성해보고, 개발 공부도 좀 해보고.. 열심히 놀았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요 근래 비오비 센터를 다시 방문할 일이 있어 가산디지털단지역에 내렸는데, 첫 면접 보러 갈때가 생각나는거에요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 모르게 웃으며 개찰구를 나왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 가디역에서 6개월 자취할 때는 도시가 회색이였습니다. &lt;s&gt;가디는 ㄹㅇ 잿빛 도시에요 왜그런지 모르겠는데 생기가 없음&lt;/s&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데도 불구하고 면접 보러 갔을 때의 긴장됨, 첫 교육을 들으러 가던 설레는 마음 등이 복합적으로 떠올랐습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1년 전과 비교해서 엄청나게 성장했냐! 이건 아닙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 멘토님들이 저희에게 주신 지식이 100이라 치면 10도 온전히 받아들이지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼에도 BoB는 아주 좋은 기회였고, 나머지 90이 존재한다..라는 사실을 알게 된 것으로 만족합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 제가 조금 더 준비가 되어있었던 사람이면 더 많은 것을 얻을 수 있지 않았을까 하고 아쉬운 부분도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BoB에서 멘토님들의 강의를 듣다보면, 정말 눈이 반짝이며 '와 저런게 존재한단말야?' 생각하며 설렜던 강의도 있었고, '아..진짜 뭔소린지 하나도 못알아먹겠다' 생각하며 눈에 초점이 사라지던 강의도 존재했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육 때는 정말 힘들고, 항상 피곤하고, 핸드폰을 누워서 보다가도 내가 언제 잠드는지조차 모르게 잠드는 생활을 했고, 프로젝트 때는 새로운 것을 받아들이기 위해 노력하고, 좌절하고, 스스로에게 화도 많이 났던 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좋은 동료들과 멘토님들을 만났고, 다시는 이만큼 좋은 기회가 올지도 모르겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 겸손하게, 나중에 이런 기회가 다시 온다면 30만큼을 내것으로 만들 수 있는 사람으로 성장하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 화이팅&lt;/p&gt;</description>
      <category>잡글</category>
      <category>후기</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/127</guid>
      <comments>https://peraspera.tistory.com/127#entry127comment</comments>
      <pubDate>Thu, 18 Apr 2024 16:58:58 +0900</pubDate>
    </item>
    <item>
      <title>백준 &amp;gt; 2309 일곱 난쟁이</title>
      <link>https://peraspera.tistory.com/126</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;643&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l5SHH/btsGj16enOR/AFeEy5EHU4blByllimQwHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l5SHH/btsGj16enOR/AFeEy5EHU4blByllimQwHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l5SHH/btsGj16enOR/AFeEy5EHU4blByllimQwHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl5SHH%2FbtsGj16enOR%2FAFeEy5EHU4blByllimQwHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1064&quot; height=&quot;643&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;643&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 브루트 포스도 조금 머리를 굴려서 더 효율적인 방법을 찾아야하는 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712204012527&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;arr = []

for i in range(9):
    arr.append(int(input()))

arr.sort()
cnt = sum(arr) - 100 #합이 cnt가 되는 두 수를 찾아야 됨

a = -1
b = -1

for i in range(9):
    for j in range(i + 1, 9):
        if arr[i] + arr[j] == cnt:
            a = i
            b = j

del arr[b]
del arr[a]
print(*arr, sep='\n')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/파이썬</category>
      <category>2309</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/126</guid>
      <comments>https://peraspera.tistory.com/126#entry126comment</comments>
      <pubDate>Thu, 4 Apr 2024 13:13:56 +0900</pubDate>
    </item>
    <item>
      <title>백준 &amp;gt; 7795 먹을 것인가 먹힐 것인가</title>
      <link>https://peraspera.tistory.com/125</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lddyf/btsGj3CEEsD/02Nb5tWyeJAh6xPCg3Ncdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lddyf/btsGj3CEEsD/02Nb5tWyeJAh6xPCg3Ncdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lddyf/btsGj3CEEsD/02Nb5tWyeJAh6xPCg3Ncdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flddyf%2FbtsGj3CEEsD%2F02Nb5tWyeJAh6xPCg3Ncdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;760&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어이없는 이유로 하루 동안 삽질했다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;start + end에 괄호를 사용하지 않았으며,, bin 함수의 인자로 brr을 주고서 arr로 작성했다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 lower bound 알고리즘에 대해 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 파이썬 라이브러리로 이미 제공한다는 사실도..!&lt;/p&gt;
&lt;pre id=&quot;code_1712167344810&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from sys import stdin

q = int(stdin.readline())

def bin(brr, k): #이진 탐색
    start = 0
    end = len(brr)

    while start &amp;lt; end:
        mid = (start + end) // 2 #mid = 2 arr[mid] = 3
        if k &amp;lt;= brr[mid]: #범위를 줄여서 검사해야됨
            end = mid
        else:
            start = mid + 1
    return end

for i in range(q):
    cnt = 0
    a, b = map(int, (input().split()))
    arr = list(map(int, stdin.readline().split()))
    brr = list(map(int, stdin.readline().split()))
    arr.sort()
    brr.sort()
    for j in range(a):
        if arr[j] &amp;lt;= brr[0]: #검사할 필요 x
            pass
        elif arr[j] &amp;gt; brr[-1]:
            cnt += b    
        else:
            cnt += bin(brr, arr[j])
    print(cnt)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/파이썬</category>
      <category>7795</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/125</guid>
      <comments>https://peraspera.tistory.com/125#entry125comment</comments>
      <pubDate>Thu, 4 Apr 2024 03:09:10 +0900</pubDate>
    </item>
    <item>
      <title>백준 &amp;gt; 2805 나무 자르기</title>
      <link>https://peraspera.tistory.com/124</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdcL0e/btsGhWXFBdg/zA6Gy4mnDJ2xPTa0JMJ1gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdcL0e/btsGhWXFBdg/zA6Gy4mnDJ2xPTa0JMJ1gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdcL0e/btsGhWXFBdg/zA6Gy4mnDJ2xPTa0JMJ1gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdcL0e%2FbtsGhWXFBdg%2FzA6Gy4mnDJ2xPTa0JMJ1gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1056&quot; height=&quot;789&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;789&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매개변수 탐색을 이용해서 푸는 문제이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이분 탐색이랑 비슷한듯 미묘하게 다른 느낌이다. 코드도 이분 탐색의 코드랑 비슷한 것 같다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최적화 문제를 결정 문제로 푸는 방법이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 최적화 문제 : 어떤 알고리즘의 최적의 솔루션을 찾는 법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; 결정 문제 : 답이 이미 결정되어 있다고 보고 문제를 푸는 법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712039806914&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n, m = map(int, input().split())
arr = list(map(int, input().split()))

arr.sort()

def parametric(arr, m):
    start = 0
    end = arr[-1]
    
    while end &amp;gt;= start: #조건 수정
        mid = (start + end) // 2
        sum = 0
        
        for i in range(len(arr)):
            if arr[i] &amp;gt; mid:
                sum += arr[i] - mid
        if sum &amp;gt; m:
            start = mid + 1
        elif sum == m:
            return mid
        else:
            end = mid - 1
    return end
    
print(parametric(arr, m))&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/파이썬</category>
      <category>2805</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/124</guid>
      <comments>https://peraspera.tistory.com/124#entry124comment</comments>
      <pubDate>Tue, 2 Apr 2024 15:37:36 +0900</pubDate>
    </item>
    <item>
      <title>백준 &amp;gt; 2869 달팽이는 올라가고 싶다</title>
      <link>https://peraspera.tistory.com/123</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duaqnP/btsGeNyJ8Qd/79IKTFN6rFFrZho073jFjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duaqnP/btsGeNyJ8Qd/79IKTFN6rFFrZho073jFjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duaqnP/btsGeNyJ8Qd/79IKTFN6rFFrZho073jFjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduaqnP%2FbtsGeNyJ8Qd%2F79IKTFN6rFFrZho073jFjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1055&quot; height=&quot;584&quot; data-origin-width=&quot;1055&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1711773162957&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import math

a, b, v = map(int, input().split())

n = v - a #올라가야 하는 거리 = 여기에 도착하면 끝남
m = a - b #하루에 올라가는 거리

print(math.ceil(n / m) + 1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 초과 때문에, while문을 이용하는 것이 아닌 약간의 생각을 해서 풀어야 하는 문제&lt;/p&gt;</description>
      <category>프로그래밍 언어/파이썬</category>
      <category>2869</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/123</guid>
      <comments>https://peraspera.tistory.com/123#entry123comment</comments>
      <pubDate>Sat, 30 Mar 2024 13:33:18 +0900</pubDate>
    </item>
    <item>
      <title>백준 &amp;gt; 9012 괄호</title>
      <link>https://peraspera.tistory.com/122</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pXzow/btsF88YQuvA/QcDBjiPv3wIKke4xKNq1C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pXzow/btsF88YQuvA/QcDBjiPv3wIKke4xKNq1C1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pXzow/btsF88YQuvA/QcDBjiPv3wIKke4xKNq1C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpXzow%2FbtsF88YQuvA%2FQcDBjiPv3wIKke4xKNq1C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1053&quot; height=&quot;664&quot; data-origin-width=&quot;1053&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스택 개념을 이용해 푼 문제&lt;/p&gt;
&lt;pre id=&quot;code_1711619522615&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())

for i in range(n):
    arr = input()
    new = 0
    if arr.count('(') != arr.count(')'):
        print('NO')
    else:
        list_arr = list(arr)
        for j in range(len(list_arr)):
            if list_arr[j] == '(':
                new += 1
            else:
                if new &amp;gt; 0:
                    new -= 1
                else:
                    print('NO')
                    break
        if j + 1 == len(list_arr) and new == 0:
            print('YES')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>프로그래밍 언어/파이썬</category>
      <category>9012</category>
      <category>백준</category>
      <category>파이썬</category>
      <author>B612</author>
      <guid isPermaLink="true">https://peraspera.tistory.com/122</guid>
      <comments>https://peraspera.tistory.com/122#entry122comment</comments>
      <pubDate>Thu, 28 Mar 2024 18:52:42 +0900</pubDate>
    </item>
  </channel>
</rss>