首页
社区
课程
招聘
Apsprotect 2.1X我快疯了![求助]
发表于: 2006-2-27 18:20 4645

Apsprotect 2.1X我快疯了![求助]

2006-2-27 18:20
4645
========================================================================
0054B000--BE 01000000     MOV ESI,1       ;ESI=1取出API,ESI=2重定位API                 
0054B005--B8 00005C00     MOV EAX,MultiTra.005C0000     ;IAT 檫始位址
0054B00A--A3 F4AF5400     MOV DWORD PTR DS:[54AFF4],EAX
0054B00F--BA 00104000     MOV EDX,MultiTra              ;CODE 檫始位址   
0054B014--803A E8         CMP BYTE PTR DS:[EDX],0E8     ;是否 CALL ??
0054B017--75 19           JNZ SHORT MultiTra.0054B032
0054B019--8B5A 01         MOV EBX,DWORD PTR DS:[EDX+1]
0054B01C--03DA            ADD EBX,EDX
0054B01E--83C3 05         ADD EBX,5                     ;?算正催的 CALL ADDR
0054B021--81FB 0000EA00   CMP EBX,0EA0000               ;是否 ASPR 解瘁位址?? //这个0EA0000是怎么找出来的要详细说明 我待脱壳的软件有两个0110000和F90000不知道用哪个,同时这个好像还是变的,不同时间分析也会变!
0054B027--75 2C           JNZ SHORT MultiTra.0054B055
0054B029--60              PUSHAD                        ;保存寄存器
0054B02A--8925 F0AF5400   MOV DWORD PTR DS:[54AFF0],ESP ;保存 ESP 值
0054B030--FFE2            JMP EDX                       ;咄入ASPR 解瘁  
0054B032--66:813A FF25    CMP WORD PTR DS:[EDX],25FF    ;是否 JMP [XX]?
0054B037--75 1C           JNZ SHORT MultiTra.0054B055   
0054B039--8B5A 02         MOV EBX,DWORD PTR DS:[EDX+2]
0054B03C--81FB 08D25400   CMP EBX,MultiTra.0054D208     ;是否在原?IAT位址惯? //这个地方我是最不能理解的了,我怀疑可能0054D208为ita表结束位置,但我想知道怎么样确定这个结束位置的 需要详细说明!本人笨啊!
0054B042--72 11           JB  SHORT MultiTra.0054B055   ;小於 54D208?
0054B044--81FB 08E25400   CMP EBX,MultiTra.0054E208     
0054B04A--77 09           JA  SHORT MultiTra.0054B055   ;大於 54E208?
0054B04C--8B1B            MOV EBX,DWORD PTR DS:[EBX]
0054B04E--83FE 01         CMP ESI,1                     ;ESI=1??
0054B051--74 26           JE  SHORT MultiTra.0054B079
0054B053--EB 4B           JMP SHORT MultiTra.0054B0A0
0054B055--42              INC EDX                       ;??器 +1
0054B056--81FA 00505400   CMP EDX,MultiTra.00545000
0054B05C--72 B6           JB  SHORT MultiTra.0054B014   ;CODE 段劫束?
0054B05E--EB FE           JMP SHORT MultiTra.0054B05E   ;Patch 劫束 中??
0054B060--90              NOP                           ;<=取得 API 返回?
0054B061--8BDA            MOV EBX,EDX
0054B063--891D F8AF5400   MOV DWORD PTR DS:[54AFF8],EBX ;保存 API
0054B069--8B25 F0AF5400   MOV ESP,DWORD PTR DS:[54AFF0] ;取回 ESP
0054B06F--61              POPAD                         ;?原寄存器
0054B070--8B1D F8AF5400   MOV EBX,DWORD PTR DS:[54AFF8] ;取出 API
0054B076--EB D6           JMP SHORT MultiTra.0054B04E
0054B078--90              NOP
0054B079--8B0D F4AF5400   MOV ECX,DWORD PTR DS:[54AFF4]
0054B07F--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B084--3918            CMP DWORD PTR DS:[EAX],EBX
0054B086--74 CD           JE  SHORT MultiTra.0054B055  ;是否重妖??
0054B088--05 04000000     ADD EAX,4
0054B08D--3BC1            CMP EAX,ECX
0054B08F--72 F3           JB  SHORT MultiTra.0054B084
0054B091--8919            MOV DWORD PTR DS:[ECX],EBX   ;保存 API
0054B093--8305 F4AF5400 04ADD DWORD PTR DS:[54AFF4],4  ;指到下? API ADDR
0054B09A--EB B9           JMP SHORT MultiTra.0054B055
0054B09C--90              NOP
0054B09D--90              NOP
0054B09E--90              NOP
0054B09F--90              NOP
0054B0A0--B8 00005C00     MOV EAX,MultiTra.005C0000    ;IAT 檫始位址
0054B0A5--3918            CMP DWORD PTR DS:[EAX],EBX
0054B0A7--74 0E           JE  SHORT MultiTra.0054B0B7  ;是否找到??
0054B0A9--05 04000000     ADD EAX,4
0054B0AE--3D 6C085C00     CMP EAX,MultiTra.005C086C    ;IAT 劫束位址?
0054B0B3--72 F0           JB  SHORT MultiTra.0054B0A5  
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5//这个地方很奇怪如果执行到这个地方感觉就在这个地方循环那下面的汇编又有什么用呢 根本无法执行了 还是作者笔误!?   
0054B0B7--66:C702 FF25    MOV WORD PTR DS:[EDX],25FF   ;修正? JMP
0054B0BC--2D 00005C00     SUB EAX,MultiTra.005C0000
0054B0C1--05 00105C00     ADD EAX,5C1000               ;修正 OFFSET
0054B0C6--8942 02         MOV DWORD PTR DS:[EDX+2],EAX ;重定位 ADDR   
0054B0C9--EB 8A           JMP SHORT MultiTra.0054B055
0054B0CB--90              NOP
0054B0CC--90              NOP
0054B0CD--90              NOP
0054B0CE--90              NOP
0054B0CF--90              NOP                          ;排序 API
0054B0D0--B9 2C085C00     MOV ECX,MultiTra.005C082C    ;IAT 劫束位址 //同样是需要明白如何确定ITA及其大小的!
0054B0D5--BE 00005C00     MOV ESI,MultiTra.005C0000    ;IAT 檫始位址
0054B0DA--8BFE            MOV EDI,ESI
0054B0DC--8B06            MOV EAX,DWORD PTR DS:[ESI]
0054B0DE--8B1F            MOV EBX,DWORD PTR DS:[EDI]
0054B0E0--3BC3            CMP EAX,EBX
0054B0E2--76 05           JBE SHORT MultiTra.0054B0E9   
0054B0E4--93              XCHG EAX,EBX                  ;如果大於?互?  
0054B0E5--8906            MOV DWORD PTR DS:[ESI],EAX
0054B0E7--891F            MOV DWORD PTR DS:[EDI],EBX
0054B0E9--83C7 04         ADD EDI,4
0054B0EC--3BF9            CMP EDI,ECX
0054B0EE--76 EC           JBE SHORT MultiTra.0054B0DC   ;LOOP X1  
0054B0F0--83C6 04         ADD ESI,4
0054B0F3--3BF1            CMP ESI,ECX
0054B0F5--76 E3           JBE SHORT MultiTra.0054B0DA   ;LOOP X2
0054B0F7--EB FE           JMP SHORT MultiTra.0054B0F7   ;排序劫束
======================================================================我是是参照这篇patch 也算找到了ope 但这位大虾的patch可算解释的简单之不能再简单使我这样的菜鸟痛苦万分,现在我已经在其patch上做出我对以上的一些疑问,忘大虾们能个给予明白透彻的解释,谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 513
活跃值: (2258)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
2
建议从简单的壳开始,不要为了破解而脱壳:-)
2006-2-27 18:51
0
雪    币: 235
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
从简单的,慢慢来
2006-2-27 20:52
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
晕简单的壳大多都能轻易拿下!主要从来没有在看雪看到系统的破文!所以对一些基础知识,没办法找到解释,或者系统的学习,只能边摸素边往前走!还是请各位大虾不啬赐教!
2006-2-27 21:02
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
1)
0054B021--81FB 0000EA00   CMP EBX,0EA0000               ;是否 ASPR 解瘁位址?? //这个0EA0000是怎么找出来的要详细说明 我待脱壳的软件有两个0110000和F90000不知道用哪个,同时这个好像还是变的,不同时间分析也会变!

