160个cracker me练习002
2017-08-08 本文已影响0人
blackflame
总的来说,这是个非常简单的练习材料。第一种最快也是最先想到的,搜索字符串法。
输入错误的name和serial提示You Get Wrong和try again
那么OD加载程序。接着智能搜索

可以发现一个貌似正确提示和错误提示的内容。那么双击进入You Get It
可以发现上面有个je跳转从上面跳走了。那么nop掉就可以了。

那么再试试下断点找key值吧。因为程序是vb写的,所以尝试下vbaStrCmp这个函数断点。虽然没学过VB,但这个猜测应该是比较函数。

启动之后,输入假码。会断下来。

接着F7步入,可以找到我们假码和一个疑似真码都push进去。

然后尝试下真码果然正确。
当然你也可以一步一步f8跟踪找码,对于这个小程序也挺快的。
附上python破解代码
#-*- coding:utf-8 -*-
import ctypes
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,4203915,buffer,2,0)
if __name__ == '__main__':
second=input('process pid:')
name(second)