首页
社区
课程
招聘
不知道是什么的自校验???
发表于: 2007-2-11 02:27 3815

不知道是什么的自校验???

2007-2-11 02:27
3815
有个没壳的软件.一修改过.打开就自动消失了.应该是自校验的问题.我还在论坛里看了个自校验的实例.但发现的是.没有一个例子跟这个是对应的.晕死..
那位大哥帮我看看!如果搞好的话.可以把过程写出来吗?

http://www.zsying.com/KOBE/HxVodClient.rar

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
道理是一样的,但是并不是每个人都会变通
2007-2-11 08:27
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
3
谁告诉你没壳
2007-2-11 11:44
0
雪    币: 101
活跃值: (12)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
是个猛壳
你给的exe没有附加的dll如qtintf.dll等, 不好调
他用了createfile, writefile, readfile, getfilesize等操作
你可以下短点看下就行.

但记得, 打个rdtsc的插件. 要不然你死的很难看
还有, 断api短点的时候, 一定不能在第一条语句下断.

下列是检测自己的地方
0058506F             68 20030000      PUSH 320
00585074             8DBD F91B4000    LEA EDI,DWORD PTR SS:[EBP+401BF9]
0058507A             57               PUSH EDI
0058507B             6A 00            PUSH 0
0058507D             FF95 A8014100    CALL DWORD PTR SS:[EBP+4101A8]
00585083             6A 00            PUSH 0
00585085             68 80000000      PUSH 80
0058508A             6A 03            PUSH 3
0058508C             6A 00            PUSH 0
0058508E             6A 01            PUSH 1
00585090             68 00000080      PUSH 80000000
00585095             57               PUSH EDI
00585096             FF95 04014100    CALL DWORD PTR SS:[EBP+410104]
0058509C             40               INC EAX
0058509D             0F84 9B000000    JE HxVodCli.0058513E
005850A3             48               DEC EAX
005850A4             8BF8             MOV EDI,EAX
005850A6             6A 00            PUSH 0
005850A8             57               PUSH EDI
005850A9             FF95 BF014100    CALL DWORD PTR SS:[EBP+4101BF]
005850AF             2B85 B7D84100    SUB EAX,DWORD PTR SS:[EBP+41D8B7]
005850B5             96               XCHG EAX,ESI
005850B6             56               PUSH ESI
005850B7             6A 40            PUSH 40
005850B9             FF95 D8004100    CALL DWORD PTR SS:[EBP+4100D8]
005850BF             85C0             TEST EAX,EAX
005850C1             74 72            JE SHORT HxVodCli.00585135
005850C3             90               NOP
005850C4             90               NOP
005850C5             90               NOP
005850C6             90               NOP
005850C7             93               XCHG EAX,EBX
005850C8             6A 00            PUSH 0
005850CA             8D85 F91B4000    LEA EAX,DWORD PTR SS:[EBP+401BF9]
005850D0             50               PUSH EAX
005850D1             56               PUSH ESI
005850D2             53               PUSH EBX
005850D3             57               PUSH EDI
005850D4             FF95 28014100    CALL DWORD PTR SS:[EBP+410128]
005850DA             8BC3             MOV EAX,EBX
005850DC             8BCE             MOV ECX,ESI
005850DE             60               PUSHAD
005850DF             E8 35000000      CALL HxVodCli.00585119
005850E4             3985 BBD84100    CMP DWORD PTR SS:[EBP+41D8BB],EAX
005850EA             74 24            JE SHORT HxVodCli.00585110
005850EC             90               NOP
005850ED             90               NOP
005850EE             90               NOP
005850EF             90               NOP
005850F0             83BD 02244000 00 CMP DWORD PTR SS:[EBP+402402],0
005850F7             75 17            JNZ SHORT HxVodCli.00585110
005850F9             90               NOP
005850FA             90               NOP
005850FB             90               NOP
005850FC             90               NOP
005850FD             8BBD 97D84100    MOV EDI,DWORD PTR SS:[EBP+41D897]
00585103             03BD 1FFC4000    ADD EDI,DWORD PTR SS:[EBP+40FC1F]
00585109             B9 0A000000      MOV ECX,0A
0058510E             F3:AB            REP STOS DWORD PTR ES:[EDI]
00585110             61               POPAD
00585111             8D85 2D314100    LEA EAX,DWORD PTR SS:[EBP+41312D]
00585117             50               PUSH EAX
00585118             C3               RETN
00585119             8BF8             MOV EDI,EAX

其中5850df是call一个计算文件hash的值, 用返回的eax
跟保存的值比较.

首先把自己全读到内存中, CreateFileA, GloablAlloc, GetFileSize, ReadFile,  然后把正个文件大小都hash一次
int hash(char *buf, int size)
{
   int ret  = 0;
   while(size-- > 0)
   {
     ret += *(buf++);
   }
   return ret;
}

当然后面还有个比较.
005850F0             83BD 02244000 00 CMP DWORD PTR SS:[EBP+402402],0
005850F7             75 17            JNZ SHORT HxVodCli.00585110

如果hash值不匹配, 那么就看看加壳的时候, 是否选择了
需要判断hash值.

不过这快代码是经过smc过的, 所以. 如果你要改动, 只能是
手动改文件, 当然, 不知道你为什么要改动, 因为还没脱壳.

接着, 在你的临时目录下有一个cid.dll, 是壳释放出来的
里面有一个GetMachineID的导出函数,  用来做机器码的
当然, 这个样本的参数没有用到机器码

还有一个, perplex.dll 的 zcf_decrypt, 用来解密, 不过没用上
我的文档中有一个key.dat .. 可是你给的样本也没有
这个key.dat, 我这里是出错了. 说联系qq 8742973...

顺便说一句, 这个壳没有检测硬件段点, 因此很容易中断.
好运.
2007-2-11 13:06
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵.谢谢.不过我不太懂的.还要谢谢高手的指教!
2007-2-11 19:44
0
游客
登录 | 注册 方可回帖
返回
//