VACN 发表于 2008-9-20 21:49:02

我传不了附件。太大了。。你到PYG专用工具里看。有个LordPE_ SUPER。PYG(集成了网上....)的那个/应该很好找!

小生我怕怕 发表于 2008-9-21 09:50:44

手动查找IAT就可以啦,要是不会手动可以用CHimpREC到时候会有一个无效指针我来留个笔记给你吧
━━━━━━━━━━━━━━━━━━━━━━━━━━
00400154 >8725 28A54400   xchg dword ptr ds:,esp         //OD载入
0040015A    61            popad                                  //单步F8
0040015B    94            xchg eax,esp                           //到这里时注意堆栈窗口
0040015C    55            push ebp
0040015D    A4            movs byte ptr es:,byte ptr ds:
0040015E    B6 80         mov dh,80
00400160    FF13            call dword ptr ds:
00400162^ 73 F9         jnb short LordPE.0040015D
━━━━━━━━━━━━━━━━━━━━━━━━━━
0044A52C   004001E8LordPE.004001E8
0044A530   004001DCLordPE.004001DC
0044A534   004001DELordPE.004001DE                              //堆栈窗口
0044A538   00404340LordPE.00404340                              //此时在这里右键反汇编窗口中跟随,(此时的00404340就是我们的OEP)
0044A53C > 7C801D77kernel32.LoadLibraryA                        
0044A540 > 7C80ADA0kernel32.GetProcAddress
0044A544   00000000
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404340    0000            add byte ptr ds:,al                //反汇编窗口跟随时会显示未解码的样式删除模块分析就可以成需要啦
00404342    0000            add byte ptr ds:,al                //我们就在上面的00404340处执行右键断点,设置硬件执行断点
00404344    0000            add byte ptr ds:,al                //设置好硬件断点,F8运行一下就停在了OEP
00404346    0000            add byte ptr ds:,al            
00404348    0000            add byte ptr ds:,al               
0040434A    0000            add byte ptr ds:,al
0040434C    0000            add byte ptr ds:,al
0040434E    0000            add byte ptr ds:,al
00404350    0000            add byte ptr ds:,al
00404352    0000            add byte ptr ds:,al
━━━━━━━━━━━━━━━━━━━━━━━━━━
00404340    51            push ecx                                 //这里即是我们的OEP
00404341    56            push esi                                 //此时dump程序运行 lmportrce 修复会出现就一排指针,一般除VB程序外其他语言都不可能的
00404342    6A 00         push 0                                 //我们注意下面这句 call dword ptr ds:,我们在命令栏输入 d 419160,回车
00404344    FF15 60914100   call dword ptr ds:               //注意数据窗口
0040434A    A3 5CE74100   mov dword ptr ds:,eax
0040434F    E8 BC000000   call LordPE.00404410
00404354    8B35 D8904100   mov esi,dword ptr ds:            ; kernel32.ExitProcess
0040435A    85C0            test eax,eax
0040435C    75 04         jnz short LordPE.00404362
━━━━━━━━━━━━━━━━━━━━━━━━━━
004191607C80B6A1kernel32.GetModuleHandleA                        //我们此时停在这里
004191647C801A24kernel32.CreateFileA                           //拖动滚动条向上,找带有第一句带有API函数的
004191687C80ADA0kernel32.GetProcAddress                        
0041916C7C80220Fkernel32.WriteProcessMemory
004191707C809920kernel32.GetCurrentProcessId
004191747C802442kernel32.Sleep
004191787C80180Ekernel32.ReadFile
━━━━━━━━━━━━━━━━━━━━━━━━━━
0041900C77DAEAF4ADVAPI32.RegCreateKeyExA                         //找到这一句就是最上面啦,这个1900c也就是我们的 RVA
0041901077DAEBE7ADVAPI32.RegSetValueExA                        //此时运行我们的 lmportrce OEP填写 4340 RVA填上1900C 大小填上1000就好
0041901477DCD11BADVAPI32.LookupPrivilegeValueA                   //会发现没有一个有效指针,点显示无效---右键剪切掉指针即可
0041901877DA7753ADVAPI32.OpenProcessToken                        //剪切指针后会发现全部有效啦,有186个指针,抓取我们dump出去的程序
0041901C77DCC123ADVAPI32.RegDeleteKeyA                           //运行成功,收工

VACN 发表于 2008-9-25 19:02:29

明白了。。哈哈。。。原来是这样。。。还是FSG经典入口形式比PEID查的OEP准啊。。谢谢。。对了。怎么标记已解决啊?

lgjxj 发表于 2008-9-25 19:17:54

首先你要明白什么是无效指针,一般的可以剪掉,但对于把你自定义的部份代码抽到的壳里运行的部份加密壳,在没有修复脚本前,没办法的情况下要自己跟踪,得到解码后的代码,自己去建一个空区段,然后把获得的代码粘过去,这是要修改 ESI 等指针数据,指向新代码地址,需然不是什么技术活,但确全是体力劳动,那个累,说起都害怕

[ 本帖最后由 lgjxj 于 2008-9-25 19:19 编辑 ]

VACN 发表于 2008-9-28 09:40:54

恩,谢谢~~~~
页: 1 [2]
查看完整版本: 关于脱壳的一些问题、、