雨天没有雨 发表于 2016-1-10 11:38

豪迪qq去自校验 图文教程,便于查看 2016.1.5版本

本帖最后由 雨天没有雨 于 2016-1-11 22:02 编辑

    由于需要这个软件,但是发送图片是乱码,到吾爱看了说是自校验,就看了小生大大的视屏,只是变成图文教程给新手们看看

1.用OD载入后搜索“已注册”双击进去




005498B3|.E8 2003F3FF   call qqqf.00479BD8
005498B8|.803D C4305800>cmp byte ptr ds:,0x0         【这个就是关键比较了】
005498BF|.74 10         je short qqqf.005498D1
005498C1|.BA 3C995400   mov edx,qqqf.0054993C                  ;已注册版本 【这里是搜索到的字符串】

2.因为影响跳转的是这个cmp比较,这个变量我们记下这个地址重新载入程序

ctrl+g 到这个地址0x5830C4选择后修改值为1,然后下内存写入断点 f9运行起来,记住有一个地方是赋值为1的,要记住





00549672   .B8 64000000   mov eax,0x64
00549677   .E8 CC97EBFF   call qqqf.00402E48
0054967C   .8B0485 CC3058>mov eax,dword ptr ds:
00549683   .E8 6CAFEBFF   call qqqf.004045F4
00549688   .83F8 18       cmp eax,0x18
0054968B   .74 09         je short qqqf.00549696   根据跳转的流程,这个跳实现了,[-0x5830C4-]这个值就是1就是已注册版 改jmp
0054968D   .83F8 0C       cmp eax,0xC
00549690   .74 04         je short qqqf.00549696
00549692   .33D2          xor edx,edx
00549694   .EB 02         jmp short qqqf.00549698
00549696   >B2 01         mov dl,0x1                                 ;一定要执行到这里,不然就未注册
00549698   >8815 C4305800 mov byte ptr ds:,dl            ;断在这里【这里给他赋值,值取决于dl的值】

重要提示,还有这个程序有多处修改[-0x5830C4-]这个值 修改的方法一样我就不说了只要下内存断点然后都改掉就可以了,

重要提示,还有这个程序有多处修改[-0x5830C4-]这个值 修改的方法一样我就不说了只要下内存断点然后都改掉就可以了,
重要提示,还有这个程序有多处修改[-0x5830C4-]这个值 修改的方法一样我就不说了只要下内存断点然后都改掉就可以了,
重要的事情说3遍

改好后,我们F9运行起来
00548B56|.^\0F85 48FEFFFF \jnz qqqf.005489A4
00548B5C|>807D EF 00    cmp byte ptr ss:,0x0
00548B60|.75 68         jnz short qqqf.00548BCA
00548B62|.B8 148F5400   mov eax,qqqf.00548F14                  ;验证失败!
00548B67|.E8 ECD10100   call qqqf.00565D58
00548B6C|.A1 44EE5700   mov eax,dword ptr ds:
00548B71|.C600 00       mov byte ptr ds:,0x0               段在这里,

上面有一个验证失败 这是个网络验证,段首ret

但是发送图片还是不行   

跳过“程序被损坏”后,插入入后就是乱码,这就是一个自校验,我们把他去掉吧

自校验有可能读自己所以我们用这个api断点,GetModulefileNameA api下段


然后再下按钮事件,然后在单步走,如果断在API里面,按【-】号看看是哪个call调用了再进去看看,在断下来的地方call的段首下段,再返回上一层,有几层call就在段首下段,然后在点击一下其他的功能,比如会出现乱码的地方,如果断下了,这个地方就是验证call,然后就是找了,每个call都找一下,然后再猜测一下,一般为了隐蔽性,作者都只会调用一次关键call,只是猜测,然后看看寄存器和堆栈的相关数据,或者一个更傻的方法每运行一个call就搜索一下,程序的md5值,出现了,就进去call看看是哪个寄存器或堆栈指向这个md5的值,因为md5是32位的,所以通常是类似于编程里面的指针形式赋值的 ,也就是所谓的传址,lea 这样的指令就要关注一下啦

如果你能识别md5算法那就更快的锁定地方了,看看特征



004B42A2                                  |.8D45 F4       lea eax,
004B42A5                                  |.E8 CAE2FFFF   call qqqf1.004B2574                  ;这里获取自己的名字
004B42AA                                  |.8B55 F4       mov edx,
004B42AD                                  |.8D45 FC       lea eax,
004B42B0                                  |.B9 70444B00   mov ecx,qqqf1.004B4470               ;Desklog.dll
004B42B5                                  |.E8 8603F5FF   call qqqf1.00404640
004B42BA                                  |>BA 20000000   mov edx,0x20
004B42BF                                  |.8B45 FC       mov eax,
004B42C2                                  |.E8 455BF5FF   call qqqf1.00409E0C
004B42C7                                  |.8BF8          mov edi,eax
004B42C9                                  |.8BCB          mov ecx,ebx
004B42CB                                  |.8BD6          mov edx,esi
004B42CD                                  |.8BC7          mov eax,edi
004B42CF                                  |.E8 14E2FFFF   call qqqf1.004B24E8
004B42D4                                  |.8BC7          mov eax,edi
004B42D6                                  |.E8 515CF5FF   call qqqf1.00409F2C
004B42DB                                  |.8D55 F0       lea edx,
004B42DE                                  |.33C0          xor eax,eax
004B42E0                                  |.E8 B7E7F4FF   call qqqf1.00402A9C
004B42E5                                  |.8B45 F0       mov eax,
004B42E8                                  |.8D55 F8       lea edx,
004B42EB                                  |.E8 ECF0FFFF   call qqqf1.004B33DC;这里就是自校验的地方了,我们进去看看



