破解-小甲鱼笔记-18

根据程序完整运行完成,去掉最后一个nag窗口的关键是发现如下关键字,突破入口

00401240 |. 6A 67 push 0x67

00401240 |. 6A 67 push 0x67
00401242 |. 8B4D F0 mov ecx, [local.4]
00401245 |. E8 6A570100 call
0040124A |. C745 FC 00000>mov [local.1], 0x0
00401251 |. 8B4D F0 mov ecx, [local.4]
00401254 |. 83C1 60 add ecx, 0x60
00401257 |. E8 98660000 call 004078F4
0040125C |. C645 FC 01 mov byte ptr [ebp-0x4], 0x1
00401260 |. 8B4D F0 mov ecx, [local.4]
00401263 |. 81C1 C0000000 add ecx, 0xC0
00401269 |. E8 86660000 call 004078F4
0040126E |. 8B4D F0 mov ecx, [local.4]
00401271 |. C701 68984100 mov dword ptr [ecx], 00419868
00401277 |. 8B55 F0 mov edx, [local.4]
0040127A |. C782 20010000>mov dword ptr [edx+0x120], 0x0
00401284 |. 8B45 F0 mov eax, [local.4]
00401287 |. C780 24010000>mov dword ptr [eax+0x124], 0x0
00401291 |. C745 FC FFFFF>mov [local.1], -0x1
00401298 |. 8B45 F0 mov eax, [local.4]
0040129B |. 8B4D F4 mov ecx, [local.3]
0040129E |. 64:890D 00000>mov dword ptr fs:[0], ecx
004012A5 |. 8BE5 mov esp, ebp
004012A7 |. 5D pop ebp
004012A8 . C2 0400 retn 0x4

00401240 |. 6A 67 push 0x67
00401242 |. 8B4D F0 mov ecx, [local.4]
00401245 |. E8 6A570100 call
0040124A |. C745 FC 00000>mov [local.1], 0x0
00401251 |. 8B4D F0 mov ecx, [local.4]
00401254 |. 83C1 60 add ecx, 0x60
00401257 |. E8 98660000 call 004078F4
0040125C |. C645 FC 01 mov byte ptr [ebp-0x4], 0x1
00401260 |. 8B4D F0 mov ecx, [local.4]
00401263 |. 81C1 C0000000 add ecx, 0xC0
00401269 |. E8 86660000 call 004078F4
0040126E |. 8B4D F0 mov ecx, [local.4]
00401271 |. C701 68984100 mov dword ptr [ecx], 00419868
00401277 |. 8B55 F0 mov edx, [local.4]
0040127A |. C782 20010000>mov dword ptr [edx+0x120], 0x0
00401284 |. 8B45 F0 mov eax, [local.4]
00401287 |. C780 24010000>mov dword ptr [eax+0x124], 0x0
00401291 |. C745 FC FFFFF>mov [local.1], -0x1
00401298 |. 8B45 F0 mov eax, [local.4]
0040129B |. 8B4D F4 mov ecx, [local.3]
0040129E |. 64:890D 00000>mov dword ptr fs:[0], ecx
004012A5 |. 8BE5 mov esp, ebp
004012A7 |. 5D pop ebp
004012A8 . C2 0400 retn 0x4

004012A8 . C2 0400 retn 0x4 准备返回的地址
从上述地址中可以看到右下角堆栈处 返回地址 如下:

0018F108 004023C0 返回到 Urlegal.004023C0 来自 Urlegal.00401220

通关OD 单步步过 发现跳转至004023C0

此时所在地址:004023C0 |. C745 FC 00000>mov [local.1], 0x0

执行nag窗口弹出的地址 004023CD |. E8 3A450100 call

上述是通过堆栈的方法来确定关键call位置,之后根据上下代码来确认准确入口点

第二种方法是通过刚开始找到关键结尾nag窗口的关键字 push 0x67找到准确位置,然后根据上下文,确定执行该nag窗口函数的入口点

然后 选中函数开始的代码 push ebp,右键--> 查找参考-->选中命令,即可看到调用这个函数的call

找到如下地址:

004023BB |. E8 60EEFFFF call 00401220

可知 程序在运行的过程中 当运行到此处便会开始执行后面到nag窗口函数,那么执行这个窗口函数上面的关键跳转如下:

004023B1 |. /75 43 jnz short 004023F6

再查看这个关键跳转 上面的代码,发现有一个call,而且后面还有个test eax, eax 这种关键的比较。

那么就可以确认 004023AA |. E8 691A0000 call 00403E18 是极其关键判断是否注册的代码,如果注册了 那么就可以跳过这段执行nag的call

最终破解方法如下:

004023AA |. E8 691A0000 call 00403E18

进入上述地址

00403E18 /$ 55 push ebp
00403E19 |. 8BEC mov ebp, esp
00403E1B |. 51 push ecx
00403E1C |. 894D FC mov [local.1], ecx
00403E1F |. 8B45 FC mov eax, [local.1]
00403E22 |. 8B40 2C mov eax, dword ptr [eax+0x2C]
00403E25 |. 8BE5 mov esp, ebp
00403E27 |. 5D pop ebp
00403E28 . C3 retn

修改地址
00403E1C |. 894D FC mov [local.1], ecx
00403E1F |. 8B45 FC mov eax, [local.1]

都改为mov eax, 1

注意,上述如果理解错了针对如下地址 00403E1C 00403E1F 这两个地址一个一个的修改会覆盖下面的代码,这样会造成程序运行异常。

所以针对如下这两个地址同时选中 进行汇编更改为mov eax, 1

00403E1F 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
00403E22 8B40 2C mov eax,dword ptr ds:[eax+0x2C]

修改后结果如下:

00403E1F B8 01000000 mov eax,0x1
00403E24 90 nop

之后运行成功破解,没有nag窗口,也发现注册窗口不见了

你可能感兴趣的:(破解-小甲鱼笔记-18)