为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

z一个易语言程序的爆破:把注册窗口当NAG去除

2018-02-18 8页 doc 25KB 38阅读

用户头像

is_751406

暂无简介

举报
z一个易语言程序的爆破:把注册窗口当NAG去除z一个易语言程序的爆破:把注册窗口当NAG去除 ap0x * Sign.By.fly * 20080504 * 用PEid查壳,显示为:RLPack V1.21 (aPlib 0.43) -> ap0x * Sign.By.fly*20080504 * 呵呵,一个简单的壳,好了,我们直接用OD载入脱壳: 00423FC2 > 60 pushad //载入后OD停在此处 00423FC3 E8 00000000 call 9无密码?00423FC8 00423FC8 8B2C24 mov ebp,dword ptr...
z一个易语言程序的爆破:把注册窗口当NAG去除
z一个易语言程序的爆破:把注册窗口当NAG去除 ap0x * Sign.By.fly * 20080504 * 用PEid查壳,显示为:RLPack V1.21 (aPlib 0.43) -> ap0x * Sign.By.fly*20080504 * 呵呵,一个简单的壳,好了,我们直接用OD载入脱壳: 00423FC2 > 60 pushad //载入后OD停在此处 00423FC3 E8 00000000 call 9无密码?00423FC8 00423FC8 8B2C24 mov ebp,dword ptr ss:[esp] 用ESP定律,一下子就来到了: 00424135 61 popad 00424136 - E9 C5CEFDFF jmp 9无密码?00401000 0042413B 90 nop 0042413C 61 popad 0042413D C3 retn 再F8单步一步就到了OEP: 00401000 E8 06000000 call 9无密码?0040100B 00401005 50 push eax 00401006 E8 BB010000 call 9无密码?004011C6 ; jmptokernel32.ExitProcess 0040100B 55 push ebp 0040100C 8BEC mov ebp,esp 0040100E 81C4 F0FEFFFF add esp,-110 00401014 E9 83000000 jmp 9无密码?0040109C Dump下来然后就修复,此时查壳显示为:E Language -> WuTao * Sign.By.fly * 运行一下,晕,直接退出了,看来有自校验。 好了,下步我们就是要先把这个自校验去掉。用OD载入脱壳修复后的程序,下好断点:bp ExitProcess F9运行,中断了下来,不过是停在了系统空间,我们根据堆栈: 0013F74C 100296ED /CALL 到 ExitProcess 来自 krnln.100296E7 0013F750 00000000 \ExitCode=0 0013F754 0013F78C 0013F758 004107E9 Unpack_.004107E9 返回到: 004107D7 > /41 /inc ecx 004107D8 . 51 push ecx 004107D9 . 50 push eax 004107DA . 3BC8 cmp ecx,eax 004107DC . 0F8F 0E000000 jg Unpack_.004107F0 004107E2 . 6A 00 push 0 004107E4 . E8 BB770000 call Unpack_.00417FA4 //就是此CALL调用退出 004107E9 . 83C4 04 add esp,4 004107EC . 58 pop eax 004107ED . 59 pop ecx 004107EE .^\EB E7 \jmp short Unpack_.004107D7 然后找到段着下断: 00410635 /. 55 push ebp //此处段着,F2下断 00410636 . 8BEC mov ebp,esp 00410638 . 81EC 24000000 sub esp,24 0041063E . 6A FF push -1 00410640 . 6A 08 push 8 下好断后,我们来过,F9运行,直接中断了刚才下好断点的段首,我们F8单步跟踪: 00410727 . 8945 F8 mov dword ptr ss:[ebp-8],eax //留意提示窗口: //eax=001945A0, (ASCII "Unpack_.exe")=出现程序名 //堆栈 ss:[0013F784]=00000024 0041072A . FF75 F8 push dword ptr ss:[ebp-8] ; /Arg3 0041072D . 68 39354000 push Unpack_.00403539 ; Arg2 =00403539 00410732 . FF75 FC push dword ptr ss:[ebp-4] ; Arg1 00410735 . B9 03000000 mov ecx,3 ; 0041073A . E8 1E84FFFF call Unpack_.00408B5D;\Unpack_.00408B5D 运行到下面的代码时,出现了一个比较,我们看一下堆栈里的值: 0041079E > \817D F0 70940000 cmp dword ptrss:[ebp-10],9470 //堆栈 ss:[0013F77C]=00026000 004107A5 . B8 00000000 mov eax,0 004107AA . 0F9FC0 setg al 004107AD . 68 02000080 push 80000002 004107B2 . 6A 00 push 0 004107B4 . 50 push eax 那个26000是什么值我们查看一下脱壳后的程序unpack_.exe的属性: 大小: 152 KB (155,648 字节)=转成16进制就是=26000 呵呵,原来是校验程序大小是否改变。 好了,把9470改成26000,然后我们再搜索一下常数,看看还有没有在其他地方核验,如图,有多处,我们一一修改过来吧! 保存一份,运行起来了,呵呵!自检验处理完毕,开始爆破! 先大致的一下思路: 1、由于不能看到程序的主界面(不能试用),所以可以把出现的窗口当作NAG窗口对待 2、试注册,没有任何反应 3、由简到难,所以先试试去除NAG后的 采用F12堆栈暂停法来逆向返回,如图: 没有返回到程序的领空(这里大多数E语言的特征,多在krnln里转悠,呵呵! 看不明确,只好多下几个断点了: 断点一: 100530AF 83BF B4010000 0>cmp dword ptr [edi+1B4], 1 100530B6 75 1F jnz short 100530D7 100530B8 8B5424 1C mov edx, dword ptr [esp+1C] 100530BC 8BB3 6C020000 mov esi, dword ptr [ebx+26C] 100530C2 6A 01 push 1 100530C4 8BCB mov ecx, ebx 100530C6 8993 6C020000 mov dword ptr [ebx+26C], edx 100530CC E8 4F120000 call 10054320 ; 1 100530D1 89B3 6C020000 mov dword ptr [ebx+26C], esi 断点二: 10052662 8A4C38 04 mov cl, byte ptr [eax+edi+4] 10052666 83C4 0C add esp, 0C 10052669 F6C1 01 test cl, 1 1005266C 0F84 B3070000 je 10052E25 10052672 8B13 mov edx, dword ptr [ebx] 10052674 6A 00 push 0 10052676 52 push edx 10052677 8BCE mov ecx, esi 10052679 E8 A2080000 call 10052F20 ; 2 断点三: 1005A35B 85C0 test eax, eax 1005A35D 74 2C je short 1005A38B 1005A35F 8B0E mov ecx, dword ptr [esi] 1005A361 8B56 18 mov edx, dword ptr [esi+18] 1005A364 894424 0C mov dword ptr [esp+C], eax 1005A368 8D4424 08 lea eax, dword ptr [esp+8] 1005A36C 6A 00 push 0 1005A36E 50 push eax 1005A36F 68 D5070000 push 7D5 1005A374 894C24 14 mov dword ptr [esp+14], ecx 1005A378 895424 1C mov dword ptr [esp+1C], edx 1005A37C E8 3FCCFFFF call 10056FC0 ; 3 1005A381 85C0 test eax, eax 1005A383 75 06 jnz short 1005A38B 下了这几个断点后,重新载入运行,中断在了第3个,我们单步改跳转,试着跳过调用。 幸运,主界面出现了,呵呵,有门!留意一下堆栈,有一个返回到程序领空的地址调用: 0013FC48 001986D8 0013FC4C 00189DC8 0013FC50 00000000 0013FC54 00198698 0013FC58 0013FC9C 0013FC5C 10028E79 返回到 krnln.10028E79 0013FC60 0013FC6C 0013FC64 00000003 0013FC68 0013FC80 0013FC6C 00000000 0013FC70 00000000 0013FC74 00000000 0013FC78 0040C978 返回到 Unpack_.0040C978 来自 Unpack_.00417FE0 我们返回到这里看看: 0040C935 51 push ecx 0040C936 50 push eax 0040C937 3BC8 cmp ecx, eax 0040C939 0F8F 40000000 jg 0040C97F 0040C93F 68 02000080 push 80000002 0040C944 6A 00 push 0 0040C946 68 01000000 push 1 0040C94B 68 01000100 push 10001 0040C950 68 00000106 push 6010000 0040C955 68 01000152 push 52010001 0040C95A 68 01000100 push 10001 0040C95F 68 7B290106 push 601297B 0040C964 68 7A290152 push 5201297A 0040C969 68 03000000 push 3 0040C96E BB 20030000 mov ebx, 320 0040C973 E8 68B60000 call 00417FE0 0040C978 83C4 28 add esp, 28 0040C97B 58 pop eax 0040C97C 59 pop ecx 0040C97D ^ EB B5 jmp short 0040C934 0040C97F 83C4 08 add esp, 8 0040C982 8B5D F8 mov ebx, dword ptr [ebp-8] 往上看,刚刚上面有一个比较和跳转!我们将 0040C939 0F8F 40000000 jg 0040C97F 更改为: 0040C939 /EB 44 jmp short 0040C97F 保存一份,试运行,可爱的界面出现了,功能正常,OK! 幸运的我,就这样结束了,呵^#^………… 因一些原因,目标程序就不放上来了,呵! 【作者:佚名 来源:比特网】 (责任编辑:和讯网站) 易语言
/
本文档为【z一个易语言程序的爆破:把注册窗口当NAG去除】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索