devflow.kr@:~#

Shinhan S Bank / JB Detection Bypass

REVERSING



Shinhan S Bank 5.1.0 5.1.0(2016.07.12) bypass the jailbreak detection

tested on iOS 9.3.3, iPhone SE, Pangu 9.3.3 JB v1.0 (semi-untethered);


Flex 3 Beta.


Target Class : SHBAppInfo

Target Method : callCustomeAlert

just pass-through

NOT TESTED FOR FULLY-FUNCTIONAL.

MAY CAUSE SIDE-EFFECTS.

저작자 표시 비영리 동일 조건 변경 허락
신고

winnetplus.exe

REVERSING

winnetplus.exe는 여러 웹하드 프로그램(필자가 쓰는 사이트는 파일노리이다. http://filenori.com)이 사용하는 일종의 그리드이다.


명목상으로는 유저간의 컴퓨터 리소스 공유이지만 전혀 필요하지 않는 파일도 ACCESS를 시도한다.



Procmon으로 살펴보니 상관없는 개인적인 파일들을 access한다.


또한 HKLM\SOFTWARE\Wow6432Node\FILESERVICE 의 레지스트리에



위와같은 내용들을 쓰기/읽기를 한다.


삭제하는법은 간단하다 WinnetPlusService 서비스를 중지하고, winnetplus.exe 프로세스를 종료한 후, winnetplus.exe를 삭제하면 된다.


간단하게 삭제와, 설치 방지 프로그램을 만들었다. .Net Framework 3.5이상만 있으면 가능하고 관리자 권한으로 실행하길 권장


v1.1  업데이트 내용.

- winnetplus.exe 폴더를 만들어 다음번에 자동으로 설치가 되지 않을 수 있도록 함.

- 예외를 추가하여 오류내용을 알려줌.




WinnetPlusKiller.exe





저작자 표시 비영리 동일 조건 변경 허락
신고

Themida Unpacking 관련 문서

REVERSING

여기저기 돌아다니면서 받음 Themida 언팩킹관련 문서입니다... 출저가 모두 기억안나나 대부분 tuts4you이며

동영상이 들어있는 파일들은 용량관계상 업로드하지 못하였습니다.


Manual Unpacking Themida - giv.rar


Themida WinLicense 1.1.0.0 - 2.1.0.0 (Unpacking).rar


Themida 2.x.x (Code Encrypt).rar


WinLicense 2.1.6.0 .NET Unpacking.rar


저작자 표시 비영리 동일 조건 변경 허락
신고

[Patch]네이버 소프트웨어 광고,툴바,클리너 제거

REVERSING




   # Naver Software Patcher

   네이버 소프트웨어 다운로더가 자동으로 설치하는 것을 방지합니다.
   추가로 광고를 제거합니다.

   패치대상 : NFileDownloader.exe
   기본위치 : C:\Users\Administrator\AppData\Roaming\NAVER\FileDownloader

   date : 20131213
   by devflow



NaverDowPatcheR.exe


닷넷프레임워크 3.5이상 필요.


p.s. PatcheR에서 R이 왜 대문자냐면.. 오타다



저작자 표시 비영리 동일 조건 변경 허락
신고

간단한 API 후킹으로 현재 작업 숨기기

REVERSING


제목은 거창하지만 간단하게 GetForegroundWindow()를 언제나 NULL로 반환하게 바꾸어주는 dll 과 exe입니다.


즉, 현재 맨앞의 윈도우의 핸들값을 NULL로 돌려주어 뭘 하는지 숨기는 기능(?)입니다.




hook_getfore.dll -  GetForegroundWindow 의 후킹에 관한 dll 파일입니다.

injector.exe - 간단하게 dll을 injection 하는 실행파일입니다.


사용법은 injector.exe [인젝션대상exe] [인잭션할dll파일] 입니다.  ex) injector.exe bitclt.exe hook_getfore.dll



모든 파일은 VC++ 2012로 작성되었습니다.



hook_getfore.dll


injector.exe


저작자 표시 비영리 동일 조건 변경 허락
신고

