菜鸟分享一个,怎么不脱壳 写补丁文件
作者声明..只是爱好,没有其他目的 失误之处,还请各位赐教 一时兴起吧,看到一个程序的 是加的 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 睡觉了............
混了 2年了 一直在忙还是 初露锋芒 我勒个去......一点经验没涨 到底是怎么回事 yutao531315 发表于 2014-3-17 01:01
混了 2年了 一直在忙还是 初露锋芒 我勒个去......一点经验没涨 到底是怎么回事
那个是要积分的,要么别人给你热心和CB你的积分也能涨,要么你多回贴或发主题贴级别就涨上去了。再说级别涨不涨没什么用 哈哈 级别自己看着自己学习到哪一步了. 顶一下...... 支持一下楼主吧,一看就知道不是什么菜鸟,汇编都会 嗯 只是一个交流学习的目的.............楼主有好东西可以拿出来分享撒.. 哎,看来我还没达到菜鸟的级别啊{:1_908:}
页:
[1]