这集视频中是破解一个CM。
一、方法一
1、运行软件,看看它是怎么展示的
输入假码
2、因为这是易语言编写的,所以可以使用专门的工具——"E-Debug Events "。在E-Debug Events打开这个软件 ,在软件中输入假码点击注册,这时E-Debug Events 就会记录出事件发生的内存地址
001.png
把最后一个事件的地址004010CB记下来
3、载入OD运行,来到上一步中找到的地址,下断点后输入假码
这里就是点击确定时的事件处理代码了。F8向下分析很快就找到了关键跳
关键跳
把关键跳改为jmp 004011BF就行了。
二、方法二
这个出错提示并不是MessageBox,所以不能下MessageBox的API断点。但是,软件是要读取输入的验证码的,这时会调用GetWindowText这个API。于是,我们可以对GetWindowText下API断点
1、载入OD,运行起来,对GetWindowTextA下断点,
下断点
2、输入假码后,OD会把软件断下来,此时返回程序领空,
004.png
F8单步进行分析,显然没有找到合适的跳转,那么就跳出这个call,返回到上一层继续寻找。反复多次返回上一层call后,终于找到了关键跳,
关键跳
把关键跳改为jmp 004011BF就行了。
这个方法是通用方法,不只是对于易语言程序有效。
三、杂项
1、期间,想通过易语言的文本比较来破解,可是在软件中根本找不到下面这些:
8B 54 24 04 8B 4C 24 08 85 D2 75 0D 33 C0 85 C9 74 06 80 39 00 74 01 48 C3 85 C9 75 09 33 C0
无奈,只好放弃了。
2、直接下按钮事件的断点,会直接找到事件发生的代码,从而也能够很快找到关键跳。
3、没有去修改关键跳,而是找了关键call。
关键call
关键call的返回值eax给了local.4,那么我想到是对关键call进行修改,直接返回1。可是对关键call就行修改后的程序无法运行,只好这样改了:不用关键call的返回值了,而是直接把1给了local.4。
修改
网友评论