简单的方法,在这行设断点,看EBX的值,多看几次,这值差不多相同,
然后把这值替换文中的“0EA0000”就可以了。

2)0054B03C--81FB 08D25400   CMP EBX,MultiTra.0054D208     ;是否在原?IAT位址惯? //这个地方我是最不能理解的了,我怀疑可能0054D208为ita表结束位置,但我想知道怎么样确定这个结束位置的 需要详细说明!本人笨啊!

简单的方法,在这行设断点,在数据区查看EBX处的值,上下翻看,就发现是
这附近是个ita表,把表头地址替换0054D208,表末地址替换下行的0054E208

3)
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5//这个地方很奇怪如果执行到这个地方感觉就在这个地方循环那下面的汇编又有什么用呢 根本无法执行了 还是作者笔误!?   

不是笔误,可以在这句设断点,这段功能是搜索,可能会出现搜索不到的情况,
那就需要在这里手工修正。

4)
0054B0D0--B9 2C085C00     MOV ECX,MultiTra.005C082C    ;IAT 劫束位址 //同样是需要明白如何确定ITA及其大小的!

这个005C082C要改的,看上面在005C0000搜索程序代码段生成的iat表,
这个005C082C是iat结尾了,不同程序这个值不同。

我是几个月前学习这个帖子的,现在只能记得大概了。

还有就是,对于有些使用Apsprotect 2.1X的程序,像使用SDK + 注册模块的,
上面这段代码生成的iat并不全,除程序原代码段外,在Apsprotect 壳中也有一些iat 数据需要整理。
2006-2-28 01:37
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢楼上,授业解惑!太感谢了!
3)
0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5//这个地方很奇怪如果执行到这个地方感觉就在这个地方循环那下面的汇编又有什么用呢 根本无法执行了 还是作者笔误!?   

不是笔误,可以在这句设断点,这段功能是搜索,可能会出现搜索不到的情况,
那就需要在这里手工修正。//搜索什么?如何修正?
2006-3-1 12:54
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看 原贴中的跟帖啊
http://bbs.pediy.com/showthread.php?s=&threadid=19307

---------------------------------------------------------
(9) 第二次,设 ESI=2 ,F2->中断设在 0054B05E,按 F9,使 CODE 重新定位 IAT ADDRESS

会停在这句上,因为GetProcAddress已经修正,在重新定位时候已经找不到了,
要手工改。

0054B0B5--EB FE           JMP SHORT MultiTra.0054B0B5

---------------------------------------------------------
2006-3-2 15:40
0
游客
登录 | 注册 方可回帖
返回
//