본문 바로가기

(임시휴재) Fanta's Post

메모리 패치 치트엔진 튜토리얼 ~2 누구나 다 좋아하는 치트엔진의 튜토리얼과 놀아봅시다. 첫튜토리얼 화면입니다. 오른쪽 아래엔 다른레벨로 갈 수 있는 기능이 있구요. 그냥 next눌러서 step2로 가죠. step2는 you have to find this value and change it to 1000이라고 써있습니다. 밑에 health를 1000으로 만들라는 얘기같네요. 현재 health값인 100을 검색합니다. Hit me를 눌러 helth를 96으로 변화시키고 96을 검색해줍니다. 치트엔진에서 원하는 메모리를 찾는 방식은 원하는 값의 범위를 좁혀나가면서 찾는 방식입니다. health가 100이었을 때는 100인 값을 찾고 96일 때는 100이었던 값들중에 96으로 변한 값을 찾는 방식으로 원하는 것을 찾아갑니다. 범위를 좁혀나갈 .. 더보기
테트리스 블럭 조작 오늘의 타겟파일입니다. 'C언어 길라잡이'의 예제중 하나죠. 이 테트리스에는 이처럼 7개의 블럭이 있습니다. 이 일곱개의 블럭들을 불규칙적으로 생성하려면 남수발생함수인 rand()함수를 쓸겁니다. 아마. rand()함수의 자세한 사용법 : 난수 발생함수 rand(), 난수 범위 지정하기 ida로 해당프로그램을 열어 함수를 살펴봅니다. 없을 리가 없는 rand()함수를 찾아놓고 함수가 쓰이는 위치를 분석합니다. 40225A에서 rand()함수를 쓰는 게 보입니다. 안보인다고 하지 말아요 올리디버거로 함수의 리턴값이 저장되는 eax에 다른 상수를 집어넣으면 끝나는 겁니다 ㅇㅅㅇ mov eax,0 이렇게 바꾸면 ㄴ자의 블럭들이 떨어집니다. 배열의 인덱스0에 ㄴ블럭이 저장되어있나봐요. 우리가 원하는 블럭은 당연.. 더보기
abex4 crack 시리얼이 맞을 때 커맨드 버튼이 활성화 되니 Text1_Change이벤트의 오프셋에 이미지베이스를 더한 값 402280에 브레이크포인트를 걸고 아무거나 입력한 후 F8(Step Over)로 한 줄씩 내려가면 시리얼로 의심되는 게 보입니다. 끝? 이렇게 날로 먹다 신발맞을듯? 더보기
abex3 crack 이번에는 너무 간단합니다. ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ CreateFileA과GetFileSize 함수로 이루어져있습니다. CreateFileA함수의 인자 FileName은 "abex.l2c". abexcrackme3.exe파일이 있는 폴더에 abex.l2c 파일을 만들어줍니다. 그리고 00401041 |. E8 4D000000 CALL ; \GetFileSize 00401046 |. 83F8 12 CMP EAX,12 00401049 |. 75 15 JNZ SHORT abexcrac.00401060 GetFileSize의 리턴값(EAX)를 12(Hex)와 비교하여 같지 않으면 00401060으로 점프해 오류메시지를 띄웁니다. abex.l2c파일의 크기를 18(D.. 더보기
abex2 crack 오늘은 abex2입니다. 간단한 시리얼 크랙이니 쭉쭉 읽어내려가주세요.ㅎㅎ 일단 이런 모양입니다. 아무거나 입력하고 Check버튼을 누르면 Nope, this serial is wrong! 이라는 내용의 메시지박스가 뜨는 프로그램입니다. PEID로 파일을 분석하면 VB프로그램으로 패킹은 되어있지 않고 ImageBase는 400000입니다. ImageBase는 나중에 쓰이니 기억해두세요. VB프로그램은 VBDE라는 디컴파일러로 분석합니다. 파일을 열고 Forms탭을 보면 Begin VB.CommandButton Command3 Caption = "&Check" Left = 3000 Top = 600 Width = 975 Height = 375 TabIndex = 7 End 이 내용이 보이죠? 안보일 리가 .. 더보기
abex1 crack 이번 주 부터는 부터는 abex시리즈를 크랙하겠습니다. 실행해보면 Make me think your HD is a CD-Rom 해석해보면 "내가 너의 딱딱한 물건을 CD롬으로 생각하게 만들어줘"입니다. 올리디버거로 농락해줍니다. 처음에 메시지박스를 띄우고 GetDriveTypeA함수를 호출하는 게 보입니다. GetDriveTypeA함수를 MSDN에게 물어보면 The return value specifies the type of drive, which can be one of the following values. ㅁ Return code/value Description DRIVE_UNKNOWN 0 The drive type cannot be determined. DRIVE_NO_ROOT_DIR 1 The.. 더보기
포스팅 연장 학교에서 안좋은 일이 자꾸 생기다보니(전 말짱해요) 담임선생의 종례가 1시간이 넘어가고 있습니다. 집에 있는 시간이 ㅇ벗어요 ㄷㄷ 시험 끝날 때 까지(11월 13일)는 약간 힘들겠네요. 더보기
미로찾기 10X10의 미로에서 01부터 100까지 가는 복수의 이동경로가 있을 경우 이동은 북, 동, 남, 서 순으로 한다. 방 번호 (입구)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 (출구)100 입력 10행 10열의 1 또는 0의 값이 주어진다... 더보기
구글입사문제 풀기 "최고인재 가치는 평균적 인력의 300배" 이 기사에 구글 입사문제가 소개되어있습니다. 풀어보죠 양수 n에 대해서 1과 n 사이에 1이 나오는 횟수를 나타내는 함수를 f(n)이라고 한다. 예를 들어 f(13)=6이다. f(n)=n이 되는 첫번째 양수는 1이다. 두번째 양수는 무엇인가. f(1)=1 1 f(2)=1 1,2 f(11)=4 1,2,3,4,5,6,7,8,9,10,11 쉬워요 쉬워. #include void main() { int i, j, k, tmp, cnt=0; for(i=1; ; i++) { tmp=i; while(tmp) { if(tmp%10==1) cnt++; tmp/=10; } if(cnt==i) printf("%d ",i); } } 중학교 1학년 과정을 별 탈없이 진행하셨으면 전개식.. 더보기
환형 링크드리스트 원형 큐와 비슷합니다. //지금 포토샵이 안켜져서...... tail이 없다는 것 빼곤 링크드리스트와 같습니다. 선언 typedef struct _ { int val; struct _ *next; }node; 함수들 void init(int n)//0부터 n까지의 노드생성 { int i; node *p; p=(node*)malloc(sizeof(node)); p->val=0; head=p; for(i=1;inext=(node*)malloc(sizeof(node)); p=p->next; p->val=i; } p->next=head; } void delete_node(node *o)//다음의 노드를 삭제 { node *p; p=o->next; o->next=p->next; free(p); } 환영 링크드리스.. 더보기
정보올림피아드 모험가 모두 풀어보셨을 문제입니다. ..................(생략)................."두 개의 열쇠의 숫자를 합해서 신전의 문 위에 있는 숫자와 일치하는 열쇠의 쌍을 찾아서 꽂으면 문이 열릴 것이다" 입력 첫 줄에는 열쇠의개수,문의 번호 둘째줄엔 열쇠들의 숫자가 입력됩니다. 출력 키의쌍을 출력하고 다음줄에 열쇠 쌍의 개수를 출력한다 입력예시 12 13 50 10 36 4 48 1 100 9 12 72 13 20 출력예시 (1,12)(4,9) 2 예 참쉽죠? 키의 값들을 오름차순으로 정렬하고 맨앞과 맨뒤의 값을 더한 값이 문의 번호보다 크다면 배열에서 가장 큰 값을 버리고,문의 값보다 작다면 배열에서 가장 작은 값을 버립니다. 소스 #include #include int arr[100],n,.. 더보기
재귀함수랑 친해지기 : 파스칼의 삼각형 파스칼의 삼각형 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 먼저 첫번째 줄에는 숫자 1을 쓴다. 그 다음 줄을 만들려면, 바로 위의 왼쪽 숫자와 오른쪽 숫자를 더한다. 예를 들어, 네번째 줄의 숫자 1과 3을 더하여 다섯번째 줄의 4가 만들어진다. -wikipedia 왼쪽 위,오른쪽 위에 있는 수를 더해서 만들어갑니다. 프로그램으로 만들기 위해 y(행),x(열)좌표로 나타내면 0,.. 더보기
동적 배열할당 메모리를 아끼기 위해선 배열을 동적으로 생성해야합니다. 뭐 다 아시겠지만 1차원배열 동적할당 #include #include main() { int n; int *arr; int i; printf("몇개? "); scanf("%d",&n); arr=(int *)malloc(sizeof(int)*n); for(i=0;i 더보기
stl vector 사용 vector는 기존 배열의 단점을 유지보수하여 나온............ 설명하자면 긴 글이 되니.. 유동적 배열이라고 보시면 됩니다. 중간의 원소를 삭제하면 저절로 뒤의 나머지 원소들이 앞으로 당겨집니다. 사용하시려면 #include //해주시고 using namespace std; vector v; //이렇게 선언합니다. int대신 float,double,자신이 만든 클래스 등등 넣으시면 됩니다. vector에 값을 넣으려면 push_back()함수를 사용합니다. 가장 마지막에 원소를 추가하는 함수입니다. v.push_back(1);하면 v[0]에는 1이 들어가게 됩니다. vector는 배열처럼 접근할 수도 있죠. v.push_back(2);를 하면 v[1]에는 2가 들어가게 되지요. vector의 .. 더보기