004B33DC                                  /$55            push ebp   进去后
004B33DD                                  |.8BEC          mov ebp,esp
004B33DF                                  |.83C4 E8       add esp,-0x18
004B33E2                                  |.53            push ebx
004B33E3                                  |.56            push esi
004B33E4                                  |.57            push edi
004B33E5                                  |.33C9          xor ecx,ecx
004B33E7                                  |.894D E8       mov ,ecx
004B33EA                                  |.8BFA          mov edi,edx
004B33EC                                  |.8945 FC       mov ,eax
004B33EF                                  |.8B45 FC       mov eax,
004B33F2                                  |.E8 ED13F5FF   call qqqf1.004047E4
004B33F7                                  |.33C0          xor eax,eax
004B33F9                                  |.55            push ebp
004B33FA                                  |.68 57344B00   push qqqf1.004B3457
004B33FF                                  |.64:FF30       push dword ptr fs:
004B3402                                  |.64:8920       mov dword ptr fs:,esp
004B3405                                  |.8BC7          mov eax,edi
004B3407                                  |.E8 FC0EF5FF   call qqqf1.00404308
004B340C                                  |.8D55 EC       lea edx,
004B340F                                  |.8B45 FC       mov eax,
004B3412                                  |.E8 69FEFFFF   call qqqf1.004B3280
004B3417                                  |.BE 10000000   mov esi,0x10
004B341C                                  |.8D5D EC       lea ebx,                      ;这个地址就是md5的地址值给了ebx 就到这里改一下吧

004B341F                                  |>8D55 E8       /lea edx,
004B3422                                  |.33C0          |xor eax,eax






004B340F                                    8B45 FC         mov eax,dword ptr ss:
004B3412                                    E8 69FEFFFF   call qqqf1.004B3280
004B3417                                    E9 360D0C00   jmp qqqf1.00574152   ;改成这样子
004B341C                                    90            nop                     ;
004B341D                                    90            nop
004B341E                                    90            nop
004B341F                                    8D55 E8         lea edx,dword ptr ss:
004B3422                                    33C0            xor eax,eax
原来的改成这样子









我们取得原程序的md5是200e44743f4540b612f1c2b8fce826e7


找到空白地方 jmp过去


00574152                                 .0000          add byte ptr ds:,al

改成这样子
00574152                                    BE 10000000   mov esi,0x10
00574157                                    8D1D 62415700   lea ebx,dword ptr ds:   这里指向的就是下面的md5的地址,并且把地址给edx
0057415D                                  ^ E9 BAF2F3FF   jmp qqqf1.004B341C      00574162                                    下面就是原版程序的md5的值了,这个不是程序的执行代码,是数据了
00574162                                    
00574162                                    200E                      and byte ptr ds:,cl
00574164                                    44                        inc esp
00574165                                    74 3F                     je short qqqf1.005741A6
00574167                                    45                        inc ebp
00574168                                    40                        inc eax
00574169                                    B6 12                     mov dh,0x12
0057416B                                    F1                        int1
0057416C                                    C2 B8FC                   retn 0xFCB8
0057416F                                    E8 26E70000               call qqqf1.0058289A
00574174                                    0000                      add byte ptr ds:,al
00574176                                    0000                      add byte ptr ds:,al

                              





之后的错误信息框,用F12暂停法和alt+k 查看定位调用处,上面的跳转改成jmp就可以了




我们F12暂停后,alt+k


我在运行的时候没有出现错误,可以发送图片和文字,但是有可能会出现错误,那就请各位指正啦



在此,我要谢谢52给了我们这么多资源可以让我们学习

至此破解完毕,感谢小生大神出视频给我们菜鸟指点,我只是把他变成图片利于学习

               大家给个评分吧,谢谢啦    成品http://pan.baidu.com/s/1mhcMd1A




雨天没有雨 发表于 2016-1-10 22:05

晨熙_ 发表于 2016-1-10 16:22
大哥给个视频教程链接吧@!@妹子算是给妹子个见面礼吧@!@

视屏版的小生大大出来了   虽然版本不同但都是一样的方法我也是看了小生大大去的自校验

哲少 发表于 2016-1-10 23:31

雨天没有雨 发表于 2016-1-10 22:03
尾巴你只要下内存断点    然后看看哪里改写了那个常量就可以了

有蛮多 没完善。比如 暂停功能 就失效了

lengmu 发表于 2016-1-10 11:44

求成品,豪迪群发企业版破解

晨熙_ 发表于 2016-1-10 12:08

左岸麦田 发表于 2016-1-10 13:37

感谢,学习了,这个软件被玩坏啦。

雨天没有雨 发表于 2016-1-10 13:59

晨熙_ 发表于 2016-1-10 12:08
有没有视频教程啊?大哥

有视频教程呀   小生大神的   我只是搞成图文的好看一点

key2563 发表于 2016-1-10 14:08

能发成品不?

雨天没有雨 发表于 2016-1-10 15:00

key2563 发表于 2016-1-10 14:08
能发成品不?

好嘞,我上传到百度云盘了

晨熙_ 发表于 2016-1-10 16:22

哲少 发表于 2016-1-10 21:37

尾巴没去

雨天没有雨 发表于 2016-1-10 22:03

哲少 发表于 2016-1-10 21:37
尾巴没去

尾巴你只要下内存断点    然后看看哪里改写了那个常量就可以了   
页: [1] 2 3
查看完整版本: 豪迪qq去自校验 图文教程,便于查看 2016.1.5版本