新手破解练习Crackme160之073 - fireworx.4
- 去NAG, Delphi Decomiler分析代码发现注册界面是动态创建的, 我们找到对应的创建代码处004475D8, 看到了窗体地址为: 00446FF0, 所以我们在程序开始0044815D处对应的地址为这个就可以了, 保存运行发现, 这个窗体没有关闭按钮, 无法关闭程序, 程序报错~ 我们看能不能把cancel按钮作为关闭按钮用, 我们重新加载程序 , F9运行, 先把主窗体展示出来, 然后菜单->插件->API断点设置工具->常用断点设置->切换到栏目"限制 程序功能函数" 把下面的EnableWindow勾上, 确定, 然后关闭程序, OD会停下, 这时就是窗体关闭事件被触发了, 我们看数据区右侧, 下翻找到这条 0019FF48 00403761 返回到 fireworx.00403761 来自 <jmp.&kernel32.ExitProcess>, 方法入口为00403759, 记起来, 我们重新加载程序, 先别运行, 把主窗体改成注册窗体, F9运行, 再来到注册窗体的cancel按钮代码00447904, 将下面代码对应修改:
00447904 53 push ebx
00447905 56 push esi ; fireworx.<ModuleEntryPoint>
00447906 8BD8 mov ebx,eax
00447908 C683 19030000>mov byte ptr ds:[ebx+0x319],0x0
0044790F . 8BB3 38030000 mov esi,dword ptr ds:[ebx+0x338]
00447915 . 807E 05 00 cmp byte ptr ds:[esi+0x5],0x0
改为:
00447904 C705 B4F31900>mov dword ptr ds:[0x19F3B4], 00447913 ;手动修改下一个函数返回的地址
0044790E ^ E9 7E53FFFF jmp 0043CC91 ;跳转到关闭当前窗口函数(单步调试所得的地址)
00447913 ^ E9 41BEFBFF jmp 00403759 ;跳转到关闭整个应用(关闭上面窗口后应用其实还没关掉进程中还存在)
00447918 90 nop
到此, NAG彻底去掉~ (记得保存哈~_), 经后面测试, cancel可以正常当成关闭按钮了, 但ok按钮无法正常工作了, 这个有待改进~, 目前能力有限, 没找到原因~
-
按钮去灰, OD重新加载原程序, Delphi Decomiler查看注册窗体有个FormShow事件, 其中有段代码很眼熟, 00447C98 je xxx, 下面代码便是设置按钮属性的, 直接nop掉保存, 直接执行看到OK按钮已经亮起来了, Edit1_change事件也有这段代码00447C0 je xxx, 也直接nop掉, 保存, 去灰完成~
-
暴力破解, Delphi Decomiler查看ok按钮点击事件方法入口是0044797C, 此处下断点, 随便输入点ok断点处停下, F8单步调试来到第一个跳004479AA, 改为jmp 00447B92到成功分支, 保存成功~
-
正常破解, 我们从第一个跳004479AA开始分析算法:
1). 用户名为空直接跳到结束处
2). 用户名长度+1
3). 循环+每一位+固定值0x2B67
4). 结果转十进制数与系列号比较
注册机代码如下: keygen.c
#include <stdio.h>
#include "string.h"
int main() {
int len = 0;
char user[21] = {0};
printf("请输入用户名: ");
scanf("%s", user);
len = strlen(user);
int rlt = 0x2B67;
int val = 0x2B67;
for(int i=0; i<len; i++){
rlt += user[i] + val;
}
printf("系列号为: %d\n\n按任意键继续~", rlt);
getchar();getchar();
return 0;
}
1~160每个破解过程,在吾爱破解论坛都有高手破解过了,也有整理好现成的, 我这边主要就是自己动手操作的过程,与他们的不太一样
附上高手们的连接: 点击前往查看
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
新人入门教程"玩玩破解,写给新人看" 点击前往查看
我就是从这里开始的,对我这样的小白感觉超级友好~
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号