跳至主要内容

160个Crack Me 之002 Afkayas.1

http://ift.tt/2iwDRwK

前期准备

熟悉软件流程

好像也没有什么可以看的,目测也是很简单(当然要逆出算法还是需要花功夫的,暂时还是以爆破的方式逆吧)

软件流程:

PEID看一下

开干

没有特别的,直接上OD吧
对这种程序断API都嫌麻烦,还是直接搜索字符串吧,应该直接就能找到跳转

0040258B   /74 58           JE SHORT Afkayas_.004025E5               ; 关键跳转
0040258D   |68 801B4000     PUSH Afkayas_.00401B80                   ; You Get It
00402592   |68 9C1B4000     PUSH Afkayas_.00401B9C                   ; \r\n
00402597   |FFD7            CALL EDI
00402599   |8BD0            MOV EDX,EAX
0040259B   |8D4D E8         LEA ECX,DWORD PTR SS:[EBP-0x18]
0040259E   |FFD3            CALL EBX
004025A0   |50              PUSH EAX
004025A1   |68 A81B4000     PUSH Afkayas_.00401BA8                   ; KeyGen It Now
004025A6   |FFD7            CALL EDI
004025A8   |8D4D 94         LEA ECX,DWORD PTR SS:[EBP-0x6C]
004025AB   |8945 CC         MOV DWORD PTR SS:[EBP-0x34],EAX
004025AE   |8D55 A4         LEA EDX,DWORD PTR SS:[EBP-0x5C]
004025B1   |51              PUSH ECX
004025B2   |8D45 B4         LEA EAX,DWORD PTR SS:[EBP-0x4C]
004025B5   |52              PUSH EDX
004025B6   |50              PUSH EAX
004025B7   |8D4D C4         LEA ECX,DWORD PTR SS:[EBP-0x3C]
004025BA   |6A 00           PUSH 0x0
004025BC   |51              PUSH ECX
004025BD   |C745 C4 0800000>MOV DWORD PTR SS:[EBP-0x3C],0x8
004025C4   |FF15 10414000   CALL DWORD PTR DS:[<&MSVBVM50.#595>]     ; Msvbvm50.rtcMsgBox
004025CA   |8D4D E8         LEA ECX,DWORD PTR SS:[EBP-0x18]
004025CD   |FF15 80414000   CALL DWORD PTR DS:[<&MSVBVM50.__vbaFreeS>; Msvbvm50.__vbaFreeStr
004025D3   |8D55 94         LEA EDX,DWORD PTR SS:[EBP-0x6C]
004025D6   |8D45 A4         LEA EAX,DWORD PTR SS:[EBP-0x5C]
004025D9   |52              PUSH EDX
004025DA   |8D4D B4         LEA ECX,DWORD PTR SS:[EBP-0x4C]
004025DD   |50              PUSH EAX
004025DE   |8D55 C4         LEA EDX,DWORD PTR SS:[EBP-0x3C]
004025E1   |51              PUSH ECX
004025E2   |52              PUSH EDX
004025E3   |EB 56           JMP SHORT Afkayas_.0040263B
004025E5   \68 C81B4000     PUSH Afkayas_.00401BC8                   ; You Get Wrong
004025EA    68 9C1B4000     PUSH Afkayas_.00401B9C                   ; \r\n
004025EF    FFD7            CALL EDI
004025F1    8BD0            MOV EDX,EAX
004025F3    8D4D E8         LEA ECX,DWORD PTR SS:[EBP-0x18]
004025F6    FFD3            CALL EBX
004025F8    50              PUSH EAX
004025F9    68 E81B4000     PUSH Afkayas_.00401BE8                   ; Try Again
004025FE    FFD7            CALL EDI

果然,级别低的就是好找,直接就搜到了关键跳转
NOP掉

0040258B    90              NOP                                      ; 关键跳转
0040258C    90              NOP
0040258D    68 801B4000     PUSH Afkayas_.00401B80                   ; You Get It
00402592    68 9C1B4000     PUSH Afkayas_.00401B9C                   ; \r\n
00402597    FFD7            CALL EDI

运行一下试试吧,好像是没什么难度 ,有时间还是把算法逆出来吧

The post 160个Crack Me 之002 Afkayas.1 appeared first on cole.

http://ift.tt/2AxyX9y reverse engineering, reverse December 01, 2017 at 07:55PM

评论

此博客中的热门博文

反Hook 之自己实现GetProcAddress和LoadLibraryA(c++ version)

http://ift.tt/2AocAD0 // 课上练习.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> //要实现的功能: /* 自己实现GerProcAddress LoadLibraryA */ //思路: /* GerProcAddress和LoadLibraryA都是在Kernel32.dll中的 首要的任务就是找到Kernel32.dll,然后遍历IAT就能找到这两个函数 现在首要的难点就是如何找到kernel32.dll() 通过dll的加载顺序可以找到,而且虽然需要使用未文档化的API,但是好在windgb可以直接看,而且用到的也并不是很多 懒得去晚上搜了,直接自己实现一个得了,作为演示,能用就行(最好还是搜一个正规的结构体) */ /* 0: kd> dt _TEB /a nt!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB //首先实现部分TEB结构体,因为只需要用的PEB的部分,所以实现到这就ok了 */ //构建 TEB typedef struct _TEB { //保证0x30是peb的结构体就ok了 struct _tem { DWORD a1; DWORD a2; DWORD a3; DWORD a4; DWORD a5; DWORD a6; DWORD a7; DWORD a8; DWORD a9; DWORD a10; ...

IDA动态调试ELF中遇到的问题(1)

https://ift.tt/2Gxnf2F 遇到 got SIGCHLD singal(child status has changed)...这种提示 singal fork了子进程 直接点yes,然后继续单步执行,出来提示 pass to application就行了 内存查看 用od习惯了之后,凡事都想右键看一下内存,但是IDA中好像没有那么如意, 目前只是在栈中右键发现有查看hex的选项 动态调试的时候的nop ida保存动态调试的时候修改的数据 方法一:在程序运行的时候保存 The post IDA动态调试ELF中遇到的问题(1) appeared first on cole . https://ift.tt/2q9Qf5g WHATEVER April 05, 2018 at 09:44AM

手工加壳Demo- C++Version

http://ift.tt/2AAEutK // 手动加壳demo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <windows.h> #include <string.h> typedef struct _StubConf { IMAGE_NT_HEADERS ntheader; }STUBCONF; class PeFile { public: PeFile(); ~PeFile(); bool OpenFile(const char*FilePath); bool InitHdrs(); PIMAGE_SECTION_HEADER addSection(const char * secName, DWORD dwSecSzie); PIMAGE_SECTION_HEADER getSection(const char* secName); DWORD Size2ALi(DWORD dwSize, DWORD dwALi); void peclose(); void setOpe(DWORD newOep); LPVOID peGetProcAddress(const char* szFnName); DWORD RVATOOFFSET(DWORD rva); ULONG_PTR getfileBuff(); PIMAGE_NT_HEADERS getNtHeader(); PIMAGE_OPTIONAL_HEADER getOptionHeader(); void fixStubReloc(DWORD oldImageBase, DWORD newImageBase, DWORD oldSectionRva, DWORD newSectionRva); void setSecData(IMAGE_SECTION_HEADER* pScn, void* pSectionData, DWORD dwSectionSize); bool savea...