방명록


오토핫키에서 c#코드 사용하기
다시 볼 수 없나요

2021.01.03 10:23
안녕하세요

비활성 범위 서치를 해보려다.. 방문하게 되었습니다.
https://blog.plorence.kr/563
소스에
img_src_rectangle(image,hwnd,byref vx, byref vy,vvx,vvy,eex(서치할범위끝x좌표),eey(서치할범위끝y좌표) {
pToken:=Gdip_Startup()
pBitmapHayStack1:=Gdip_BitmapFromhwnd(hwnd)
pBitmapNeedle:=Gdip_CreateBitmapFromFile(image)
vw:=eex-vvx (서치할범위끝x좌표 - 시작좌표)
vh:=eey-vvy (서치할범위끝y좌표 - 시작좌표)
pBitmapHayStack:=Gdip_CropImage(pBitmapHayStack1, vvx, vvy, vw, vh)

이렇게만 변경을 해서 범위를 정해서 서치를 해보려고 했는데 작동이 제대로 안되는거 같습니다.
인식이 되었다가 안되었다가... 어쩔때는 안되기도...
이것도 버그인지... -ㅅ-a 좋은방법 없을까요?

2020.12.16 11:57
안녕하세요

안녕하세요 플로렌스님
오핫 단톡에서도 유능하신실력과 예전에 도움도몇번받았던 기억이나네요 ㅎㅎ

다름이아니고 오토핫키와 그외에 여러 언어까지 잘하시는거로 알고있어서 글한번 남겨봅니다

제가 생각해낸아이디어는아니고 최근 제작한 프로그램이 디컴파일당해서 마음이아팠는데 아는분이 [매뉴얼 매핑] 이란걸알려줬습니다
검색해본결과 Dll injection과 관련이있어보이는데 제가혼자해보려했지만 C++ 관련인것같기도해서요

지인분이 알려준 방법으로는
소스에 Key를 하나 넣고 암호화를 하라
소스에 cpu를 하나 만들면되는데
winhttp
winnet
kernel
ntdll
이 4가지만 매핑시키면 될것이다 매핑관련 함수는 윈도우가 지원하는게 있을거고 그걸 dllcall해서 사용하면 될거다 디컴파일시 난이도가 확오를거다

아무리 암호화 패킹 거쳐도 오토핫키는 결국 실행후 서스펜드하면 메모리에 전부 소스가 뜨는데
소스가 메모리에 뜨기전에 ReadFile 이라는 함수로 메모리에 덤핑시키는거고 이건 KERNEL32.Dll 하위 함수로알고있다
ReadDile로 읽어서 메모리에 쓸때
각 문자열에 x03(곱하기 연산) 이런식으로 연산후직접 그 코드 실행될때면 다시 03을
나눠서 연산시키면 알아보기 많이 힘들것이다.

더욱 쉽게말해 메모리를 읽어올때 주소값이
0051DAD4 라는 값이라면
00500000 으로 쓰고 연산할때만 51DAD4 를 + 연산 시키면 될거다 라고하네요
혹시 오토핫키로 가능한 범주일까요?

글이 너무길어 읽기 좀 그렇다고 생각하실수있지만 요즘 보안에 관심은 생기는데 실력이 그에 미치질못해서 연락드려봅니다

2020.11.23 07:23
늦늦

https://blog.plorence.kr/563
맨 밑에 굵은 픽셀 서치 그대로 했는데 오류만 뜨고
작동이 전혀 안되네요;;
예시도 한 줄 구문이 전부라..
정확히 어떻게 전체적인 예시를 적어주셨으면 더 좋았을텐데ㅠㅠ

#include gdip.ahk
#include gdip_imagesearch.ahk


F1::
if(draw_rectangle_pixel_search("326ce2",hwnd,vx,vy,8,8))
mousemove(vx,vy)
return



PostClick(FoundX,FoundY){

lparam:=FoundX|FoundY<<16

PostMessage,0x201,1,%lparam%,,%Title%

PostMessage,0x202,0,%lparam%,,%Title%

Sleep, 1000

}

RGB2ARGB(RGB) { ;;아래에 쓰일 RGB코드를 ARGB코드로 바꿔주는 사용자 함수입니다. 색을 칠할 때 ARGB로 사용하기 때문이죠
return "0XFF" RGB
}

draw_rectangle_with_pixel(RGB,w=8, h=8) ;gdip_draw를 이용해 지정한 범위만큼 색상을 채우는겁니다.
{
ARGB:=RGB2ARGB(RGB)
If !pToken := Gdip_Startup()
{
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
ExitApp
}
pBitmap := Gdip_CreateBitmap(w, h) , G := Gdip_GraphicsFromImage(pBitmap)
pBrush_acolor := Gdip_BrushCreateSolid(ARGB) ;이 부분들은 오토핫키 외국포럼의 gdip_tutorial을 참고했습니다.
Gdip_FillRectangle(G, pBrush_acolor, 0, 0, w, h) ;말그대로 붓을 들고 칠을 한다 라고 생각하시면 되겠네요.
Gdip_DeleteBrush(pBrush)
;Gdip_SaveBitmapToFile(pBitmap, "sFile.png";) ;잘 되는지 확인하고 싶으시면 이부분의 주석을 해제하고 사용해보세요
Gdip_DeleteGraphics(G)
Gdip_Shutdown(pToken)
return pBitmap
}

draw_rectangle_pixel_search(rgb_pixel,hwnd,byref vx,byref vy,w=8,h=8) {
pToken:=Gdip_Startup()
pBitmapHayStack:=Gdip_BitmapFromhwnd(hwnd)
pbitmapneedle:=draw_rectangle_with_pixel(rgb_pixe,w,h)

if Gdip_ImageSearch(pBitmapHayStack,pBitmapNeedle,list,0,0,0,0,60,,1,1) {
StringSplit, LISTArray, LIST, `, ; list라는 변수에 저장되는데, 출력 양식은 111,222 처럼 저장되니 이렇게 문자열을 쪼갭니다.
vx:=LISTArray1 ;이렇게 하면 listarray0엔 쪼갠 변수 총 갯수 그다음부터 쭉쭉 나오게 되는 것이죠.
vy:=LISTArray2
;; 이 부분에 마우스 클릭 및 다른 기능을 추가하셔도 됩니다.
Gdip_DisposeImage(pBitmapHayStack), Gdip_DisposeImage(pBitmapNeedle)
Gdip_Shutdown(pToken)}
return true
else {
Gdip_DisposeImage(pBitmapHayStack), Gdip_DisposeImage(pBitmapNeedle)
Gdip_Shutdown(pToken)
return false
}
}

2020.10.10 03:32
아안돼요

저장소에 이슈나 풀 리퀘스트 해주시면 확인해보겠습니다.

2020.10.16 10:13 신고

암호화 예제 잘봤습니다~ㅎ

2020.09.17 23:47 신고

오토핫키 이전에올렸던 비활성이미지서치글 다시 올려주실수있나요??

2020.06.17 08:17
장세용

https://blog.plorence.kr/563
다시 올렸습니다.

2020.06.19 05:14 신고

비밀댓글입니다

2020.03.17 00:26

비밀댓글입니다

2019.03.14 15:26

비밀댓글입니다

2018.01.02 01:51

2018.01.23 22:39

비밀댓글입니다

2017.11.14 09:35

비밀댓글입니다

2017.11.07 06:31

비밀댓글입니다

2017.10.28 14:07

https://open.kakao.com/o/g2N4xZo

2017.10.28 15:01 신고

비밀댓글입니다

2017.08.31 15:05