【文章标题】: 某net+狗软件破解过程
【文章作者】: 冷面书生
【作者邮箱】: cracker_tao@163.com QQ:35749778
【下载地址】: 无
【加壳方式】: 无
【保护方式】: 加密狗
【编写语言】: .net
【使用工具】: Peid,OllyDbg,Ida,Reflector.exe
【操作平台】: WinXp,sp2
【作者声明】: 第一次写文章,不足之处请多包含。只是感兴趣,说一个思路,没有其他目的。失误之处敬请诸位大侠赐教。
--------------------------------------------------------------------------------
【详细过程】
受一朋友所拖,叫帮忙看一软件,欣然应允。拿过软件安装,过程中安装.net2.0framework环境,心中初步估计此软件为一NET软件,OK,继续。安装完成后运行软件,提示无法读取加密狗。用Reflector打开主程序。找到入口函数main(),然后分析(此程序没有混淆,欣喜!)。
ClassGetData为主要的读狗分析类,进入:
通过此段代码可以分析出程序中是如何拿狗中数据来用的。得出结论:读出狗中数据必须大于5位,狗中数据后5位必须与用户ID相等。OK,现在我们可以在程序中在读狗的函数处进行模拟了。回到安装目录,我们可以发现有一htbdog.dll,我们知道次DLL就是软件跟狗进行数据交互的文件。OD载入程序,在读狗函数处下断点。中断到此处:
10001110 >/$ 8A4424 04 mov al, byte ptr [esp+4]
10001114 |. 8B4C24 08 mov ecx, dword ptr [esp+8]
10001118 |. 66:8B5424 0C mov dx, word ptr [esp+C]
1000111D |. A2 F8350210 mov byte ptr [100235F8], al
10001122 |. 66:8B4424 10 mov ax, word ptr [esp+10]
10001127 |. 890D 04360210 mov dword ptr [10023604], ecx
1000112D |. 8B4C24 14 mov ecx, dword ptr [esp+14]
10001131 |. 66:8915 08360>mov word ptr [10023608], dx
10001138 |. 66:A3 0A36021>mov word ptr [1002360A], ax
1000113E |. 890D F4350210 mov dword ptr [100235F4], ecx
10001144 |. E8 1E650000 call 10007667------------------------------------readdog(),通过查开发文档我们知道返回值EAX=0为调用狗成功,同时ECX里保存的为读入的狗内数据。跟踪着个CALL进入我们重新写下返回值。
10001149 |. 8B5424 18 mov edx, dword ptr [esp+18]
1000114D |. A3 F0350210 mov dword ptr [100235F0], eax
10001152 |. 8902 mov dword ptr [edx], eax
10001154 \. C3 retn
///////////////////////////////////////////CALL 10007667进入//////////////////////////////////
7 push edx
.text:10007668 push ecx
.text:10007669 jmp short loc_10007679
.text:10007669
.text:1000766B ; ---------------------------------------------------------------------------
.text:1000766B jo short loc_100076E0
.text:1000766B
.text:1000766D jbe short loc_100076E8
.text:1000766D
.text:1000766F jl short loc_100076F0
.text:1000766F
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我们不管他的代码了,我们自己写,我写的代码如下:
667 ; DATA XREF: sub_1000EA5B+69o
.text:10007667 mov eax, 24h //循环36次
.text:10007667
.text:1000766C
.text:1000766C loc_1000766C: ; CODE XREF: sub_10007667+12j
.text:1000766C mov dword ptr [ecx], 31h //每次给狗中返回数据写成1
.text:10007672 add ecx, 1
.text:10007675 dec eax
.text:10007676 cmp eax, 0
.text:10007679 jge short loc_1000766C
.text:10007679
.text:1000767B xor eax, eax ///EAX设置为0
.text:1000767D retn
OK,完工,把自己改造好的DLL,拷贝过去覆盖原来的,然后输入CUSTOMID的时候输入5个1就可以了。
第一次写破文,有丢丑的地方请兄弟们多多包涵。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法