能力值:
( LV1,RANK:0 )
|
-
-
51 楼
luoye_ATL
用vmtest师傅提到的工具就可以,根据说明配置好之后,编译的时候类似amd64-linux.elf-fold.h的.h文件都会重新生成的。
怎么配置的呢?能详细说一下吗?
|
能力值:
( LV1,RANK:0 )
|
-
-
52 楼
DessertTH
解决了,对于大佬们来说,这确实不是个问题,我简单写一下如何解决的,给新手小白一个参考避坑。
按照楼主说的,先对4处进行修改。然后,需要先对stub进行编译,也就是在对amd64-linux.elf- ...
能压缩别的程序吗?
|
能力值:
( LV1,RANK:0 )
|
-
-
53 楼
amd64-linx.elf-fold.S的编译和bin2h无关。应该说这是独立的两步。第一步先是把S文件编译,得到bin文件,这个是可执行的代码,要捆绑到加壳后的程序中,在执行时被调用,解压数据。那要怎么把它捆绑进去呢?答案是第二部,用bin2h,将这个编译得到的bin文件转换成16进制码,存到一个大数组里,然后把这个数组的定义放到h文件中,编译upx的时候直接调用这个数组就等同于调用解压代码(shellcode就是这么存的)。那几个变量就是用来标记和检查这个数组数据的。如果你想编译S文件,得用前面评论里提到的那个stub工具,编译完工具就会自动调bin2h生成新的h文件。
|
能力值:
( LV1,RANK:0 )
|
-
-
54 楼
Vantler
楼主好!我在根据您的文章进行代码修改和复现过程中,发现一个问题,分享出来供参考。问题出现在修改入口点代码的loader部分。文章中loader异或key的位置在汇编码中,根据注释是将upx_main函 ...
分析的太有用啦,踩到了一模一样的坑,感谢分享
|
能力值:
( LV1,RANK:0 )
|
-
-
55 楼
找到amd64-linux.elf-so_main.c 文件中的 unpackExtent 函数,在函数中找到 int const j = (*f_exp)((unsigned char *)xi->buf, h.sz_cpr, (unsigned char *)xo->buf, &out_len);在后面增加如下代码,对so进行加壳即可用,其他的按照博主的可以,本人已经在4.3版本上复现 unsigned char *tmp=(unsigned char*)xo->buf; size_t i = 0; for(i = 0; i < h.sz_unc; i++) { *tmp=(*tmp)^0xe9; tmp = tmp + 1; }
|
|
|