ccaption uses an elementary (and mostly feasible) way of producing duplicate captions for the same float. The main function at play here is \contcaption:
\newcommand{\contcaption}{%
\addtocounter{\@captype}{\m@ne}%
\refstepcounter{\@captype}%
\@contcaption\@captype}
It steps the regular float counter back by one, sets a reference and then continues a call to set the actual caption text. On the .aux-file side, this leads to two cross-reference entries with the same hyperlink anchor name... something that hyperref doesn't enjoy. True, without hyperref, this problem won't be noticeable.
A way around this is to use an alias counter, provided by the aliascnt package, and using it as part of \contcaption:

\documentclass[UTF8]{ctexart}
\usepackage{aliascnt,ccaption}% http://ctan.org/pkg/{aliascnt,ccaption}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\newaliascnt{figurealt}{figure}% New alias counter for figure float
\aliascntresetthe{figurealt}
\makeatletter
\renewcommand{\contcaption}{%
\expandafter\addtocounter\expandafter{\@captype alt}{\m@ne}% Step alias cntr back
\expandafter\refstepcounter\expandafter{\@captype alt}% Make reference
\@contcaption\@captype}
\makeatother
\begin{document}
Figures~\ref{fig1} and~\ref{fig2}.
\begin{figure}
\bicaption[fig1]{}{abc}{Fig.}{English caption}
\end{figure}
\begin{figure}
\bicaption[fig2]{}{xyz}{Fig.}{English caption}
\end{figure}
\end{document}
The above MWE provides the alias figurealt which should work in tandem with figure, using it as the replacement reference for the second (continued) caption rather than the traditional float counter.
A similar alias can be created for other floats (like table, using tablealt).
bicaptionpackage works fine withhyperref, out-of-the-box. – Jul 19 '13 at 05:07