首先介绍点去nag相关知识:
1.去对话框之类的nag,去话框一般都是用DialogBoxParam,DialogBox,CreateDialog等之类的API创建的,
具体情况我们可以看软件的输入表(ollydbg里面按Ctrl+N),看它调用了那些创建对话框的函数,再用
bpx下断点,如果这类API是封装了的则要用bp下断点。如果找到了nag调用的地方了,刚相办法退出nag
再按F8一直返回,找能跳过调用nag call ,要么跳过,要么就是nop掉就可以了。
2.用CreateWindow创建的nag,这种nag 是会有一个消息循环的,找消息循环很简单,这里介绍我用的一种
按f9运行直到nag的出现,再 点击工具栏上面的 || 来中断程序,接着就是按F8一直返回,就可以找到消息
循环了。找到之后就想办法退出这个循环,退出之后再按F8返回,nop掉调用nag的call就可以了。。
3.有些软件在你试用期过后,你退出消息循环这后是无法返回的,就直终止了进程。这种情况只有一步一步
跟踪了。。
声明:这个软件去nag早就有人完成了,你可以在本论坛直接搜索,由于是没写教程,所以我在这里贴上一篇了.....
这里我们先用ollydbg载入SplkenKing.exe
005E3410 SpokenK> 60 pushad
005E3411 BE 00205500 mov esi,SpokenKi.00552000
005E3416 8DBE 00F0EAFF lea edi,dword ptr ds:[esi+FFEAF000]
再一直向下拖,直到看见 下面没有代码了,就按f4直接到最下面的一个jmp 将它记下来
005E3595 ^\E9 BF3AF8FF jmp SpokenKi.0056707C
在command里面断点bp DeleteFileA F9运行 就会被断下来,再按f8返回就到了 5692f0
005692E6 A1 982E5700 mov eax,dword ptr ds:[572E98]
005692EB E8 00D8FFFF call SpokenKi.00566AF0
005692F0 FF05 8C2E5700 inc dword ptr ds:[572E8C]--->这里就是加次数的
005692F6 8B15 DCDF5600 mov edx,dword ptr ds:[56DFDC] ; SpokenKi.0057281C
选择 5692eb再回车跟入
00566AF0 55 push ebp
00566AF1 8BEC mov ebp,esp
00566AF3 51 push ecx
..............
00566C16 E8 6D25EAFF call SpokenKi.00409188
00566C1B A3 8C2E5700 mov dword ptr ds:[572E8C],eax
上面一句的nop掉,这里就是取出的次数,下面次数就清0了。
00566C20 33C0 xor eax,eax
bc DeleteFileA 去掉断点
再向上拖找到
00569071 A1 882E5700 mov eax,dword ptr ds:[572E88]
00569076 E8 25B6EFFF call SpokenKi.004646A0
0056907B A3 902E5700 mov dword ptr ds:[572E90],
...............
005690E3 FF05 902E5700 inc dword ptr ds:[572E90]----->这里是再加次数
出车跟入
004646A0 55 push ebp
004646A1 8BEC mov ebp,esp
004646A3 83C4 EC add esp,-14
...............
00464851 ^\EB F0 jmp short SpokenKi.00464843
00464853 8B45 F4 mov eax,dword ptr ss:[ebp-C]改为xor eax,eax 这里是传入次数。
00464856 5E pop esi
好了在这里直接按f9运行直到nag出现再点工具栏上面的 || 中断按F8直到消息循环。
在消息循环下面下一个断点,再点击试用来退出消息循环,再按f8返回。就会要下面
00554863 8B10 mov edx,dword ptr ds:[eax]
00554865 FF92 D8000000 call dword ptr ds:[edx+D8]这是调用nag的call nop调
0055486B 8B45 FC mov eax,d
到这里所有的修改就完成了。。
现在再回到 upx的外壳 005E3595 按下面方式修改,(这里就是所谓的SMC技术)
005E3594 61 popad
005E3595 B8 33C0905E mov eax,5E90C033
005E359A A3 53484600 mov dword ptr ds:[464853],eax
005E359F B8 90909090 mov eax,90909090
005E35A4 A3 65485500 mov dword ptr ds:[554865],eax
005E35A9 A3 67485500 mov dword ptr ds:[554867],eax
005E35AE A3 1B6C5600 mov dword ptr ds:[566C1B],eax
005E35B3 A3 1C6C5600 mov dword ptr ds:[566C1C],eax
005E35B8 ^ E9 BF3AF8FF jmp SpokenKi.0056707C
打开原upx加壳的原程序, 用十六进制工具按上面修改就可以了。。
2005.09.30 by ftts[BCG]
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)