.net(C#, vb)으로 작성된 exe 디컴파일 보호하기

REVERSING

[사진1- 필자의 프로그램인 2012/05/30 - [유용한 자료] - XML 자동 업로더기 XmLeader v1.0를 reflector로 디컴파일 한결과 소스가 전부 그대로 나와버린다.)


.net의 특성상, reflector로 exe를 열면 소스코드가 그대로 나오는 대참사가 발생한다.ㅜ

이를 방지하기 위하여 많은 방법이 있는데 그 방법을 소개하기로 한다.


1. 프로그래머의 노력(?)

 - 말 그대로 노력이다. 그것은 바로 최대한 디컴파일 후 해커가 알아보기 어렵도록 소스를 작성한다던가.

   그런 종류의 일이다.

 - 근데 이건 좀 너무하는것 같다.


2. CryptoObfuscator 의 이용.


(사진2. Crypto Obfuscator for .Net v2011의 메인화면)


- 위와 같이 생긴 툴이다. 엄청난 기능을 제공한다.

- 메서드의 이름을 간단화 (ex A, B, ab1, ab2 ... 등)으로 바꾸어 주거나, String의 암호화, Text로 표현할 수 없게끔 변경하여 준다, 

- 이 툴은 정말 유용하며, 사용도 편리하고, 많은 기능이 제공된다.

- 자세한 사항 또는 무료 체험판 다운로드는 (http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm)

- 그외 VS제품군에게 유용한 기능을 제공하는 소프트웨어가 있다.


3. exe의 packing.

 - 단순하지만 또한 강력하다.

 - exe packer는 매우 다양하므로 직접 검색하여 찾아보기를 권장한다.


 4. 다른 언어의 이용..

  - 이라곤 하지만 어느 언어든 디컴파일은 어느정도의 수준까지 가능하다. 하지만 이런식으로 전체소스가 다 나오는 정도의 대형 참사는 발생하지는 않을 것이다.



* 프로그램의 요청은 받지않습니다, 구글링 몇번만 하면 됩니다.



저작자 표시 비영리 동일 조건 변경 허락
신고

리그 오브 레전드 (League of Legends) 취약점 (Exploit)

REVERSING

조금 시대가 많이 지났긴하지만 여전히 인기가많은 게임인 리그 오브 레전드의 취약점을 알아보겠다.


특이하게 리오레는 adobe air를 이용하여 서버와 통신을 하게 되면 inet 과같은 IE 설정을 그대로 사용하게 된다.


이를 이용하여 IE에서 프록시를 설정해주고,  로그인할 때 Paros로 Trap 하면 아래와 같은 내용이 나온다.


POST https://검열 HTTP/1.1

Referer: app:/LolClient.swf/[[DYNAMIC]]/8

Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, text/css, image/png, image/jpeg, image/gif;q=0.8, application/x-shockwave-flash, video/mp4;q=0.9, flv-application/octet-stream;q=0.8, video/x-flv;q=0.7, audio/mp4, application/futuresplash, */*;q=0.5

Content-Type: application/x-www-form-urlencoded

Content-Length: 47

x-flash-version: 11,1,102,58

User-Agent: Mozilla/5.0 (Windows; U; ko-KR) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/3.1


payload=user%3D아이디%2Cpassword%3D패스워드


위와 같이 https 라지만 곧바로 노출이 된다. 이를 이용하여 로그인시 아이디와 패스워드를 가져올 수 있게된다.


리오레가 설치된 폴더인 Riot Games\League of Legends KR 에서 


RADS\projects\lol_air_client_config_kr\releases\0.0.0.10\deploy라는 폴더에는


lol.properties 라는 파일이 있는데. 이 파일안에는 


계정인증과 비롯한 각종 리오레 인증서버의 주소가 저장되어있다.


여기서 서버주소인 lq_uri를 다른 서버로 바꾸어 우회해서 아이디와 비밀번호를 가져온 후, 


그대로 본서버(원래 인증서버)로 다시 연결 시켜주면 사용자 모르게 아이디와 비밀번호를 가져올 수 있다.




이글은 2012 - 6 - 20 기준으로 작성된 취약점입니다.

저작자 표시 비영리 동일 조건 변경 허락
신고

com.android.vending.check_license

REVERSING


마켓종료 -> 실행 ????
저작자 표시 동일 조건 변경 허락
신고

Berryz Hooking Project 외전2 -"2번인코딩?"

REVERSING

SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 한후에
또 인수들은 urlencode(utf8)했으니 또 인코딩이 깨졌다..

이것도 모르고 삽질을 존나 했네.. 아

화난다..


뭐 해결했으니ㅋ!
저작자 표시 동일 조건 변경 허락
신고

Berryz Hooking Project 외전 - "인코딩문제"

REVERSING

일단. 속도, 인원수 문제를 해결하고, 열심히 코딩중에 있었지만
한가지 난관에 봉착했따. 이게 VB의 고질적인 문제인 API이용하면 한글이 깨진다는 그것인가?
winhttp 를 이용해서, 특정 php 불러오면 한글이 깨지는것이였다.
물론 이런 상황에 많이 당해봐서. 간단하게 CP를 주거나 StrConv를 이용해 변환을 시도해보았다.
하지만 전혀 깨진 글자는 복구되질 않았다. 그래서 원본자체가 깨졌나? 하고 IE로 보면
이상하게 이건 정상이 아닌가?
이상하다 정말 이상해... 그래서 고민고민 2틀은 한거같다. 그렇지 ! 프로그래밍은 언제나 꼼수였다
꼼수를 발휘해야했다. 그래서 참조에 WebBrowser를 넣엇다. 간단하다.. 아주 간단해
바로 WebBrowser의 위대한 디코딩실력을 빌리기로했다. 소스로 구현하면 빠르고 좋겠지만.
내 프로그램 only windows 라는걸 치면 호환성 문제도 없을거라 판단.
하지만 예전브터 ieframe.dll 은 많은 오류와 불안정을 초래해서, 사용하기가 꺼려왔지만 뭐 상황이
상황이니만큼 사용하기로했다.

w.navigate -> responsecomplete -> documentElement.innerHTML -> split

자..

---------------------------
BerryzManager
---------------------------
re_game*0*http://112.166.176.206:1649/*0*http://112.166.176.206:1649/ 온라이너*0*http://112.166.176.206:1649/*0*http://112.166.176.206:1649/ 날오프로*0*http://112.166.xx.206:1649/*0*http://112.166.1xx.206:1649/
---------------------------
확인  
---------------------------


ㅠㅠ.. 드디어 됬다 이 지긋한 싸움에서 드디어 승리했다..
그러고보니 저 인코딩탓은, 서버에있는것도 같아서.. 서버를 구하는중이다,
근데 뭐 이래저래 다 안된다고 하는데 이런 스벌ㄹㄹㄹㄹ
저작자 표시 동일 조건 변경 허락
신고

Berryz Hooking Project 2 - "아시발됫따"

REVERSING


ReadProcessMemory 안된다.... SendMessage도 안된다... 흠 이걸 조합해서 해봐야겠다.
일단 StatusBar의 메모리구조를 알아내야한다.. 적절하게 체트엔진으로 열어보았다.

워..

뭐 시발 생각보다간단했따. 그렇다. 일단 StatusBar의 PID를 구해왔다.

OpenProcess(MAXIMUM_ALLOWED, False, pid)

일단 메모리작업으로는 구하려는 Status의 Text의 길이를 알 수 없었다. 그래서
여기서는 SendMessage의 힘을 빌리기로 했따.

SendMessage(xxxx, &H403, 1, 0)

물론 저 구한값에 +1을 해줘야한다. 그리고는

SendMessage xxx, &H402, 1, ByVal ptr_sBuffer

이렇게 하고 값이 안나왔다. 뭐가 문제였을까.. 이론상으로 맞는데??


0124 추가---------

아 그렇다 메모리 작업이라 해놓고 sendmessage 작업을 한거네 ㅡ

process, ByVal ptr_sBuffer, ByVal sBuffer, sBufferSize, 0

자 됬다. 완벽하게 얻어졋다.


이렇게 함으로써 드디어 베리즈는 나에게 굴복했다 아감격 이맛에 프로그래밍한다.

저작자 표시 동일 조건 변경 허락
신고

Berryz Hooking Project 1 - "플러그인"

REVERSING

안녕하세요,

작동원리라고 해봐야 일반적인 web-server 모듈보 다 좀 적은 수준의 기능입니다.

1. 특정 형태의 URL에 대한 요청을 받고, (이건 베리 즈 웹쉐어 내부에서 전달해 줌)

2. 이걸 처리한 후,

3. 해당 요청에 대한 연결에 응답을 보내주는(HTTP 응답 형태로) 기능을 작성하는 것 뿐입니다.



제작 방법에 대해서는 예전에 정리하려고 했지만, 현재 모든 구성원이 회사 원이거나, 병역 특례 중이라 한동안 정리하는 건 힘들 것 같습니다.


-------------------------

이를 토대로 만들어보기로 하자.


Depends로 일단.. Rename.dll 을 열어보았다.

Finalize
GetPlugInAuthor
GetPlugInName
GetPlugInType
GetPlugInVersion
GetRequiredAuthority
Initialize
OnRequest

같은 함수들이있다.



Finalize
GetPlugInAuthor
GetPlugInName
GetPlugInType
GetPlugInVersion
GetRequiredAuthority

Initialize
OnRequest

일단 필요없어 보이는거 제쳐보고....


주목해봐야할것. Finalize Initialize OnRequest (특정 형태의 URL에 대한 요청을 받고, (이건 베리 즈 웹쉐어 내부에서 전달해 줌)



아니, 갑자기 생각남. 플러그인은 아닌듯하다. 전혀 엉뚱한방향으로 가고있는거같다.
저작자 표시 동일 조건 변경 허락
신고

(舊) 다음 뮤직(BGM Shop) 핵

REVERSING

이것도 현재 개편이되어 이방법은 먹히질 않습니다.

소스가 더럽네요;;

그것도 저급언어;;

몇년전에 만든거라서

Dim CurrentPage As Integer


Private Sub cmdNext_Click()
    On Error Resume Next
    CurrentPage = CurrentPage + 1
    lstSong.ListItems.Clear
    Dim htMl As String, curSng As Song
    htMl = ctrlWeb1.GetSite("http://mall.planet.daum.net/mall/ItemShop/SearchBGM.jsp?type=BGM&searchCategory=" & SearType & "&keyword=" & URLEncode(txtEnT.Text) & "&page=" & CurrentPage, "GET", "Referer: http://mall.planet.daum.net/mall/ItemShop/BGM.jsp")
    htMl = Mid(htMl, InStr(htMl, ""), Len(htMl))
    
    Do Until InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") = 0
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        curSng.Number = Replace(Mid(htMl, 1, InStr(htMl, Chr(34)) - 1), "&cateid=", "")
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Title = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        htMl = Mid(htMl, InStr(htMl, "") + Len(""), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Artist = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        lstSong.ListItems.Add(, ":" & curSng.Number, curSng.Title).SubItems(1) = curSng.Artist
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
    Loop
    
    htMl = ctrlWeb1.GetSite("http://mall.planet.daum.net/mall/ItemShop/SearchBGM.jsp?type=BGM&searchCategory=BY_ARTIST&keyword=" & URLEncode(txtEnT.Text) & "&page=" & CurrentPage, "GET", "Referer: http://mall.planet.daum.net/mall/ItemShop/BGM.jsp")
    htMl = Mid(htMl, InStr(htMl, ""), Len(htMl))

    lbPage = Format(CurrentPage, "00#")
    
    
End Sub

Private Sub cmdPrev_Click()
    On Error Resume Next
    If CurrentPage = 1 Then: MsgBox "처음 페이지 입니다.", vbCritical, "알림": Exit Sub
    CurrentPage = CurrentPage - 1
    lstSong.ListItems.Clear
    Dim htMl As String, curSng As Song
    htMl = ctrlWeb1.GetSite("http://mall.planet.daum.net/mall/ItemShop/SearchBGM.jsp?type=BGM&searchCategory=" & SearType & "&keyword=" & URLEncode(txtEnT.Text) & "&page=" & CurrentPage, "GET", "Referer: http://mall.planet.daum.net/mall/ItemShop/BGM.jsp")
    htMl = Mid(htMl, InStr(htMl, ""), Len(htMl))
    
    Do Until InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") = 0
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        curSng.Number = Replace(Mid(htMl, 1, InStr(htMl, Chr(34)) - 1), "&cateid=", "")
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Title = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        htMl = Mid(htMl, InStr(htMl, "") + Len(""), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Artist = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        lstSong.ListItems.Add(, ":" & curSng.Number, curSng.Title).SubItems(1) = curSng.Artist
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        
    Loop
    
    lbPage = Format(CurrentPage, "00#")
    
    
End Sub

Private Sub Command1_Click()
    fDummy.Show
    
End Sub

Private Sub Form_Load()
    On Error Resume Next

    lstSong.ColumnHeaders(1).Width = (lstSong.Width / 3) * 2
    lstSong.ColumnHeaders(2).Width = lstSong.Width / 3
    searchType.ComboItems.Add , , "제목"
    searchType.ComboItems.Add , , "가수"
    searchType.ComboItems.Add , , "앨범"


End Sub

Private Sub Label2_Click()
fDummy.Show

End Sub

Private Sub Label1_Click()
Shell "explorer http://youdie.net/"

End Sub

Private Sub lstSong_ItemClick(ByVal Item As MSComctlLib.ListItem)
On Error GoTo errType
    fDownLoad.Show
    fDownLoad.lstDown.ListItems.Add(, Item.Key, Item.Text & "-" & Item.SubItems(1)).Checked = True
'    fBeta.Show
'    fBeta.sngNumber = Mid(Item.Key, 2, Len(Item.Key))
'
Exit Sub
errType:
    If Err.Number = 35602 Then
        MsgBox "이미 추가되어있는 곡입니다.", vbInformation, "알림"
    End If
End Sub

Private Sub txtEnT_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    On Error Resume Next
    CurrentPage = 1
    lstSong.ListItems.Clear
    Dim htMl As String, curSng As Song
    htMl = ctrlWeb1.GetSite("http://mall.planet.daum.net/mall/ItemShop/SearchBGM.jsp?type=BGM&searchCategory=" & SearType & "&keyword=" & URLEncode(txtEnT.Text), "GET", "Referer: http://mall.planet.daum.net/mall/ItemShop/BGM.jsp")
    htMl = Mid(htMl, InStr(htMl, ""), Len(htMl))
    
    Do Until InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") = 0
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        curSng.Number = Replace(Mid(htMl, 1, InStr(htMl, Chr(34)) - 1), "&cateid=", "")
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Title = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        htMl = Mid(htMl, InStr(htMl, "") + Len(""), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "title=" & Chr(34)) + Len("title=" & Chr(34)), Len(htMl))
        curSng.Artist = Mid(htMl, 1, InStr(htMl, Chr(34)) - 1)
        lstSong.ListItems.Add(, ":" & curSng.Number, curSng.Title).SubItems(1) = curSng.Artist
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
        htMl = Mid(htMl, InStr(htMl, "/mall/ItemShop/oneNone.jsp?prod_seq=") + Len("/mall/ItemShop/oneNone.jsp?prod_seq="), Len(htMl))
    Loop

    lbPage = Format(CurrentPage, "00#")
    
End If
End Sub

Function SearType() As String
    On Error Resume Next
    Select Case searchType.Text
    Case "제목"
        SearType = "BY_NAME"
    Case "가수"
        SearType = "BY_ARTIST"
    Case "앨범"
        SearType = "BY_ALBUMNAME"
    End Select
End Function

다운로드 부분
Dim DwnHeader As String
Private Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long)
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const PBM_SETBARCOLOR = &H409
Const PBM_SETBKCOLOR = &H2001
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260
Private Declare Function SHBrowseForFolder Lib "shell32" (lpBI As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Type BrowseInfo
   hwndOwner      As Long
   pIDLRoot       As Long
   pszDisplayName As Long
   lpszTitle      As Long
   ulFlags        As Long
   lpfnCallback   As Long
   lParam         As Long
   iImage         As Long
End Type

Function ReciveFolder() As String

   Dim lpIDList As Long
   Dim sBuffer As String
   Dim szTitle As String
   Dim tBrowseInfo As BrowseInfo

   szTitle = "음악을 저장할 곳을 선택하세요."
   With tBrowseInfo
      .hwndOwner = Me.hWnd
      .lpszTitle = lstrcat(szTitle, "")
      .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
   End With

   lpIDList = SHBrowseForFolder(tBrowseInfo)

   If (lpIDList) Then
      sBuffer = Space(MAX_PATH)
      SHGetPathFromIDList lpIDList, sBuffer
      sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
      SaveSetting "ComeMusic", "Dir", "Path", sBuffer
      ReciveFolder = sBuffer
   End If

End Function



Function isRunning(curPID As Long) As Boolean
    Dim ret&
    If curPID = 0 Then
    Else
        SetLastError 0
        ret = OpenProcess(1, 0, curPID)
        If Err.LastDllError = 0& Then
            CloseHandle ret
            isRunning = True
        End If
    End If
End Function

Private Sub cmdDown_Click()
On Error GoTo erTab
cmdDown.Enabled = False
cmdMore.Enabled = False

If Dir(txtPath.Text, vbDirectory) = "" Or txtPath.Text = "" Then
    MsgBox "저장 폴더가 존재하지 않습니다.", vbExclamation, "다운로드"
    GoTo EndOfWork
End If

Dim wN As Integer

Do
in_Rabel:
    
    wN = wN + 1
    
    If lstDown.ListItems.Count < wN Then: GoTo EndOfWork
    
    If lstDown.ListItems(wN).SubItems(1) = "완료." Then
        GoTo Skip_Rabel
    End If
    
    lstDown.ListItems(wN).Tag = "ing"
    lstDown.ListItems(wN).ForeColor = RGB(255, 204, 51)
    
    lstDown.ListItems.Item(wN).SubItems(1) = "다운로드 준비중..."
    Dim rBuffer As String, fURL As String
    IGet.Execute "http://mall.planet.daum.net/mall/bgm/preview.jsp?prodSeq=" & Mid(lstDown.ListItems.Item(wN).Key, 2, Len(lstDown.ListItems.Item(wN).Key)), , , DwnHeader
    
    Do Until IGet.StillExecuting = False: DoEvents: Loop
    rBuffer = IGet.GetChunk(False, icString)
    rBuffer = Mid(rBuffer, InStr(rBuffer, "") - 1)
    rBuffer = Mid(rBuffer, InStr(rBuffer, "") + Len(""), Len(rBuffer))
    'lArti.Caption = Mid(rBuffer, 1, InStr(rBuffer, "") - 1)
    rBuffer = Mid(rBuffer, InStr(rBuffer, ""))
    Const SEND_DATA_SIZE As Long = 64
    Dim fName As String, tName As String
    Dim hFile As Integer, TempFileLen As Long, lDownloadeD As Long, FileLens As Long
    Dim Buffer() As Byte
    tName = ""
    hFile = 0:    TempFileLen = 0:    lDownloadeD = 0:    FileLens = 0:    Erase Buffer:    fName = ""
    iFile.Cancel
    iFile.Execute fURL, "GET"
    Do Until iFile.StillExecuting = False: DoEvents: Loop

    TempFileLen = CLng(iFile.GetHeader("Content-Length"))

    FileLens = TempFileLen

    hFile = FreeFile
    
    tName = Format(Now, "DDHHMMSS")
    lstDown.ListItems.Item(wN).SubItems(1) = "다운로드중... "
    Pr.Value = 0
    Pr.Max = FileLens / 10
    Open txtPath.Text & "\" & tName & ".wma" For Binary Access Write As #hFile
        Do While FileLens >= lDownloadeD
            Buffer() = iFile.GetChunk(SEND_DATA_SIZE, icByteArray)
            Put #hFile, , Buffer
            lDownloadeD = lDownloadeD + SEND_DATA_SIZE
            ' (lDownloadeD / FileLens) * 100 & "%"
            On Error Resume Next
            Pr.Value = (lDownloadeD / 10) - 64
            On Error GoTo erTab
            DoEvents
        Loop
    Close #hFile

    If lstDown.ListItems.Item(wN).Checked Then
        lstDown.ListItems.Item(wN).SubItems(1) = "변환중.. 1/3"
        Dim pId As Long
        pId = Shell(App.Path & "\ffmpeg.exe -i " & Chr(34) & txtPath.Text & "\" & tName & ".wma" & Chr(34) & " -vn -f wav " & Chr(34) & txtPath.Text & "\" & tName & ".wav" & Chr(34), vbHide)
        Do Until isRunning(pId) = False
            DoEvents
        Loop
        lstDown.ListItems.Item(wN).SubItems(1) = "변환중.. 2/3"
        Kill txtPath.Text & "\" & tName & ".wma"
        pId = Shell(App.Path & "\lame.exe -V 6 " & Chr(34) & txtPath.Text & "\" & tName & ".wav" & Chr(34) & " " & Chr(34) & txtPath.Text & "\" & FixFileName(lstDown.ListItems.Item(wN).Text) & ".mp3" & Chr(34), vbHide)
        Do Until isRunning(pId) = False
            DoEvents
        Loop
        Kill txtPath.Text & "\" & tName & ".wav"
    Else
        Name txtPath.Text & "\" & tName & ".wma" As txtPath.Text & "\" & FixFileName(lstDown.ListItems.Item(wN).Text) & ".wma"
    End If
    lstDown.ListItems(wN).Tag = ""
    lstDown.ListItems.Item(wN).SubItems(1) = "완료."
    lstDown.ListItems(wN).ForeColor = vbBlue
Skip_Rabel:
Loop



EndOfWork:
cmdDown.Enabled = True
cmdMore.Enabled = True
iFile.Cancel
Exit Sub
erTab:
lstDown.ListItems(wN).SubItems(1) = "실패 : " & Err.Number
lstDown.ListItems(wN).ForeColor = vbRed
GoTo in_Rabel
End Sub

Private Sub cmdMore_Click()
txtPath.Text = ReciveFolder
End Sub

Private Sub Form_Load()
On Error Resume Next
mnuItem.Visible = False
lstDown.ColumnHeaders(1).Width = (lstDown.Width / 3) * 2
lstDown.ColumnHeaders(2).Width = lstDown.Width / 3
DwnHeader = "Accept: */*" & vbCrLf & "User-Agent: Windows-Media-Player/10.00.00.3319" & vbCrLf & "UA-CPU: x86" & vbCrLf & _
"Host: mall.planet.daum.net" & vbCrLf
txtPath.Text = GetSetting("ComeMusic", "Dir", "Path", App.Path)

    PostMessage Pr.hWnd, PBM_SETBARCOLOR, 0, RGB(255, 204, 51)
    PostMessage Pr.hWnd, PBM_SETBKCOLOR, 0, RGB(0, 0, 0)
End Sub

Function FixFileName(chFile As String) As String
On Error Resume Next
        chFile = Replace(chFile, "\", "_")
        chFile = Replace(chFile, "/", "_")
        chFile = Replace(chFile, "<", "_")
        chFile = Replace(chFile, ">", "_")
        chFile = Replace(chFile, "|", "_")
        chFile = Replace(chFile, "*", "_")
        chFile = Replace(chFile, ":", "_")
        chFile = Replace(chFile, "?", "_")
        FixFileName = Replace(chFile, Chr(34), "_")
End Function

Private Sub lstDown_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error GoTo fcError
If Button <> 2 Then: Exit Sub
Dim test As String: test = lstDown.SelectedItem.Text
If lstDown.ListItems(wN).Tag = "ing" Then: Exit Sub

PopupMenu mnuItem
Exit Sub
fcError:

End Sub
저작자 표시 동일 조건 변경 허락
신고

(舊) 네이버 뮤직핵

REVERSING

예전 Naver Music Player 핵입니다.

현재는 네이버가 웹플레이(Flash)방법으로 바꿔 이방법은 먹히지 않네요..

WriteINIValue App.Path & "\NaverPlayer.ini", "PATH", "SONGINFOPATH", "http://localhost:8280/$SONGID$"

Dim PBI As String


Private Sub Form_Load()
Shell "explorer http://music.naver.com/", vbNormalFocus


Wsk.LocalPort = 8280
Wsk.Listen

WriteINIValue App.Path & "\NaverPlayer.ini", "PATH", "SONGINFOPATH", "http://localhost:8280/$SONGID$"
End Sub

Private Sub Image1_Click()
frmInfor.Show

End Sub

Private Sub Wsk_ConnectionRequest(ByVal requestID As Long)
Wsk.Close
Wsk.Accept requestID

End Sub

Private Sub Wsk_DataArrival(ByVal bytesTotal As Long)
Dim rtVal As String, SongInfor As String
Wsk.GetData rtVal '  GET /176038_1_01 HTTP/1.1

rtVal = Mid(rtVal, 6, Len(rtVal))
rtVal = Left(rtVal, InStr(rtVal, " ") - 1)

Dim nHt As New WinHttp.WinHttpRequest

nHt.Option(WinHttpRequestOption_URLCodePage) = 949
nHt.Open "GET", "http://npis.mnet.com/ISZone/PlayBackInfo_Lst.asp?sid=" & rtVal, "true"
nHt.Send
nHt.WaitForResponse

SongInfor = nHt.ResponseText


SongInfor = Replace(SongInfor, "free=" & Chr(34) & "0" & Chr(34), "free=" & Chr(34) & "1" & Chr(34))
SongInfor = Replace(SongInfor, "title=" & Chr(34), "title=" & Chr(34) & "[하앍]")


Wsk.SendData SongInfor

'http://npis.mnet.com/ISZone/PlayBackInfo_Lst.asp?sid=

End Sub

Private Sub Wsk_SendComplete()
Wsk.Close
Wsk.Listen

End Sub

저작자 표시 동일 조건 변경 허락
신고

OllyDbg (OllyDebug) BETA 2 발표 (12월 3일)

REVERSING

<OllyDbg 2.0 BETA K의 화면>

드디어 업데이트가 되었군요..

망할놈의 올리디버그.


아직 플러그인을 지원하지않습니다.

그런데 웃긴게 Themida로 패킹된 EXE가 그냥 분석만으로도 읽어지는군요..


읭..!

업데이트 내용입니다.
The last beta, with rudimentary help (and I hope to improve it in the release). The only really new feature (commented out in the second beta) is debugging of child processes. Other modifications are evolutional: much more stable (and tricky) debugging engine, more known functions, more or less consistent support for UNICODE and UTF8 in dialogs and comments, many bugfixes.
Please check this version thoroughly and don't forget to report all errors, including grammatical. The release will follow soon!


다운로드

공식홈페이지
http://www.ollydbg.de/


저작자 표시 동일 조건 변경 허락
신고

WinHTTP (WinHTTP Services)의 비밀

REVERSING

Windows Hyper Text Transfer Protocal Services 에대한 이야기하나합니다.


이것이지요..

그런데 이 WinHTTP는 따로 프록시를 설정하지 않는 이상.. 익스플로러의 설정으로도 프로토콜이 정해지지 않습니다..!


자 한번 보죠.

일단 VB로 소스를 작성해보았습니다.
Dim wHTTP As New WinHttp.WinHttpRequest
wHTTP.Open "GET", "http://www.naver.com", "true"
wHTTP.Send
wHTTP.WaitForResponse
MsgBox LenB(wHTTP.ResponseText)

 

한번 실행을 해보았습니다.



잘나옵니다.

자 이렇게하고 Paros툴로 프록시를 설정하고 해보았습니다.


하지만.. 전혀 탐지되지않습니다.



혹시 모르니 inet으로 다시작성하였습니다.


Dim s As String
Inet1.Execute "http://www.naver.com", "GET"
Do While Inet1.StillExecuting
DoEvents
Loop
s = Inet1.GetChunk(0)
MsgBox LenB(Inet1.GetChunk(0))


이렇게 하고 Paros로 Trap을 해보았습니다.
이렇게 잘잡힙니다.
 
 
결국 WinHTTP는 개발자가 프록시를 설정하지 않는이상,
크랙커가 강제로 설정하지 않는 이상 프록시를 이용하는 방법의 디버깅은 불가능하지 않을까
생각합니다.
 
[Paros - 보안 평가 어플리케이션으로 무료로 배포되고있습니다.]
[WinHTTP - 윈도우에서 기본(?)으로 제공하는 dll입니다.]
[MSINET - 윈도우에서 기본으로 제공하는 DLL,OCX입니다.]
 
기타 잘못된점이나 추가할점은 댓글로 달아주세요~
저작자 표시 동일 조건 변경 허락
신고

티스토리 툴바