yutao531315 发表于 2014-3-17 00:57

菜鸟分享一个,怎么不脱壳 写补丁文件

作者声明..只是爱好,没有其他目的 失误之处,还请各位赐教    一时兴起吧,看到一个程序的 是加的 ASP的壳 ,我的想法就是 不脱壳,直接用od 能够保存下来,
好下面开始演示.................
很简单的 asp 直接esp 定律到达OEP 不过呢,建议大家用多种方式找到这个oep 练手嘛,可以用
单步跟踪 一步步跟下去,还可以用 查找所有命令序列popad 这是一个出口,用ctrl+ L下个寻找
oep 就不说了比较简单,下面进入正题开始讲解...


004053AF    61            popad//关键句///这里是 popad 下面就是进入到 程序的oep
004053B0    75 08         jnz Xcrackme_.004053BA
004053B2    B8 01000000   mov eax,0x1
004053B7    C2 0C00         retn 0xC
004053BA    68 00104000   push crackme_.00401000//把oep 搞进去..........
004053BF    C3            retn   ///返回到OEP洛........
////////////////*********



进入到关键点位置

004011FC|.E8 99000000   call crackme_.0040129A                   ; \GetDriveTypeA
00401201|.83F8 05       cmp eax,0x5                     //////程序是这个位置比较 eax 跟5 是否相等,根据我们调试得到 上面CALL 返回EAX 是等于3
00401204|.74 17         je Xcrackme_.0040121D ////通俗点说 je 相等咋跳,让 eax 跟 比较的值相等就可以跳过错误 ,,
00401206|.6A 30         push 0x30                              ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401208|.68 14304000   push crackme_.00403014                   ; |Title = "FaNt0m's CrackMe #3 -- CD Check"
0040120D|.68 40304000   push crackme_.00403040                   ; |Text = "Error finding CDROM"
00401212|.6A 00         push 0x0                                 ; |hOwner = NULL
00401214|.E8 51000000   call crackme_.0040126A                   ; \MessageBoxA
///////////////可以看汇编代码得出 00401201 位置机器码为 83    00401202机器码为 F8 00401203的位置为 05
///////////////嘎嘎嘎 是不是可以通过 修改00401203的数据 05 改成为03就可以实现可实现让JE跳转呢.................................原理不解释 相信大家懂点汇编就能理解
//////*************************************************

{:301_1001:}开始做坏事了............

///接着我们就要在壳的外面进入oep的时候做手脚了
先在下面代码出找一段空位置 直接 90掉 nop
我找的代码是
004053AF    61            popad
004053B0    75 08         jnz Xcrackme_.004053BA/// 这是入口先让这句跳转到 我们修改代码位置




004053B0   /E9 B3010000   jmp crackme_.00405568 ///跳转向的位置 是空代码,大家可以使劲随便插......
004053B5   |90            nop
004053B6   |90            nop
004053B7   |C2 0C00         retn 0xC


00405568    90            nop
00405569    90            nop
0040556A    90            nop
0040556B    90            nop
0040556C    90            nop///空代码




接着就需要忘内存里面写数据了........
代码是
mov byte ptr ],03    ///这里就把数据写进去 上面我们解说的关键位置 继续一个jmp 就可以飞回去了
{:301_1003:}





004053BA    68 00104000   push crackme_.00401000   //就是跳到这个位置来 要是不是跳到这个位置 oep都没了哈哈

jmp 004053BA///




修改好的就是
00405568    C605 03124000 0>mov byte ptr ds:,0x3
0040556F^ E9 46FEFFFF   jmp crackme_.004053BA


这样就可以了,接着我们进去里面看看我们刚刚修改的数据修改没..


一路狂飙 直接到达目的地

004011F7/$55            push ebp
004011F8|.8BEC          mov ebp,esp
004011FA|.6A 00         push 0x0                                 ; /RootPathName = NULL
004011FC|.E8 99000000   call crackme_.0040129A                   ; \GetDriveTypeA
00401201|.83F8 03       cmp eax,0x3    ///这里就是刚刚我们写进去的数接着直接用 od 就能保存 不需要脱壳的
00401204|.74 17         je Xcrackme_.0040121D
00401206|.6A 30         push 0x30                              ; /Style = MB_OK|MB_ICONEXCLAMATION|MB_APPLMODAL
00401208|.68 14304000   push crackme_.00403014                   ; |Title = "FaNt0m's CrackMe #3 -- CD Check"
0040120D|.68 40304000   push crackme_.00403040                   ; |Text = "Error finding CDROM"
00401212|.6A 00         push 0x0                                 ; |hOwner = NULL
00401214|.E8 51000000   call crackme_.0040126A                   ; \MessageBoxA
00401219|.C9            leave



以上方法仅供参考,我觉得理解了 用到的地方还是比较多的哈0................................
在直接用od 就能保存了.................以上属于作者本人个人爱好,一个很傻的分析,还请各位大侠不要笑话小弟.......毕竟我一直在努力嘛...{:17_1058:}

JOOG 睡觉了............

















yutao531315 发表于 2014-3-17 01:01

混了 2年了 一直在忙还是 初露锋芒 我勒个去......一点经验没涨 到底是怎么回事

hzg303 发表于 2014-3-17 01:08

yutao531315 发表于 2014-3-17 01:01
混了 2年了 一直在忙还是 初露锋芒 我勒个去......一点经验没涨 到底是怎么回事

那个是要积分的,要么别人给你热心和CB你的积分也能涨,要么你多回贴或发主题贴级别就涨上去了。再说级别涨不涨没什么用

yutao531315 发表于 2014-3-17 01:31

哈哈 级别自己看着自己学习到哪一步了.

wuwoouren 发表于 2014-3-17 08:31

顶一下......

dwcxb 发表于 2014-3-17 11:10

支持一下楼主吧,一看就知道不是什么菜鸟,汇编都会

892644330 发表于 2014-3-17 11:28

yutao531315 发表于 2014-3-17 11:40

嗯 只是一个交流学习的目的.............楼主有好东西可以拿出来分享撒..

老白一枚 发表于 2015-9-17 10:35

哎,看来我还没达到菜鸟的级别啊{:1_908:}
页: [1]
查看完整版本: 菜鸟分享一个,怎么不脱壳 写补丁文件