《第3期-13 F12暂停法详解》学习笔记

一、破解过程
1、打开软件后,有一个提示注册的,输入假码后,弹窗“对不起,您输入的注册码文本是不正确的”。


2、载入OD,查找字符串“注册”,发现找不到。

3、这可从哪里入手呢?正好有一个弹窗,可以试试F12暂停法。
回到OD,按F12,从而让程序暂停,再按Alt+K


选择其中的那个MessageBoxExW,右键——“显示调用”,下断点。
重新载入程序,再次输入假码后断下来了,然后F8一下,回到程序点击对话框的“返回”按钮,这时OD会自动往下运行一下,接下来就是一路F8单步,直到OD的标题栏变成这样


说明回到了程序领空了。
4、找到了弹窗的call了,向上找是否有跳转能够跳过它的。

00532F1E  |.  E8 7D83FFFF   call    0052B2A0                         ;  关键call
00532F23  |.  85C0          test    eax,eax
00532F25  |.  74 2F         je      short 00532F56                   ;  关键跳
00532F27  |.  8B0D CC557300 mov     ecx,dword ptr ds:[0x7355CC]      ;  HprSnap7.0072AE98
00532F2D  |.  8981 58020000 mov     dword ptr ds:[ecx+0x258],eax
00532F33  |.  8B56 20       mov     edx,dword ptr ds:[esi+0x20]
00532F36  |.  52            push    edx                              ; /hWnd
00532F37  |.  FF15 6C806500 call    dword ptr ds:[<&USER32.OpenClipb>; \OpenClipboard
00532F3D  |.  85C0          test    eax,eax
00532F3F  |.  74 0C         je      short 00532F4D
00532F41  |.  FF15 58806500 call    dword ptr ds:[<&USER32.EmptyClip>; [EmptyClipboard
00532F47  |.  FF15 5C806500 call    dword ptr ds:[<&USER32.CloseClip>; [CloseClipboard
00532F4D  |>  8BCE          mov     ecx,esi
00532F4F  |.  E8 EE8C1000   call    <jmp.&mfc100u.#10058>
00532F54  |.  EB 0E         jmp     short 00532F64
00532F56  |>  6A FF         push    -0x1
00532F58  |.  6A 00         push    0x0
00532F5A  |.  68 85690000   push    0x6985
00532F5F  |.  E8 B2851000   call    <jmp.&mfc100u.#1986>             ;  主程序中弹出“注册码不正确的”call
00532F64  |>  8D4D F0       lea     ecx,[local.4]
00532F67  |.  FF15 3C8A6500 call    dword ptr ds:[<&mfc100u.#903>]   ;  mfc100u.#14057

在关键跳处下断点,重新载入程序,发现关键跳是已实现的,那么就把它给nop掉。确实不会弹窗了,可是程序一用还是会加水印,说明还是试用版的。
5、关键跳不行,那么就看看关键call。
在关键call里面下断点,重新载入程序,F8单步下去,发现关键call里面代码太多了,但是返回值放到eax中为0。那么修改返回值为1是不是可行呢?
再加上这个关键call被很多地方调用了,所以前面只是修改关键跳是不够用的。


于是把关键call的段首改为

mov eax, 1
retn 0x14

这个retn是跟到了关键call的末尾才找到是返回0x14的。
6、发现这样就可以了,程序截图也是没有水印了。
可是在启动软件时还是会弹窗的,看了视频中的讲解,才知道自己的思路和视频中的不太一样。
7、把程序重新载入OD,当启动界面出来后,回到OD中按F12暂停,再Alt+K:


选择图片中的函数,右键——“显示调用”,来到了一段代码,在断尾下断点。至于为何在断尾下断点,我认为是想运行到断尾处,跳出这个call,所以直接在断尾下断点,省得在中间下了断点还得再F8单步了。
重新载入程序后,总是会断在断点处。可以取消这个断点,F8单步从而跳出了这段代码,来到了新的代码处。这时才发现,刚才是断在一个call里面来着。


F8单步一会,我们发现在一个循环里面,跳不出去呀!只好在再次在这段代码的段尾下断点了。
重新载入程序,需要点击启动界面中的一个按钮,这样OD才会断下来。因为程序直接弹出了启动界面让我们点击,所以需要点击里面的一个按钮,OD才会断下来。
F8单步,会发现又出了状况:本来是F8单步着,突然OD显示运行了,F8也不管用了。视频中给出的方法是在下面的代码下断点,Alt+t然后右键激活所有线程就好了。
来到了程序的领空

0047F6E9  |. /75 04         jnz     short 0047F6EF                   ;  这个跳跳过了下面的跳。需要nop掉。
0047F6EB  |. |85C0          test    eax,eax
0047F6ED  |. |75 63         jnz     short 0047F752                   ;  这个跳转能够跳过下面的弹窗call。需要改为jmp
0047F6EF  |> \8B4B 20       mov     ecx,dword ptr ds:[ebx+0x20]
0047F6F2  |.  6A 00         push    0x0
0047F6F4  |.  56            push    esi
0047F6F5  |.  51            push    ecx
0047F6F6  |.  8D8D 70FEFFFF lea     ecx,[local.100]
0047F6FC  |.  E8 8FDD0A00   call    0052D490
0047F701  |.  68 70C86500   push    0065C870                         ;  h
0047F706  |.  8D8B 54010000 lea     ecx,dword ptr ds:[ebx+0x154]
0047F70C  |.  C645 FC 20    mov     byte ptr ss:[ebp-0x4],0x20
0047F710  |.  FF15 E08C6500 call    dword ptr ds:[<&mfc100u.#2614>]  ;  mfc100u.#2614
0047F716  |.  85C0          test    eax,eax
0047F718  |.  7E 16         jle     short 0047F730
0047F71A  |.  B8 1D000000   mov     eax,0x1D
0047F71F  |.  8D56 FF       lea     edx,dword ptr ds:[esi-0x1]
0047F722  |.  3BC2          cmp     eax,edx
0047F724  |.  1BC0          sbb     eax,eax
0047F726  |.  F7D0          not     eax
0047F728  |.  23C6          and     eax,esi
0047F72A  |.  8983 20030000 mov     dword ptr ds:[ebx+0x320],eax
0047F730  |>  8D8D 70FEFFFF lea     ecx,[local.100]
0047F736  |.  E8 13BC1B00   call    <jmp.&mfc100u.#3627>             ;  弹窗的call
0047F73B  |.  8D8D 70FEFFFF lea     ecx,[local.100]                  ;  通过F8回到了这里

修改关键跳后保存,发现可以正常使用了。

二、总结
1、重点是F12暂停法的使用,一定要灵活些。视频中也说了“破解不了是因为思路不正确”。理解了原理才能灵活,否则就只是模仿、记住套路。我在未看这集视频前就只会模仿前面视频中讲过的F12暂停法,只是知道怎么去做,对于为什么这么做没有想过,所以在遇到困难了就不知所措了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容