运行脱壳并粘贴附加数据后程序,弹出警告框
脱壳前原文件尾
脱壳后文件尾修改为[从00281000处开始粘贴]
为了寻找原因所在,根据fly版主VB函数脱壳教程,在98下不能下断BP SetFilePointer,
那我就一步步跟到那个地方。
用OD载入脱壳后文件,弹出对话框,点确定
入口点
多次F8后到达这里
0061C92B |. BA 68CA6100 mov edx,UNPACKED.0061CA68 ; ASCII "FSJM IPD W32"
0061C930 |. E8 2385DEFF call UNPACKED.00404E58
0061C935 |. 0F85 E4000000 jnz UNPACKED.0061CA1F
0061C93B |. 8B03 mov eax,dword ptr ds:[ebx]
0061C93D |. 8B10 mov edx,dword ptr ds:[eax]
0061C93F |. FF12 call dword ptr ds:[edx]
0061C941 |. 52 push edx
0061C942 |. 50 push eax
0061C943 |. 8B06 mov eax,dword ptr ds:[esi] ; //Stack ds:[008BFDD4]=0000000C eax=0028BF15
0061C945 |. 99 cdq
0061C946 |. 290424 sub dword ptr ss:[esp],eax ; //长度-C=0028BF09 "FSJM IPD W32""字符串位置
0061C949 |. 195424 04 sbb dword ptr ss:[esp+4],edx
0061C94D |. 58 pop eax
0061C94E |. 5A pop edx
0061C94F |. 83E8 08 sub eax,8 ; //eax=0028BF09
0061C952 |. 83DA 00 sbb edx,0
0061C955 |. 52 push edx ; /Arg2
0061C956 |. 50 push eax ; |Arg1=0028BF01
0061C957 |. 8B03 mov eax,dword ptr ds:[ebx]
//ds:[00627D28]=00EF4DC4
//eax=0028BF01 根据fly的VB函数脱壳教程,这里28BF01
//应该要修正为00281000地址吧? ; |
0061C959 |. E8 664FE0FF call UNPACKED.004218C4 ; \004218C4=UNPACKED.004218C4
0061C95E |. 8D55 F0 lea edx,dword ptr ss:[ebp-10]
0061C961 |. 8B03 mov eax,dword ptr ds:[ebx]
0061C963 |. B9 04000000 mov ecx,4
0061C968 |. E8 6351E0FF call UNPACKED.00421AD0
0061C96D |. 8B45 F0 mov eax,dword ptr ss:[ebp-10] ; //Stack ss:[008BFDD0]=0028BEC3 这里好象已经自动修正了
0061C970 |. 99 cdq
0061C971 |. 52 push edx ; /Arg2
0061C972 |. 50 push eax ; |Arg1
0061C973 |. 8B03 mov eax,dword ptr ds:[ebx] ; |
请问上述地址为什么是28BF01,而不是281000?是否需要修改?又如何对这个值进行修改呢?
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)