您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
kcar是什么意思(kcal是什么意思)
脱壳,程序,发动机kcar是什么意思(kcal是什么意思)
发布时间:2019-02-08加入收藏来源:互联网点击:
工具:OllyDbg1.09英文版、DUMP插件、PEditor
系统:Win98SE
关键词:脱壳、OllyDbg、OD、DUMP、PUSHAD、POPAD
大多数壳都有一个共同的特点。在壳准备开始解压时都要执行PUSHAD,当壳解压
完时都要调用POPAD。到底PUSHAD和POPAD是什么干什么用的呢?其实PUSHAD是用来将
所有普通寄存器顺序进栈的指令,POPAD是所有普通寄存器顺序出栈指令。POPAD的出
栈顺序和PUSHAD相反。壳为了保护寄存器,便在解压前将所有寄存器进栈保护起来,
当解压完成后又将寄存器出栈,恢复其原貌,并将IP设置为原程序的OEP。这样我们就可以通过这个特点快速脱掉多种软件的壳。
ASPACK篇
先用ASPACK将NOTEPAD.EXE加壳。用OllyDbg(以下简称OD)载入。看见光标停在
壳的入口处。
0040D001>60PUSHAD;壳的入口。准备开始解压,保护寄存器
0040D002E803000000CALLNOTEPAD.0040D00A
我们不管它,直接向下翻页找POPAD指令。在40D3AF处找到POPAD
0040D3AF61POPAD;解压完成,恢复寄存器
0040D3B07508JNZSHORTNOTEPAD.0040D3BA
0040D3B2B801000000MOVEAX,1
0040D3B7C20C00RETN0C
0040D3BA68CC104000PUSHNOTEPAD.004010CC;返回到原程序OEP处
0040D3BFC3RETN
选定40D3AF这一行,F4运行到此处。在这里说明壳已经完成解压工作。并且返回到原
程序的入口处。F8单步到4010CC,这里便是原程序的OEP。用DUMP插件直接DUMP出来就可以了(在DUMP时注意将入口点改为10CC,即4010CC-400000=10CC,400000是映象基地址)。文件大小是77059字节,用PEditor重建PE头便可以了。未压缩的文件大小是53248字节,脱壳后的文件大小是60930字节。
用UPX将NOTEPAD.EXE加壳,然后用OD载入。停在PUSHAD处,用脱ASPACK同样的方
法,向下翻页找POPAD。
0040E9FE61POPAD
0040E9FF-E9C826FFFFJMPNOTEPAD.004010CC
下面的JMP就是跳转到程序的OEP处。F4到40E9FF处,F8单步一下,来到OEP处,DUMP出来。DUMP文件的大小是65536字节,直接就可以运行。为了完美,用PEditor重建PE头。那么脱壳后的文件大小是60293字节。
用上面说的方法,很多种壳都可以快速的手动脱掉。如果你没有OD的DUMP插件,
可以到新论坛的下载区找。如果实在没有,也可以直接停在OEP处用PEDump来DUMP。很久没有写东西了。这一篇是写给初学者练手的。其实壳也是软件,再怎么复杂都有可能被脱下来。祝你好运。
另外,转载时请保持本文的完整。
--------------------------------------------------------------------------------
--作者:admin
--发布时间:2005-10-1117:10:00
--用Ollydbg手脱EncryptPEV1.2003.5.18加壳的DLL
有兄弟让看看EncryptPE加壳的DLL,我说新版的就不行了,搞不定的。后来看是EncryptPEV1.2003.5.18旧版加壳的,应该用的是老王老师发布的免费版。呵呵,所以脱了一下,顺便记录过程。
大家可以自己用EncryptPEV1.2003.5.18免费版加个EdrLib.dll看看。
—————————————————————————————————
一、避开IAT加密
设置Ollydbg忽略所有的异常选项。用IsDebug1.4插件去掉Ollydbg的调试器标志。
添加“同时忽略0EEDFADE、C0000008、009B25C、00953D74”异常。
代码:--------------------------------------------------------------------------------
0087700060pushad//进入OD后停在这
008770019Cpushfd
0087700264:FF3500000000pushdwordptrfs:[0]
00877009E879010000callEdrLib.00877187
--------------------------------------------------------------------------------
下断:BPIsDebuggerPresent断下后取消断点
现在我们Ctrl+G:711A0000
为何用这个地址?因为V12003518.EPE是相同的。呵呵,钻了个旧版的空子。
其实可以再BPGetProcAddress,根据返回地址来判断。如果返回地址是711XXXXX,说明这是V12003518.EPE的调用,就可以取消断点Ctrl+F9返回了。具体情况以堆栈的返回地址为准。
现在Ctrl+S在“整个区段”搜索命令序列:
代码:--------------------------------------------------------------------------------
moveax,edi
movedx,dwordptrss:[ebp-8]
movdwordptrds:[eax],edx
xoreax,eax
--------------------------------------------------------------------------------
找到在711A339F处,我们在711A339F处下个硬件执行断点。
现在我们关闭Ollydbg,重新载入这个dll,直接Shift+F9运行,中断在711A339F处
代码:--------------------------------------------------------------------------------
711A339F8BC7moveax,edi
711A33A18B55F8movedx,dwordptrss:[ebp-8]
//改为:movedx,dwordptrss:[ebp-4]★正确函数写入
711A33A48910movdwordptrds:[eax],edx
711A33A633C0xoreax,eax
711A33A85Apopedx
711A33A959popecx
711A33AA59popecx
711A33AB64:8910movdwordptrfs:[eax],edx
711A33AEEB0AjmpshortV1200351.711A33BA
--------------------------------------------------------------------------------
把711A33A1处修改好之后,取消以前下的711A339F处的断点。
再Ctrl+S搜索命令序列:
代码:--------------------------------------------------------------------------------
addebx,4
moveax,dwordptrss:[ebp-4C]
addeax,4
--------------------------------------------------------------------------------
找到在711A43C2处,我们在下面xoreax,eax的711A4401下断。Shift+F9运行
代码:--------------------------------------------------------------------------------
711A43C283C304addebx,4
711A43C58B45B4moveax,dwordptrss:[ebp-4C]
711A43C883C004addeax,4
711A43CB8945B4movdwordptrss:[ebp-4C],eax
711A43CE8B03moveax,dwordptrds:[ebx]
711A43D085C0testeax,eax
711A43D20F8739FDFFFFjaV1200351.711A4111
711A43D8A174C71B71moveax,dwordptrds:[711BC774]
711A43DD803800cmpbyteptrds:[eax],0
711A43E0751FjnzshortV1200351.711A4401
711A43E28B45C4moveax,dwordptrss:[ebp-3C]
711A43E583C014addeax,14
711A43E88945C4movdwordptrss:[ebp-3C],eax
711A43EB8B45C4moveax,dwordptrss:[ebp-3C]
711A43EE83780C00cmpdwordptrds:[eax+C],0
711A43F2760DjbeshortV1200351.711A4401
711A43F48B45C4moveax,dwordptrss:[ebp-3C]
711A43F783781000cmpdwordptrds:[eax+10],0
711A43FB0F8738FCFFFFjaV1200351.711A4039//循环处理IAT
711A440133C0xoreax,eax//此处下断!★
--------------------------------------------------------------------------------
当我们中断在711A4401处时IAT已经处理完毕,此时就可以用ImportREC得到正确的输入表了。
因为EncryptPE后面有自校验,所以我们返回711A33A1处,点右键->撤销选择,恢复原来的代码。
—————————————————————————————————
二、得到重定位表信息、获得OEP
Ctrl+S在“整个区段”搜索命令序列:
为什么日本的K-car大多数用的都是三缸发动机?
由于K-car的自重轻,排量都不算大,往往都在1.0升以内,理论上做成2、3、4缸都是可以的,4缸更容易达到先天的运转平衡,但是相对2缸和3缸,缸体就更重一点还需要更多的喷油和点火装置,而2缸虽然重量轻,但是排量很小对于驱动的汽车来说还是略显单薄。所以3缸从实践和发展的经历被证明更适合平衡成本、体积、重量,运转的平衡性也可以通过平衡轴来实现。
和20多年前的夏利1.0升发动机不同,今天的1.0T缸内直喷发动机,在扭矩和功率方面可以完胜1.6升自然吸气发动机,甚至不输给1.5升的缸内直喷发动机,而且在购置的税费和车船税等方面也都更具有优势。只要国内的油品质量能够与时俱进,那么小型的3缸发动机不仅在K-car成为主流,在更多的家用车上都可能成为主流配置,甚至搭配新能源做成混动车型,不仅动力输出更出色,能耗也会低的惊人
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |