160个cracker me练习001

之前也看了很多视频,以前总是懵懵懂懂。现在知识积累到一定量,在下又充满了力量。


160个cracker me练习001_第1张图片

先来个字符搜索,果然有线索,看到关键两个祝贺!估计成功应该就是这个了。

点进去看到

160个cracker me练习001_第2张图片

有个jnz跳转跳过了成功提示,那么使用nop大法就可以了。

另外一个也是同样nop掉就可以。这个是字符搜索大法。

当然你也可以跟踪key

160个cracker me练习001_第3张图片

随便输几个字母,但是你要记住。点击check it baby!


160个cracker me练习001_第4张图片

会发现被断在这个call地方。那么猜测可能就是在这个函数里与正确的key做了对比。那么F7跟入

160个cracker me练习001_第5张图片

果然有一个神似正常key的样子的一串ascii码。那么记录下来,一直F8下去并没有找到其它有用的消息。那么我们来测试下这个CW-4018-CRACKED是不是key。

160个cracker me练习001_第6张图片
正确!,当然我想也可以下messagebox断点应该也行,不过花的时间就比较多了。

顺便附上python破解脚本写法:

#-*- coding:utf-8 -*-

import ctypes

#NAME SERIAL

def name(second):

      kernel32=ctypes.windll.LoadLibrary('kernel32.dll')

      PROCESS = kernel32.OpenProcess(2035711,0,second)

      new_info=kernel32.WriteProcessMemory

      buffer = ctypes.c_char_p("_")

      buffer.value='\x72\x72'

      new_info(PROCESS,4389635,buffer,2,0)

#SERIAL

def serial(second):

      kernel32=ctypes.windll.LoadLibrary('kernel32.dll')

      PROCESS = kernel32.OpenProcess(2035711,0,second)

      new_info=kernel32.WriteProcessMemory

      buffer = ctypes.c_char_p("_")

      buffer.value='\x72\x72'

      new_info(PROCESS,4388053,buffer,2,0)

if __name__ == '__main__':

       first=raw_input('name or serial:')

       second=input('process pid:')

       if first=='name':

              name(second)

       elif first=='serial':

              serial(second)

       else:

              print 'please entry true content.'

你可能感兴趣的:(160个cracker me练习001)