夏洛魂 发表于 2017-6-6 14:06

XXXXXU盘杀毒的追码过程

本帖最后由 姐又寡闻了 于 2019-6-6 22:32 编辑

来到论坛也有一段时间了,玩了一段日子的爆破,想玩玩别的方式了。学了一段日子的汇编 就拿U盘杀毒专家这个软件来试试吧。
大家可以自行搜索 U盘杀毒专家进行下载,这个软件还可以吧 我U盘在学校的机子上感染了病毒,就用他把病毒干掉的

首先打开软件 点击注册    弹出错误 直接拉到OD 用暂停法,这里就不查壳和脱壳了 将软件在OD中运行,输入假码 进行注册 弹出错误弹窗,然后F12暂停 查看堆栈窗口K

双击所在行 进入弹错CAll然后找到可以跳过去的 跳转指令

jnz指令就是我们找到的可以跳过去的 那上面自然就是关键call了在关键call下断.运行程序, 此时在关键call断下,F7进CAll
然后单步跟下去 会有两个可以注册码

这是第一个可疑注册码我们记下来

这是第二个注册码 我们也记下来,经过测试他就是真码
但我们今天玩的是 这个真码究竟是如何算出来的,我们在出现真码的上一个CAll, F7跟进去

进去 后单步跟 我们又一次看到了 机器码
我们在出现机器码的下一个CAll跟进去 这里就是算法部分了, 很简单的 适合和我一样的新手来分析 这里我就把算法部分贴出来 如有不对的地方,还请指正



004DEF68    8D43 14         lea eax,dword ptr ds:
004DEF6B    50            push eax
004DEF6C    8BC3            mov eax,ebx
004DEF6E    5A            pop edx                                  ; 0012F8A8
004DEF6F    8BCA            mov ecx,edx
004DEF71    99            cdq
004DEF72    F7F9            idiv ecx
004DEF74    8BF2            mov esi,edx
004DEF76    8D43 1E         lea eax,dword ptr ds:
004DEF79    50            push eax
004DEF7A    8BC3            mov eax,ebx
004DEF7C    5A            pop edx                                  ; 0012F8A8
004DEF7D    8BCA            mov ecx,edx
004DEF7F    99            cdq
004DEF80    F7F9            idiv ecx
004DEF82    03F2            add esi,edx
004DEF84    46            inc esi                                                                  上面的计算是 计算每次循环所取机器码位置的2倍再加1的值放到esi中
004DEF85    8B45 FC         mov eax,dword ptr ss:   
004DEF88    0FB64418 FF   movzx eax,byte ptr ds:   每循环一次 将机器码的其中一位给 eax
004DEF8D    03C6            add eax,esi                                                      esi为上面所取机器码所在位置的2倍再加1
004DEF8F    40            inc eax                              eax自增1
004DEF90    83C0 CF         add eax,-0x31                                             eax-31
004DEF93    83E8 09         sub eax,0x9                        eax-9
004DEF96    72 08         jb short USBKille.004DEFA0                              进行判断 小于就跳
004DEF98    83C0 F9         add eax,-0x7                         eax-7                                       符合条件的话 就是 此时eax-7>0
004DEF9B    83E8 1A         sub eax,0x1A                         eax-1A                                       符合条件的话就是 此时 eax-1A<0
004DEF9E    73 1E         jnb short USBKille.004DEFBE                               进行判断不小于就跳
004DEFA0    8D45 F0         lea eax,dword ptr ss:
004DEFA3    8B55 FC         mov edx,dword ptr ss:
004DEFA6    0FB6541A FF   movzx edx,byte ptr ds:      开始计算真正的注册码 取机器码中的一位(每次循环按顺序取一位)
004DEFAB    03D6            add edx,esi                                                            edx为这一次循环中所取的机器码其中的一位 esi为上面所取机器码所在位置的2倍再加1
004DEFAD    42            inc edx                                                                      edx自增1将edx此时的值转换成ascii码 就是对应的机器码位置计算出来的注册码 我们将每一次循环的值记下来就是真正的注册码了
004DEFAE    E8 E961F2FF   call USBKille.0040519C
004DEFB3    8B55 F0         mov edx,dword ptr ss:
004DEFB6    8D45 F4         lea eax,dword ptr ss:
004DEFB9    E8 BE62F2FF   call USBKille.0040527C
004DEFBE    43            inc ebx
004DEFBF    4F            dec edi
004DEFC0^ 75 A6         jnz short USBKille.004DEF68


jb 小于就跳
jnb 不小于就跳
检测的是CF标志位 CF标志位 对于无符号计算时 最高位进位或者借位时,则为1      

pwp 发表于 2017-6-6 14:59

{:1_921:}楼主厉害了,学汇编学了多久了呢?我也在学汇编了,不知什么时候才有你这技术

夏洛魂 发表于 2017-6-6 20:49

cqr2287 发表于 2017-6-6 19:51
挺好的。有几个我看不太明白的地方(故打算自己跟一下算法)
1. esi为上面所取机器码所在位置的2倍再加1...

比如机器码是ABCDEFG他的注册码的每一位是根据 机器码的每一位取的算注册码第一位的时候 取机器码中的A 然后判断是否符合条件 符合的话就计算注册码的第一位那A是机器码的第一位,esi就是 2乘以1然后再加1

zhaotianrun 发表于 2017-6-6 14:16

能不能发一下软件,我也学习学习谢谢

夏洛魂 发表于 2017-6-6 14:22

zhaotianrun 发表于 2017-6-6 14:16
能不能发一下软件,我也学习学习谢谢

百度搜索 u盘杀毒专家就有的

筱闲 发表于 2017-6-6 15:00

qxyokok 发表于 2017-6-6 15:12

新手确实很受用,仔细研读了好半天。非常感谢楼主的分享

xiaojia735 发表于 2017-6-6 15:29

感觉用不上 不过还是支持下

xingmax1900 发表于 2017-6-6 15:36

学习一下,多谢教导。

Pythoner 发表于 2017-6-6 15:51

这个东西现在都收费啦?我记得很多年前我还经常用,那个时候xp时代,lpk.dll病毒很厉害的,别的都杀不了,只有这个小工具能杀!

pys 发表于 2017-6-6 16:22

好不错,!!
页: [1] 2 3 4 5 6 7 8
查看完整版本: XXXXXU盘杀毒的追码过程